linux/arch/powerpc/mm
Nicholas Piggin 54bb503345 powerpc/64s/radix: Check for no TLB flush required
If there are no CPUs in mm_cpumask, no TLB flush is required at all.
This patch adds a check for this case.

Currently it's not tested for, in fact mm_is_thread_local() returns
false if the current CPU is not in mm_cpumask, so it's treated as a
global flush.

This can come up in some cases like exec failure before the new mm has
ever been switched to. This patch reduces TLBIE instructions required
to build a kernel from about 120,000 to 45,000. Another situation it
could help is page reclaim, KSM, THP, etc., (i.e., asynch operations
external to the process) where the process is sleeping and has all TLBs
flushed out of all CPUs.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201217134731.488135-4-npiggin@gmail.com
2021-02-09 01:09:44 +11:00
..
book3s32 powerpc/32s: Only build hash code when CONFIG_PPC_BOOK3S_604 is selected 2021-01-31 22:35:50 +11:00
book3s64 powerpc/64s/radix: Check for no TLB flush required 2021-02-09 01:09:44 +11:00
kasan powerpc updates for 5.10 2020-10-16 12:21:15 -07:00
nohash powerpc/8xx: Always pin kernel text TLB 2020-12-09 23:47:45 +11:00
ptdump powerpc: Remove support for PowerPC 601 2020-10-08 21:17:13 +11:00
copro_fault.c mm: clean up the last pieces of page fault accountings 2020-08-12 10:58:04 -07:00
dma-noncoherent.c dma-mapping: merge <linux/dma-noncoherent.h> into <linux/dma-map-ops.h> 2020-10-06 07:07:06 +02:00
drmem.c pseries/drmem: don't cache node id in drmem_lmb struct 2020-09-02 11:00:21 +10:00
fault.c powerpc/64: context tracking move to interrupt wrappers 2021-02-09 00:10:46 +11:00
hugetlbpage.c powerpc/mm/hugetlb: Make pseries_alloc_bootmem_huge_page() static 2021-01-30 11:39:30 +11:00
init_32.c Merge branch 'akpm' (patches from Andrew) 2020-08-07 11:39:33 -07:00
init_64.c Merge branch 'fixes' into next 2020-09-14 22:57:18 +10:00
init-common.c powerpc: Inline setup_kup() 2020-12-15 13:13:49 +11:00
ioremap_32.c powerpc/ioremap: warn on early use of ioremap() 2019-11-19 19:38:38 +11:00
ioremap_64.c powerpc: remove __ioremap_at and __iounmap_at 2020-06-02 10:59:10 -07:00
ioremap.c mm/memremap_pages: Introduce memremap_compat_align() 2020-02-20 16:58:55 -08:00
maccess.c powerpc/mm: Fix KUAP warning by providing copy_from_kernel_nofault_allowed() 2020-12-08 10:22:09 +11:00
Makefile The new preemtible kmap_local() implementation: 2020-12-14 18:35:53 -08:00
mem.c powerpc updates for 5.11 2020-12-17 13:34:25 -08:00
mmap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
mmu_context.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mmu_decl.h powerpc/32s: Move _tlbie() and _tlbia() prototypes to tlbflush.h 2020-12-09 16:46:55 +11:00
numa.c powerpc/numa: Fix a regression on memoryless node 0 2020-11-27 22:06:21 +11:00
pgtable_32.c powerpc/32s: Don't hash_preload() kernel text 2020-12-04 01:01:31 +11:00
pgtable_64.c mm: remove unneeded includes of <asm/pgalloc.h> 2020-08-07 11:33:26 -07:00
pgtable-frag.c powerpc/mm/radix: Fix PTE/PMD fragment count for early page table mappings 2020-07-20 22:57:56 +10:00
pgtable.c powerpc/mm: Include __find_linux_pte() prototype 2021-01-30 11:39:26 +11:00
slice.c powerpc: Replace _ALIGN_UP() by ALIGN() 2020-05-11 23:15:15 +10:00