From: Peter Zijlstra <peterz@infradead.org>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>,
Will Deacon <will@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Nick Piggin <npiggin@gmail.com>,
linux-arch@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Rich Felker <dalias@libc.org>,
"David S. Miller" <davem@davemloft.net>,
Helge Deller <deller@gmx.de>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Paul Burton <paulburton@kernel.org>,
Tony Luck <tony.luck@intel.com>,
Richard Henderson <rth@twiddle.net>,
Nick Hu <nickhu@andestech.com>,
Paul Walmsley <paul.walmsley@sifive.com>
Subject: Re: [PATCH 05/17] asm-generic/tlb: Rename HAVE_RCU_TABLE_NO_INVALIDATE
Date: Mon, 16 Dec 2019 15:00:17 +0100 [thread overview]
Message-ID: <20191216140017.GF2827@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <a9ae27c8-aa84-cda3-355c-7abb3b450d38@linux.ibm.com>
On Mon, Dec 16, 2019 at 07:10:30PM +0530, Aneesh Kumar K.V wrote:
> On 12/16/19 6:50 PM, Peter Zijlstra wrote:
> > On Mon, Dec 16, 2019 at 06:43:53PM +0530, Aneesh Kumar K.V wrote:
> > > On 12/16/19 6:07 PM, Peter Zijlstra wrote:
> >
> > > > I'm confused, are you saing you're happy to have PowerPC eat the extra
> > > > TLB invalidates? I thought you cared about PPC performance :-)
> > > >
> > > >
> > >
> > > Instead can we do
> > >
> > > static inline void tlb_table_invalidate(struct mmu_gather *tlb)
> > > {
> > > #ifndef CONFIG_MMU_GATHER_RCU_TABLE_FREE
> > > * Invalidate page-table caches used by hardware walkers. Then we still
> > > * need to RCU-sched wait while freeing the pages because software
> > > * walkers can still be in-flight.
> > > */
> > > tlb_flush_mmu_tlbonly(tlb);
> > > #endif
> > > }
> >
> > How does that not break ARM/ARM64/s390 and x86 ?
> >
>
> Hmm I missed that usage of RCU_TABLE_NO_INVALIDATE.
What use? Only PPC and SPARC64 use that option. The reason they can use
it is because they don't have a hardware walker (with exception of
PPC-Radix, which I suppose your below patch fudges ?!).
So HAVE_RCU_TABLE_FREE will provide tlb_remove_table() for the use of
freeing page-tables/directories. This is required for all architectures
that have software walkers and !IPI TLBI.
Arm, Arm64, Power, Sparc64, s390 and x86 use this option. While x86
natively has IPI based TLBI, a bunch of the virtualization solutions got
rid of the IPI for performance.
Of those, Arm, Arm64, s390, x86 (and PPC-Radix) also have hardware
walkers on those page-tables, and thus _must_ TLBI in between unhooking
and freeing these pages.
PPC-Hash and Sparc64 OTOH only ever access the linux page-tables through
the software walker and thus can forgo this TLBI, and _THAT_ is what
TABLE_NO_INVALIDATE is about (there actually is a comment that clearly
states this).
> Ok I guess we need to revert this change that went upstream this merge
> window then
>
> commit 52162ec784fa05f3a4b1d8e84421279998be3773
> Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
> Date: Thu Oct 24 13:28:00 2019 +0530
>
> powerpc/mm/book3s64/radix: Use freed_tables instead of need_flush_all
>
This really looks like you've got PPC-Radix wrong. As soon as you got
hardware walkers on the linux page-tables, you must not use
TABLE_NO_INVALIDATE.
next prev parent reply other threads:[~2019-12-16 14:00 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-11 12:07 [PATCH 00/17] Fixup page directory freeing Peter Zijlstra
2019-12-11 12:07 ` [PATCH 01/17] sh/tlb: Fix PGTABLE_LEVELS > 2 Peter Zijlstra
2019-12-11 12:07 ` [PATCH 02/17] asm-gemeric/tlb: Remove stray function declarations Peter Zijlstra
2019-12-11 13:19 ` Geert Uytterhoeven
2019-12-11 12:07 ` [PATCH 03/17] asm-generic/tlb: Add missing CONFIG symbol Peter Zijlstra
2019-12-11 12:07 ` [PATCH 04/17] asm-generic/tlb: Rename HAVE_RCU_TABLE_FREE Peter Zijlstra
2019-12-11 12:07 ` [PATCH 05/17] asm-generic/tlb: Rename HAVE_RCU_TABLE_NO_INVALIDATE Peter Zijlstra
2019-12-16 12:31 ` Aneesh Kumar K.V
2019-12-16 12:31 ` Aneesh Kumar K.V
2019-12-16 12:37 ` Peter Zijlstra
2019-12-16 13:13 ` Aneesh Kumar K.V
2019-12-16 13:20 ` Peter Zijlstra
2019-12-16 13:40 ` Aneesh Kumar K.V
2019-12-16 13:54 ` Aneesh Kumar K.V
2019-12-16 14:50 ` Peter Zijlstra
2019-12-16 15:14 ` Peter Zijlstra
2019-12-16 15:14 ` Peter Zijlstra
2019-12-16 15:30 ` Peter Zijlstra
2019-12-16 17:00 ` Aneesh Kumar K.V
2019-12-17 8:51 ` Peter Zijlstra
2019-12-16 14:00 ` Peter Zijlstra [this message]
2019-12-11 12:07 ` [PATCH 06/17] asm-generic/tlb: Rename HAVE_MMU_GATHER_PAGE_SIZE Peter Zijlstra
2019-12-11 12:07 ` [PATCH 07/17] asm-generic/tlb: Rename HAVE_MMU_GATHER_NO_GATHER Peter Zijlstra
2019-12-11 12:07 ` [PATCH 08/17] asm-generic/tlb: Provide MMU_GATHER_TABLE_FREE Peter Zijlstra
2019-12-12 9:30 ` Peter Zijlstra
2019-12-12 9:32 ` [PATCH mk-II " Peter Zijlstra
2020-01-26 15:52 ` Guenter Roeck
2020-01-27 8:11 ` Peter Zijlstra
2020-01-27 8:13 ` Aneesh Kumar K.V
2020-01-27 13:05 ` Peter Zijlstra
2020-01-27 13:42 ` Aneesh Kumar K.V
2019-12-11 12:07 ` [PATCH 09/17] sh/tlb: Fix __pmd_free_tlb() Peter Zijlstra
2019-12-11 12:07 ` [PATCH 10/17] sparc32/tlb: Fix __p*_free_tlb() Peter Zijlstra
2019-12-11 12:07 ` [PATCH 11/17] parisc/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 12/17] m68k/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 13/17] mips/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 14/17] ia64/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 15/17] alpha/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 16/17] nds32/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 17/17] riscv/tlb: " Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191216140017.GF2827@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.ibm.com \
--cc=dalias@libc.org \
--cc=davem@davemloft.net \
--cc=deller@gmx.de \
--cc=geert@linux-m68k.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mpe@ellerman.id.au \
--cc=nickhu@andestech.com \
--cc=npiggin@gmail.com \
--cc=paul.walmsley@sifive.com \
--cc=paulburton@kernel.org \
--cc=rth@twiddle.net \
--cc=tony.luck@intel.com \
--cc=will@kernel.org \
--cc=ysato@users.sourceforge.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.