Message ID | 20250205050039.1506377-1-anshuman.khandual@arm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [V2] mm/ptdump: Drop GENERIC_PTDUMP | expand |
On Wed, Feb 05, 2025 at 10:30:39AM +0530, Anshuman Khandual wrote: > GENERIC_PTDUMP does not guard any code but instead just used for platform's > subscription into core ptdump defined under PTDUMP_CORE, which is selected. Selected by what? > Instead use PTDUMP_CORE for platform subscription and drop GENERIC_PTDUMP. > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Jonathan Corbet <corbet@lwn.net> > Cc: Marc Zyngier <maz@kernel.org> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Cc: Nicholas Piggin <npiggin@gmail.com> > Cc: Paul Walmsley <paul.walmsley@sifive.com> > Cc: Palmer Dabbelt <palmer@dabbelt.com> > Cc: Heiko Carstens <hca@linux.ibm.com> > Cc: Vasily Gorbik <gor@linux.ibm.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-doc@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: kvmarm@lists.linux.dev > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-riscv@lists.infradead.org > Cc: linux-s390@vger.kernel.org > Cc: linux-mm@kvack.org > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > This patch applies on v6.14-rc1 > > Changes in V2: > > - Keep arch/powerpc/Kconfig alphabetically sorted per Christophe > > Changes in V1: > > https://lore.kernel.org/all/20241217034807.2541349-1-anshuman.khandual@arm.com/ > > Documentation/arch/arm64/ptdump.rst | 1 - > arch/arm64/Kconfig | 2 +- > arch/arm64/kvm/Kconfig | 3 +-- > arch/powerpc/Kconfig | 2 +- > arch/powerpc/configs/mpc885_ads_defconfig | 1 - > arch/riscv/Kconfig | 2 +- > arch/s390/Kconfig | 2 +- > arch/x86/Kconfig | 2 +- > arch/x86/Kconfig.debug | 2 +- > kernel/configs/debug.config | 1 - > mm/Kconfig.debug | 8 ++------ > 11 files changed, 9 insertions(+), 17 deletions(-) > > diff --git a/Documentation/arch/arm64/ptdump.rst b/Documentation/arch/arm64/ptdump.rst > index 5dcfc5d7cddf..61ca040a885b 100644 > --- a/Documentation/arch/arm64/ptdump.rst > +++ b/Documentation/arch/arm64/ptdump.rst > @@ -22,7 +22,6 @@ offlining of memory being accessed by the ptdump code. > In order to dump the kernel page tables, enable the following > configurations and mount debugfs:: > > - CONFIG_GENERIC_PTDUMP=y > CONFIG_PTDUMP_CORE=y > CONFIG_PTDUMP_DEBUGFS=y > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index fcdd0ed3eca8..1f516bed81dd 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -157,7 +157,7 @@ config ARM64 > select GENERIC_IRQ_SHOW_LEVEL > select GENERIC_LIB_DEVMEM_IS_ALLOWED > select GENERIC_PCI_IOMAP > - select GENERIC_PTDUMP > + select PTDUMP_CORE > select GENERIC_SCHED_CLOCK > select GENERIC_SMP_IDLE_THREAD > select GENERIC_TIME_VSYSCALL This change means that the ptdump core code will be built regardless of whether any users are selected: [mark@lakrids:~/src/linux]% git grep CONFIG_PTDUMP_CORE Documentation/arch/arm64/ptdump.rst: CONFIG_PTDUMP_CORE=y arch/arm64/include/asm/ptdump.h:#ifdef CONFIG_PTDUMP_CORE arch/arm64/include/asm/ptdump.h:#endif /* CONFIG_PTDUMP_CORE */ arch/arm64/mm/Makefile:obj-$(CONFIG_PTDUMP_CORE) += ptdump.o arch/powerpc/mm/Makefile:obj-$(CONFIG_PTDUMP_CORE) += ptdump/ arch/riscv/mm/Makefile:obj-$(CONFIG_PTDUMP_CORE) += ptdump.o arch/s390/mm/Makefile:obj-$(CONFIG_PTDUMP_CORE) += dump_pagetables.o arch/x86/mm/Makefile:obj-$(CONFIG_PTDUMP_CORE) += dump_pagetables.o mm/Makefile:obj-$(CONFIG_PTDUMP_CORE) += ptdump.o GENERIC_PTDUMP means "this architecture uses generic ptdump code for ptdump", i.e. the architecture implements all the necessary bits for that to work *IF* it is built. PTDUMP_CORE means "actually build the core ptdump code". If everyone uses the generic ptdump code now, maybe it's worth renaming GENERIC_PTDUMP to ARCH_HAS_PTDUMP or something like that, but I don't think this change makes sense as-is. [...] > diff --git a/kernel/configs/debug.config b/kernel/configs/debug.config > index 20552f163930..8aafd050b754 100644 > --- a/kernel/configs/debug.config > +++ b/kernel/configs/debug.config > @@ -73,7 +73,6 @@ CONFIG_DEBUG_VM=y > CONFIG_DEBUG_VM_PGFLAGS=y > CONFIG_DEBUG_VM_RB=y > CONFIG_DEBUG_VM_VMACACHE=y > -CONFIG_GENERIC_PTDUMP=y > CONFIG_KASAN=y > CONFIG_KASAN_GENERIC=y > CONFIG_KASAN_INLINE=y I think this is wrong today, and removing it is the right thing to do. Architectures with support will select this themselves, and on architectures without support this either does nothing or causes a build failure. Mark.
diff --git a/Documentation/arch/arm64/ptdump.rst b/Documentation/arch/arm64/ptdump.rst index 5dcfc5d7cddf..61ca040a885b 100644 --- a/Documentation/arch/arm64/ptdump.rst +++ b/Documentation/arch/arm64/ptdump.rst @@ -22,7 +22,6 @@ offlining of memory being accessed by the ptdump code. In order to dump the kernel page tables, enable the following configurations and mount debugfs:: - CONFIG_GENERIC_PTDUMP=y CONFIG_PTDUMP_CORE=y CONFIG_PTDUMP_DEBUGFS=y diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index fcdd0ed3eca8..1f516bed81dd 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -157,7 +157,7 @@ config ARM64 select GENERIC_IRQ_SHOW_LEVEL select GENERIC_LIB_DEVMEM_IS_ALLOWED select GENERIC_PCI_IOMAP - select GENERIC_PTDUMP + select PTDUMP_CORE select GENERIC_SCHED_CLOCK select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig index ead632ad01b4..fe17d7f5b061 100644 --- a/arch/arm64/kvm/Kconfig +++ b/arch/arm64/kvm/Kconfig @@ -71,8 +71,7 @@ config PTDUMP_STAGE2_DEBUGFS depends on KVM depends on DEBUG_KERNEL depends on DEBUG_FS - depends on GENERIC_PTDUMP - select PTDUMP_CORE + depends on PTDUMP_CORE default n help Say Y here if you want to show the stage-2 kernel pagetables diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 424f188e62d9..97312440f715 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -206,7 +206,6 @@ config PPC select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW_LEVEL select GENERIC_PCI_IOMAP if PCI - select GENERIC_PTDUMP select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL select GENERIC_VDSO_TIME_NS @@ -314,6 +313,7 @@ config PPC select PCI_MSI_ARCH_FALLBACKS if PCI_MSI select PCI_SYSCALL if PCI select PPC_DAWR if PPC64 + select PTDUMP_CORE select RTC_LIB select SPARSE_IRQ select STRICT_KERNEL_RWX if STRICT_MODULE_RWX diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig index 77306be62e9e..ea6f836407d2 100644 --- a/arch/powerpc/configs/mpc885_ads_defconfig +++ b/arch/powerpc/configs/mpc885_ads_defconfig @@ -78,4 +78,3 @@ CONFIG_DEBUG_VM_PGTABLE=y CONFIG_DETECT_HUNG_TASK=y CONFIG_BDI_SWITCH=y CONFIG_PPC_EARLY_DEBUG=y -CONFIG_GENERIC_PTDUMP=y diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 7612c52e9b1e..bdaf08c1e1da 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -112,7 +112,7 @@ config RISCV select GENERIC_IRQ_SHOW_LEVEL select GENERIC_LIB_DEVMEM_IS_ALLOWED select GENERIC_PCI_IOMAP - select GENERIC_PTDUMP if MMU + select PTDUMP_CORE if MMU select GENERIC_SCHED_CLOCK select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL if MMU && 64BIT diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 9c9ec08d78c7..ecf6b4cb3e33 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -163,7 +163,7 @@ config S390 select GENERIC_CPU_VULNERABILITIES select GENERIC_ENTRY select GENERIC_GETTIMEOFDAY - select GENERIC_PTDUMP + select PTDUMP_CORE select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL select GENERIC_VDSO_TIME_NS diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 87198d957e2f..b6097b6178de 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -174,7 +174,7 @@ config X86 select GENERIC_IRQ_RESERVATION_MODE select GENERIC_IRQ_SHOW select GENERIC_PENDING_IRQ if SMP - select GENERIC_PTDUMP + select PTDUMP_CORE select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL select GENERIC_GETTIMEOFDAY diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug index 1eb4d23cdaae..090c44d7e1a5 100644 --- a/arch/x86/Kconfig.debug +++ b/arch/x86/Kconfig.debug @@ -59,7 +59,7 @@ config EARLY_PRINTK_USB_XDBC config EFI_PGT_DUMP bool "Dump the EFI pagetable" depends on EFI - select PTDUMP_CORE + depends on PTDUMP_CORE help Enable this if you want to dump the EFI page table before enabling virtual mode. This can be used to debug miscellaneous diff --git a/kernel/configs/debug.config b/kernel/configs/debug.config index 20552f163930..8aafd050b754 100644 --- a/kernel/configs/debug.config +++ b/kernel/configs/debug.config @@ -73,7 +73,6 @@ CONFIG_DEBUG_VM=y CONFIG_DEBUG_VM_PGFLAGS=y CONFIG_DEBUG_VM_RB=y CONFIG_DEBUG_VM_VMACACHE=y -CONFIG_GENERIC_PTDUMP=y CONFIG_KASAN=y CONFIG_KASAN_GENERIC=y CONFIG_KASAN_INLINE=y diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug index 41a58536531d..b206e5a11f96 100644 --- a/mm/Kconfig.debug +++ b/mm/Kconfig.debug @@ -187,7 +187,7 @@ config DEBUG_WX bool "Warn on W+X mappings at boot" depends on ARCH_HAS_DEBUG_WX depends on MMU - select PTDUMP_CORE + depends on PTDUMP_CORE help Generate a warning if any W+X mappings are found at boot. @@ -212,9 +212,6 @@ config DEBUG_WX If in doubt, say "Y". -config GENERIC_PTDUMP - bool - config PTDUMP_CORE bool @@ -222,8 +219,7 @@ config PTDUMP_DEBUGFS bool "Export kernel pagetable layout to userspace via debugfs" depends on DEBUG_KERNEL depends on DEBUG_FS - depends on GENERIC_PTDUMP - select PTDUMP_CORE + depends on PTDUMP_CORE help Say Y here if you want to show the kernel pagetable layout in a debugfs file. This information is only useful for kernel developers
GENERIC_PTDUMP does not guard any code but instead just used for platform's subscription into core ptdump defined under PTDUMP_CORE, which is selected. Instead use PTDUMP_CORE for platform subscription and drop GENERIC_PTDUMP. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Marc Zyngier <maz@kernel.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-doc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: kvmarm@lists.linux.dev Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc: linux-mm@kvack.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- This patch applies on v6.14-rc1 Changes in V2: - Keep arch/powerpc/Kconfig alphabetically sorted per Christophe Changes in V1: https://lore.kernel.org/all/20241217034807.2541349-1-anshuman.khandual@arm.com/ Documentation/arch/arm64/ptdump.rst | 1 - arch/arm64/Kconfig | 2 +- arch/arm64/kvm/Kconfig | 3 +-- arch/powerpc/Kconfig | 2 +- arch/powerpc/configs/mpc885_ads_defconfig | 1 - arch/riscv/Kconfig | 2 +- arch/s390/Kconfig | 2 +- arch/x86/Kconfig | 2 +- arch/x86/Kconfig.debug | 2 +- kernel/configs/debug.config | 1 - mm/Kconfig.debug | 8 ++------ 11 files changed, 9 insertions(+), 17 deletions(-)