lkml.org 
[lkml]   [2021]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 17/35] asm-generic/tlb, arch: Invert CONFIG_HAVE_RCU_TABLE_INVALIDATE
    Date
    From: Peter Zijlstra <peterz@infradead.org>

    commit 96bc9567cbe112e9320250f01b9c060c882e8619 upstream.

    Make issuing a TLB invalidate for page-table pages the normal case.

    The reason is twofold:

    - too many invalidates is safer than too few,
    - most architectures use the linux page-tables natively
    and would thus require this.

    Make it an opt-out, instead of an opt-in.

    No change in behavior intended.

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.kernel.org> # 4.19
    Signed-off-by: Santosh Sivaraj <santosh@fossix.org>
    [santosh: prerequisite for upcoming tlbflush backports]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/Kconfig | 2 +-
    arch/powerpc/Kconfig | 1 +
    arch/sparc/Kconfig | 1 +
    arch/x86/Kconfig | 1 -
    mm/memory.c | 2 +-
    5 files changed, 4 insertions(+), 3 deletions(-)

    --- a/arch/Kconfig
    +++ b/arch/Kconfig
    @@ -363,7 +363,7 @@ config HAVE_ARCH_JUMP_LABEL
    config HAVE_RCU_TABLE_FREE
    bool

    -config HAVE_RCU_TABLE_INVALIDATE
    +config HAVE_RCU_TABLE_NO_INVALIDATE
    bool

    config ARCH_WANT_IRQS_OFF_ACTIVATE_MM
    --- a/arch/powerpc/Kconfig
    +++ b/arch/powerpc/Kconfig
    @@ -217,6 +217,7 @@ config PPC
    select HAVE_PERF_REGS
    select HAVE_PERF_USER_STACK_DUMP
    select HAVE_RCU_TABLE_FREE if SMP
    + select HAVE_RCU_TABLE_NO_INVALIDATE if HAVE_RCU_TABLE_FREE
    select HAVE_REGS_AND_STACK_ACCESS_API
    select HAVE_RELIABLE_STACKTRACE if PPC64 && CPU_LITTLE_ENDIAN
    select HAVE_SYSCALL_TRACEPOINTS
    --- a/arch/sparc/Kconfig
    +++ b/arch/sparc/Kconfig
    @@ -64,6 +64,7 @@ config SPARC64
    select HAVE_KRETPROBES
    select HAVE_KPROBES
    select HAVE_RCU_TABLE_FREE if SMP
    + select HAVE_RCU_TABLE_NO_INVALIDATE if HAVE_RCU_TABLE_FREE
    select HAVE_MEMBLOCK_NODE_MAP
    select HAVE_ARCH_TRANSPARENT_HUGEPAGE
    select HAVE_DYNAMIC_FTRACE
    --- a/arch/x86/Kconfig
    +++ b/arch/x86/Kconfig
    @@ -181,7 +181,6 @@ config X86
    select HAVE_PERF_REGS
    select HAVE_PERF_USER_STACK_DUMP
    select HAVE_RCU_TABLE_FREE if PARAVIRT
    - select HAVE_RCU_TABLE_INVALIDATE if HAVE_RCU_TABLE_FREE
    select HAVE_REGS_AND_STACK_ACCESS_API
    select HAVE_RELIABLE_STACKTRACE if X86_64 && (UNWINDER_FRAME_POINTER || UNWINDER_ORC) && STACK_VALIDATION
    select HAVE_STACKPROTECTOR if CC_HAS_SANE_STACKPROTECTOR
    --- a/mm/memory.c
    +++ b/mm/memory.c
    @@ -339,7 +339,7 @@ bool __tlb_remove_page_size(struct mmu_g
    */
    static inline void tlb_table_invalidate(struct mmu_gather *tlb)
    {
    -#ifdef CONFIG_HAVE_RCU_TABLE_INVALIDATE
    +#ifndef CONFIG_HAVE_RCU_TABLE_NO_INVALIDATE
    /*
    * Invalidate page-table caches used by hardware walkers. Then we still
    * need to RCU-sched wait while freeing the pages because software

    \
     
     \ /
      Last update: 2021-01-04 17:15    [W:4.106 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site