From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 770B61494A8 for ; Tue, 24 Dec 2024 18:26:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735064813; cv=none; b=SuuMz7Qsyj2BqTsD+3JZj5wWgu9V7/9GjLjsnZ59QOmhxZA3s8okEnWHlHgD0G/PE0Gn2gydrDZ/b2Rai2CdYlPQDHcQ6+CHl4I6fu1jFqUJKVvv/zrjvvVcoWPWU+FHueomISSWzZ+yMNENE2WXt0XmFR9FI7oh3W6Hk//IO0k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735064813; c=relaxed/simple; bh=58c1sz82uqdXCJkKI5UlBA+O4meIKiQu6KocKj5SBAA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=SHUPqjT8X0nO3t0sRB5MNh80Og0T8f8EGlB3E7Tqkb9gbh0OXGyh0ZydMHbu/HpNRQcZrLfGS5Cuy6JjHOj/DwnEBrCa6a33WLasHPgWxTT0bhPqcbkK3qyDQa6uUqvJ6OCOjJC5iOh20Nmlz27IJVnpsJawtJzT63/Uv9zXxxM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=Yp/K00KC; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="Yp/K00KC" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=a8YYcmB6SAwypdS4u36eYn9D+HlHmk0NWfEOYKQCFjE=; b=Yp/K00KCT6575dCRkLZEOCiE/F 9eUBGSU1OGS5P5Y7z3o/L6/02axcCTJ+PaO9HA6bGxD2DHaP5kDSFsk+H9WmsVkQQoqFkrx7BV5R2 qIaudo9j6kNnU/DWeZcp0WSlVszpeTZIOKTJKwlPJHg0zVFP1nX71mjls0YCOFGDF5Hk0yep4fzu+ 3AI5p0r7mDzSoNjenQ1jPTEfb8YWlYYTZMl+CYRFVOlGj/X+PuUpV0HSQSxs23aUOpJdua4LtSHBF JNSrkKNd0TvxgknSQI+vFc8QinQj+CgHb1TQawWwbkgi87RFWzv9wuThzQLmHCJbGrSZi2hHJZ3Jy du2Y3tjg==; Received: from 77-249-17-89.cable.dynamic.v4.ziggo.nl ([77.249.17.89] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux)) id 1tQ9cB-000000044bO-0pOW; Tue, 24 Dec 2024 18:26:43 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id 0A721300478; Tue, 24 Dec 2024 19:26:43 +0100 (CET) Date: Tue, 24 Dec 2024 19:26:42 +0100 From: Peter Zijlstra To: Rik van Riel Cc: x86@kernel.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, dave.hansen@linux.intel.com, luto@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, hpa@zytor.com, akpm@linux-foundation.org, linux-mm@kvack.org Subject: Re: [PATCH 01/11] x86/mm: make MMU_GATHER_RCU_TABLE_FREE unconditional Message-ID: <20241224182642.GC17252@noisy.programming.kicks-ass.net> References: <20241223025751.3268975-1-riel@surriel.com> <20241223025751.3268975-2-riel@surriel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241223025751.3268975-2-riel@surriel.com> On Sun, Dec 22, 2024 at 09:55:07PM -0500, Rik van Riel wrote: > Currently x86 usse CONFIG_MMU_GATHER_TABLE_FREE when using > paravirt, and not when running on bare metal. > > There is no real good reason to do things differently for > each setup. Make them all the same. More importantly, the changes you're proposing very much rely on this. Without TLBi IPIs nothing serializes GUP-fast vs TLBi and this RCU-ish table free scheme is required. > Signed-off-by: Rik van Riel > Suggested-by: Peter Zijlstra > --- > arch/x86/Kconfig | 2 +- > arch/x86/kernel/paravirt.c | 7 +------ > 2 files changed, 2 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index 9d7bd0ae48c4..e8743f8c9fd0 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -274,7 +274,7 @@ config X86 > select HAVE_PCI > select HAVE_PERF_REGS > select HAVE_PERF_USER_STACK_DUMP > - select MMU_GATHER_RCU_TABLE_FREE if PARAVIRT > + select MMU_GATHER_RCU_TABLE_FREE > select MMU_GATHER_MERGE_VMAS > select HAVE_POSIX_CPU_TIMERS_TASK_WORK > select HAVE_REGS_AND_STACK_ACCESS_API > diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c > index fec381533555..2b78a6b466ed 100644 > --- a/arch/x86/kernel/paravirt.c > +++ b/arch/x86/kernel/paravirt.c > @@ -59,11 +59,6 @@ void __init native_pv_lock_init(void) > static_branch_enable(&virt_spin_lock_key); > } > > -static void native_tlb_remove_table(struct mmu_gather *tlb, void *table) > -{ > - tlb_remove_page(tlb, table); > -} > - > struct static_key paravirt_steal_enabled; > struct static_key paravirt_steal_rq_enabled; > > @@ -191,7 +186,7 @@ struct paravirt_patch_template pv_ops = { > .mmu.flush_tlb_kernel = native_flush_tlb_global, > .mmu.flush_tlb_one_user = native_flush_tlb_one_user, > .mmu.flush_tlb_multi = native_flush_tlb_multi, > - .mmu.tlb_remove_table = native_tlb_remove_table, > + .mmu.tlb_remove_table = tlb_remove_table, > > .mmu.exit_mmap = paravirt_nop, > .mmu.notify_page_enc_status_changed = paravirt_nop, > -- > 2.47.1 >