linux/include
Kevin Brodsky 8240d8d3c5 mm: skip ptlock_init() for kernel PMDs
Split page table locks are not used for pgtables associated to init_mm, at
any level.  pte_alloc_kernel() does not call ptlock_init() as a result. 
There is however no separate alloc/free functions for kernel PMDs, and
pmd_ptlock_init() is called unconditionally.  When ALLOC_SPLIT_PTLOCKS is
true (e.g.  32-bit architectures or if CONFIG_PREEMPT_RT is selected),
this results in unnecessary dynamic memory allocation every time a kernel
PMD is allocated.

Now that pagetable_pmd_ctor() is passed the associated mm, we can easily
remove this overhead by skipping pmd_ptlock_init() if the pgtable is
associated to init_mm.  No special-casing is needed on the dtor path, as
ptlock_free() is already called unconditionally for all levels. 
(ptlock_free() is a no-op unless a ptlock was allocated for the given
PTP.)

Link: https://lkml.kernel.org/r/20250408095222.860601-8-kevin.brodsky@arm.com
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Andreas Larsson <andreas@gaisler.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Linus Waleij <linus.walleij@linaro.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: <x86@kernel.org>
Cc: Yang Shi <yang@os.amperecomputing.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
History 2025-05-11 17:48:22 -07:00
..
acpi gcc-15: acpi: sprinkle random '__nonstring' crumbles around 2025-04-20 11:57:54 -07:00
asm-generic mm: call ctor/dtor for kernel PTEs 2025-05-11 17:48:21 -07:00
clocksource KVM/arm64 updates for 6.14 2025-01-28 09:01:36 -08:00
crypto crypto: ahash - Disable request chaining 2025-04-12 09:33:09 +08:00
cxl cxl: Fix devm host device for CXL fwctl initialization 2025-04-18 09:33:04 -07:00
drm Short summary of fixes pull: 2025-05-09 08:52:24 +10:00
dt-bindings Char/Misc/IIO driver updates for 6.15-rc1 2025-04-01 11:26:08 -07:00
hyperv x86/hyperv: Add comments about hv_vpset and var size hypercall input args 2025-03-21 18:24:22 +00:00
keys keys: drop shadowing dead prototype 2025-01-21 11:25:23 +02:00
kunit kunit: Spelling s/slowm/slow/ 2025-04-08 14:57:24 -06:00
kvm Merge branch 'kvm-arm64/pmu-fixes' into kvmarm/next 2025-03-19 14:54:52 -07:00
linux mm: skip ptlock_init() for kernel PMDs 2025-05-11 17:48:22 -07:00
math-emu powerpc/math-emu: Remove -w build flag and fix warnings 2022-09-05 17:28:25 +10:00
media media: v4l2-core: Introduce v4l2_query_ext_ctrl_to_v4l2_queryctrl 2025-03-05 10:43:26 +01:00
memory memory: renesas-rpc-if: Remove Runtime PM wrappers 2023-01-23 11:48:00 +01:00
misc cxl: Remove driver 2025-03-16 22:04:27 +11:00
net net: export a helper for adding up queue stats 2025-05-08 11:56:12 +02:00
pcmcia ARM: pxa/sa1100: move I/O space to PCI_IOBASE 2022-05-07 22:56:17 +02:00
ras PCI/ERR: Handle TLP Log in Flit mode 2025-02-21 17:31:45 -06:00
rdma RDMA/mlx5: Fix compilation warning when USER_ACCESS isn't set 2025-04-07 15:14:34 -03:00
rv rv: Reset per-task monitors also for idle tasks 2025-01-23 12:16:04 -05:00
scsi scsi: usb: Rename the RESERVE and RELEASE constants 2025-02-12 22:20:55 -05:00
soc soc: driver updates for 6.15, part 1 2025-03-27 09:05:55 -07:00
sound ASoC: Fixes for v6.15 2025-05-01 10:22:20 +02:00
target scsi: target: iscsi: switch to using the crc32c library 2024-12-01 17:23:02 -08:00
trace for-6.15-rc5-tag 2025-05-06 08:19:09 -07:00
uapi fs/proc: extend the PAGEMAP_SCAN ioctl to report guard regions 2025-05-11 17:48:16 -07:00
ufs scsi: ufs: Introduce quirk to extend PA_HIBERN8TIME for UFS devices 2025-04-11 22:13:00 -04:00
vdso vdso: Address variable shadowing in macros 2025-04-10 11:07:10 +02:00
video gpu: ipu-v3 ipu-cpmem: Remove unused functions 2025-03-01 11:29:03 +02:00
xen xen/mcelog: Add __nonstring annotations for unterminated strings 2025-03-14 11:15:16 +01:00
Kbuild drm: ensure drm headers are self-contained and pass kernel-doc 2025-02-12 10:44:43 +02:00