Re: [PATCH 2/4] arch: simplify architecture specific page size configuration
On 2/26/24 17:14, Arnd Bergmann wrote: From: Arnd Bergmann arc, arm64, parisc and powerpc all have their own Kconfig symbols in place of the common CONFIG_PAGE_SIZE_4KB symbols. Change these so the common symbols are the ones that are actually used, while leaving the arhcitecture specific ones as the user visible place for configuring it, to avoid breaking user configs. Signed-off-by: Arnd Bergmann --- arch/arc/Kconfig | 3 +++ arch/arc/include/uapi/asm/page.h | 6 ++ arch/arm64/Kconfig| 29 + arch/arm64/include/asm/page-def.h | 2 +- arch/parisc/Kconfig | 3 +++ arch/parisc/include/asm/page.h| 10 +- Acked-by: Helge Deller # parisc Thanks for the cleanups! Helge
Re: [PATCH 2/4] arch: simplify architecture specific page size configuration
On Mon, Feb 26, 2024 at 05:14:12PM +0100, Arnd Bergmann wrote: > From: Arnd Bergmann > > arc, arm64, parisc and powerpc all have their own Kconfig symbols > in place of the common CONFIG_PAGE_SIZE_4KB symbols. Change these > so the common symbols are the ones that are actually used, while > leaving the arhcitecture specific ones as the user visible > place for configuring it, to avoid breaking user configs. > > Signed-off-by: Arnd Bergmann For arm64: Acked-by: Catalin Marinas
Re: [PATCH 2/4] arch: simplify architecture specific page size configuration
Le 26/02/2024 à 17:14, Arnd Bergmann a écrit : > From: Arnd Bergmann > > arc, arm64, parisc and powerpc all have their own Kconfig symbols > in place of the common CONFIG_PAGE_SIZE_4KB symbols. Change these > so the common symbols are the ones that are actually used, while > leaving the arhcitecture specific ones as the user visible > place for configuring it, to avoid breaking user configs. > > Signed-off-by: Arnd Bergmann Reviewed-by: Christophe Leroy (powerpc32) > --- > arch/arc/Kconfig | 3 +++ > arch/arc/include/uapi/asm/page.h | 6 ++ > arch/arm64/Kconfig| 29 + > arch/arm64/include/asm/page-def.h | 2 +- > arch/parisc/Kconfig | 3 +++ > arch/parisc/include/asm/page.h| 10 +- > arch/powerpc/Kconfig | 31 ++- > arch/powerpc/include/asm/page.h | 2 +- > scripts/gdb/linux/constants.py.in | 2 +- > scripts/gdb/linux/mm.py | 2 +- > 10 files changed, 32 insertions(+), 58 deletions(-) > > diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig > index 1b0483c51cc1..4092bec198be 100644 > --- a/arch/arc/Kconfig > +++ b/arch/arc/Kconfig > @@ -284,14 +284,17 @@ choice > > config ARC_PAGE_SIZE_8K > bool "8KB" > + select HAVE_PAGE_SIZE_8KB > help > Choose between 8k vs 16k > > config ARC_PAGE_SIZE_16K > + select HAVE_PAGE_SIZE_16KB > bool "16KB" > > config ARC_PAGE_SIZE_4K > bool "4KB" > + select HAVE_PAGE_SIZE_4KB > depends on ARC_MMU_V3 || ARC_MMU_V4 > > endchoice > diff --git a/arch/arc/include/uapi/asm/page.h > b/arch/arc/include/uapi/asm/page.h > index 2a4ad619abfb..7fd9e741b527 100644 > --- a/arch/arc/include/uapi/asm/page.h > +++ b/arch/arc/include/uapi/asm/page.h > @@ -13,10 +13,8 @@ > #include > > /* PAGE_SHIFT determines the page size */ > -#if defined(CONFIG_ARC_PAGE_SIZE_16K) > -#define PAGE_SHIFT 14 > -#elif defined(CONFIG_ARC_PAGE_SIZE_4K) > -#define PAGE_SHIFT 12 > +#ifdef __KERNEL__ > +#define PAGE_SHIFT CONFIG_PAGE_SHIFT > #else > /* >* Default 8k > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index aa7c1d435139..29290b8cb36d 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -277,27 +277,21 @@ config 64BIT > config MMU > def_bool y > > -config ARM64_PAGE_SHIFT > - int > - default 16 if ARM64_64K_PAGES > - default 14 if ARM64_16K_PAGES > - default 12 > - > config ARM64_CONT_PTE_SHIFT > int > - default 5 if ARM64_64K_PAGES > - default 7 if ARM64_16K_PAGES > + default 5 if PAGE_SIZE_64KB > + default 7 if PAGE_SIZE_16KB > default 4 > > config ARM64_CONT_PMD_SHIFT > int > - default 5 if ARM64_64K_PAGES > - default 5 if ARM64_16K_PAGES > + default 5 if PAGE_SIZE_64KB > + default 5 if PAGE_SIZE_16KB > default 4 > > config ARCH_MMAP_RND_BITS_MIN > - default 14 if ARM64_64K_PAGES > - default 16 if ARM64_16K_PAGES > + default 14 if PAGE_SIZE_64KB > + default 16 if PAGE_SIZE_16KB > default 18 > > # max bits determined by the following formula: > @@ -1259,11 +1253,13 @@ choice > > config ARM64_4K_PAGES > bool "4KB" > + select HAVE_PAGE_SIZE_4KB > help > This feature enables 4KB pages support. > > config ARM64_16K_PAGES > bool "16KB" > + select HAVE_PAGE_SIZE_16KB > help > The system will use 16KB pages support. AArch32 emulation > requires applications compiled with 16K (or a multiple of 16K) > @@ -1271,6 +1267,7 @@ config ARM64_16K_PAGES > > config ARM64_64K_PAGES > bool "64KB" > + select HAVE_PAGE_SIZE_64KB > help > This feature enables 64KB pages support (4KB by default) > allowing only two levels of page tables and faster TLB > @@ -1291,19 +1288,19 @@ choice > > config ARM64_VA_BITS_36 > bool "36-bit" if EXPERT > - depends on ARM64_16K_PAGES > + depends on PAGE_SIZE_16KB > > config ARM64_VA_BITS_39 > bool "39-bit" > - depends on ARM64_4K_PAGES > + depends on PAGE_SIZE_4KB > > config ARM64_VA_BITS_42 > bool "42-bit" > - depends on ARM64_64K_PAGES > + depends on PAGE_SIZE_64KB > > config ARM64_VA_BITS_47 > bool "47-bit" > - depends on ARM64_16K_PAGES > + depends on PAGE_SIZE_16KB > > config ARM64_VA_BITS_48 > bool "48-bit" > diff --git a/arch/arm64/include/asm/page-def.h > b/arch/arm64/include/asm/page-def.h > index 2403f7b4cdbf..792e9fe881dc 100644 > --- a/arch/arm64/include/asm/page-def.h > +++ b/arch/arm64/include/asm/page-def.h > @@ -11,7 +11,7 @@ > #include > > /* PAGE_SHIFT determines the page size */ > -#define PAGE_SHIFT CONFIG_ARM64_PAGE_SHIFT > +#define PAGE_SHIFT CONFIG_PAGE_SHIFT > #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT) > #define PAGE_MASK
[PATCH 2/4] arch: simplify architecture specific page size configuration
From: Arnd Bergmann arc, arm64, parisc and powerpc all have their own Kconfig symbols in place of the common CONFIG_PAGE_SIZE_4KB symbols. Change these so the common symbols are the ones that are actually used, while leaving the arhcitecture specific ones as the user visible place for configuring it, to avoid breaking user configs. Signed-off-by: Arnd Bergmann --- arch/arc/Kconfig | 3 +++ arch/arc/include/uapi/asm/page.h | 6 ++ arch/arm64/Kconfig| 29 + arch/arm64/include/asm/page-def.h | 2 +- arch/parisc/Kconfig | 3 +++ arch/parisc/include/asm/page.h| 10 +- arch/powerpc/Kconfig | 31 ++- arch/powerpc/include/asm/page.h | 2 +- scripts/gdb/linux/constants.py.in | 2 +- scripts/gdb/linux/mm.py | 2 +- 10 files changed, 32 insertions(+), 58 deletions(-) diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index 1b0483c51cc1..4092bec198be 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -284,14 +284,17 @@ choice config ARC_PAGE_SIZE_8K bool "8KB" + select HAVE_PAGE_SIZE_8KB help Choose between 8k vs 16k config ARC_PAGE_SIZE_16K + select HAVE_PAGE_SIZE_16KB bool "16KB" config ARC_PAGE_SIZE_4K bool "4KB" + select HAVE_PAGE_SIZE_4KB depends on ARC_MMU_V3 || ARC_MMU_V4 endchoice diff --git a/arch/arc/include/uapi/asm/page.h b/arch/arc/include/uapi/asm/page.h index 2a4ad619abfb..7fd9e741b527 100644 --- a/arch/arc/include/uapi/asm/page.h +++ b/arch/arc/include/uapi/asm/page.h @@ -13,10 +13,8 @@ #include /* PAGE_SHIFT determines the page size */ -#if defined(CONFIG_ARC_PAGE_SIZE_16K) -#define PAGE_SHIFT 14 -#elif defined(CONFIG_ARC_PAGE_SIZE_4K) -#define PAGE_SHIFT 12 +#ifdef __KERNEL__ +#define PAGE_SHIFT CONFIG_PAGE_SHIFT #else /* * Default 8k diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index aa7c1d435139..29290b8cb36d 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -277,27 +277,21 @@ config 64BIT config MMU def_bool y -config ARM64_PAGE_SHIFT - int - default 16 if ARM64_64K_PAGES - default 14 if ARM64_16K_PAGES - default 12 - config ARM64_CONT_PTE_SHIFT int - default 5 if ARM64_64K_PAGES - default 7 if ARM64_16K_PAGES + default 5 if PAGE_SIZE_64KB + default 7 if PAGE_SIZE_16KB default 4 config ARM64_CONT_PMD_SHIFT int - default 5 if ARM64_64K_PAGES - default 5 if ARM64_16K_PAGES + default 5 if PAGE_SIZE_64KB + default 5 if PAGE_SIZE_16KB default 4 config ARCH_MMAP_RND_BITS_MIN - default 14 if ARM64_64K_PAGES - default 16 if ARM64_16K_PAGES + default 14 if PAGE_SIZE_64KB + default 16 if PAGE_SIZE_16KB default 18 # max bits determined by the following formula: @@ -1259,11 +1253,13 @@ choice config ARM64_4K_PAGES bool "4KB" + select HAVE_PAGE_SIZE_4KB help This feature enables 4KB pages support. config ARM64_16K_PAGES bool "16KB" + select HAVE_PAGE_SIZE_16KB help The system will use 16KB pages support. AArch32 emulation requires applications compiled with 16K (or a multiple of 16K) @@ -1271,6 +1267,7 @@ config ARM64_16K_PAGES config ARM64_64K_PAGES bool "64KB" + select HAVE_PAGE_SIZE_64KB help This feature enables 64KB pages support (4KB by default) allowing only two levels of page tables and faster TLB @@ -1291,19 +1288,19 @@ choice config ARM64_VA_BITS_36 bool "36-bit" if EXPERT - depends on ARM64_16K_PAGES + depends on PAGE_SIZE_16KB config ARM64_VA_BITS_39 bool "39-bit" - depends on ARM64_4K_PAGES + depends on PAGE_SIZE_4KB config ARM64_VA_BITS_42 bool "42-bit" - depends on ARM64_64K_PAGES + depends on PAGE_SIZE_64KB config ARM64_VA_BITS_47 bool "47-bit" - depends on ARM64_16K_PAGES + depends on PAGE_SIZE_16KB config ARM64_VA_BITS_48 bool "48-bit" diff --git a/arch/arm64/include/asm/page-def.h b/arch/arm64/include/asm/page-def.h index 2403f7b4cdbf..792e9fe881dc 100644 --- a/arch/arm64/include/asm/page-def.h +++ b/arch/arm64/include/asm/page-def.h @@ -11,7 +11,7 @@ #include /* PAGE_SHIFT determines the page size */ -#define PAGE_SHIFT CONFIG_ARM64_PAGE_SHIFT +#define PAGE_SHIFT CONFIG_PAGE_SHIFT #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 5c845e8d59d9..b180e684fa0d 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -273,6 +273,7 @@ choice config PARISC_PAGE_SIZE_4KB bool "4KB" + select HAVE_PAGE_SIZE_4KB help This lets you select the page size of the kernel. For