linux-snps-arc.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Arnd Bergmann <arnd@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Kees Cook <keescook@chromium.org>,
	Anna-Maria Behnsen <anna-maria@linutronix.de>
Cc: Arnd Bergmann <arnd@arndb.de>, Matt Turner <mattst88@gmail.com>,
	Vineet Gupta <vgupta@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Guo Ren <guoren@kernel.org>, Brian Cain <bcain@quicinc.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Michal Simek <monstr@monstr.eu>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Helge Deller <deller@gmx.de>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
	Andreas Larsson <andreas@gaisler.com>,
	Richard Weinberger <richard@nod.at>,
	"x86@kernel.org" <x86@kernel.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Andy Lutomirski <luto@kernel.org>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	Kieran Bingham <kbingham@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-alpha@vger.kernel.org" <linux-alpha@vger.kernel.org>,
	"linux-snps-arc@lists.infradead.org"
	<linux-snps-arc@lists.infradead.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-csky@vger.kernel.org" <linux-csky@vger.kernel.org>,
	"linux-hexagon@vger.kernel.org" <linux-hexagon@vger.kernel.org>,
	"loongarch@lists.linux.dev" <loongarch@lists.linux.dev>,
	"linux-m68k@lists.linux-m68k.org"
	<linux-m68k@lists.linux-m68k.org>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	"linux-openrisc@vger.kernel.org" <linux-openrisc@vger.kernel.org>,
	"linux-parisc@vger.kernel.org" <linux-parisc@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"linux-sh@vger.kernel.org" <linux-sh@vger.kernel.org>,
	"sparclinux@vger.kernel.org" <sparclinux@vger.kernel.org>,
	"linux-um@lists.infradead.org" <linux-um@lists.infradead.org>
Subject: Re: [PATCH 2/4] arch: simplify architecture specific page size configuration
Date: Mon, 26 Feb 2024 19:05:12 +0000	[thread overview]
Message-ID: <803facbe-2dfb-44cd-9110-0a27eb31b62f@csgroup.eu> (raw)
In-Reply-To: <20240226161414.2316610-3-arnd@kernel.org>



Le 26/02/2024 à 17:14, Arnd Bergmann a écrit :
> From: Arnd Bergmann <arnd@arndb.de>
> 
> 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 <arnd@arndb.de>

Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> (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 <linux/const.h>
>   
>   /* 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 <linux/const.h>
>   
>   /* 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 best
>   	  performance, a page size of 16KB is recommended.  For best
> @@ -288,10 +289,12 @@ config PARISC_PAGE_SIZE_4KB
>   
>   config PARISC_PAGE_SIZE_16KB
>   	bool "16KB"
> +	select HAVE_PAGE_SIZE_16KB
>   	depends on PA8X00 && BROKEN && !KFENCE
>   
>   config PARISC_PAGE_SIZE_64KB
>   	bool "64KB"
> +	select HAVE_PAGE_SIZE_64KB
>   	depends on PA8X00 && BROKEN && !KFENCE
>   
>   endchoice
> diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h
> index 667e703c0e8f..ad4e15d12ed1 100644
> --- a/arch/parisc/include/asm/page.h
> +++ b/arch/parisc/include/asm/page.h
> @@ -4,15 +4,7 @@
>   
>   #include <linux/const.h>
>   
> -#if defined(CONFIG_PARISC_PAGE_SIZE_4KB)
> -# define PAGE_SHIFT	12
> -#elif defined(CONFIG_PARISC_PAGE_SIZE_16KB)
> -# define PAGE_SHIFT	14
> -#elif defined(CONFIG_PARISC_PAGE_SIZE_64KB)
> -# define PAGE_SHIFT	16
> -#else
> -# error "unknown default kernel page size"
> -#endif
> +#define PAGE_SHIFT	CONFIG_PAGE_SHIFT
>   #define PAGE_SIZE	(_AC(1,UL) << PAGE_SHIFT)
>   #define PAGE_MASK	(~(PAGE_SIZE-1))
>   
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index b9fc064d38d2..8fad4e5d7ad5 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -212,7 +212,7 @@ config PPC
>   	select HAVE_ARCH_HUGE_VMAP		if PPC_RADIX_MMU || PPC_8xx
>   	select HAVE_ARCH_JUMP_LABEL
>   	select HAVE_ARCH_JUMP_LABEL_RELATIVE
> -	select HAVE_ARCH_KASAN			if PPC32 && PPC_PAGE_SHIFT <= 14
> +	select HAVE_ARCH_KASAN			if PPC32 && PAGE_SHIFT <= 14
>   	select HAVE_ARCH_KASAN			if PPC_RADIX_MMU
>   	select HAVE_ARCH_KASAN			if PPC_BOOK3E_64
>   	select HAVE_ARCH_KASAN_VMALLOC		if HAVE_ARCH_KASAN
> @@ -809,19 +809,23 @@ choice
>   config PPC_4K_PAGES
>   	bool "4k page size"
>   	select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
> +	select HAVE_PAGE_SIZE_4KB
>   
>   config PPC_16K_PAGES
>   	bool "16k page size"
>   	depends on 44x || PPC_8xx
> +	select HAVE_PAGE_SIZE_16KB
>   
>   config PPC_64K_PAGES
>   	bool "64k page size"
>   	depends on 44x || PPC_BOOK3S_64
>   	select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
> +	select HAVE_PAGE_SIZE_64KB
>   
>   config PPC_256K_PAGES
>   	bool "256k page size (Requires non-standard binutils settings)"
>   	depends on 44x && !PPC_47x
> +	select HAVE_PAGE_SIZE_256KB
>   	help
>   	  Make the page size 256k.
>   
> @@ -832,29 +836,6 @@ config PPC_256K_PAGES
>   
>   endchoice
>   
> -config PAGE_SIZE_4KB
> -	def_bool y
> -	depends on PPC_4K_PAGES
> -
> -config PAGE_SIZE_16KB
> -	def_bool y
> -	depends on PPC_16K_PAGES
> -
> -config PAGE_SIZE_64KB
> -	def_bool y
> -	depends on PPC_64K_PAGES
> -
> -config PAGE_SIZE_256KB
> -	def_bool y
> -	depends on PPC_256K_PAGES
> -
> -config PPC_PAGE_SHIFT
> -	int
> -	default 18 if PPC_256K_PAGES
> -	default 16 if PPC_64K_PAGES
> -	default 14 if PPC_16K_PAGES
> -	default 12
> -
>   config THREAD_SHIFT
>   	int "Thread shift" if EXPERT
>   	range 13 15
> @@ -891,7 +872,7 @@ config DATA_SHIFT
>   	default 23 if (DEBUG_PAGEALLOC || KFENCE) && PPC_8xx && PIN_TLB_DATA
>   	default 19 if (DEBUG_PAGEALLOC || KFENCE) && PPC_8xx
>   	default 24 if STRICT_KERNEL_RWX && PPC_85xx
> -	default PPC_PAGE_SHIFT
> +	default PAGE_SHIFT
>   	help
>   	  On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
>   	  Smaller is the alignment, greater is the number of necessary DBATs.
> diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
> index e5fcc79b5bfb..e411e5a70ea3 100644
> --- a/arch/powerpc/include/asm/page.h
> +++ b/arch/powerpc/include/asm/page.h
> @@ -21,7 +21,7 @@
>    * page size. When using 64K pages however, whether we are really supporting
>    * 64K pages in HW or not is irrelevant to those definitions.
>    */
> -#define PAGE_SHIFT		CONFIG_PPC_PAGE_SHIFT
> +#define PAGE_SHIFT		CONFIG_PAGE_SHIFT
>   #define PAGE_SIZE		(ASM_CONST(1) << PAGE_SHIFT)
>   
>   #ifndef __ASSEMBLY__
> diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in
> index e810e0c27ff1..10fadc238719 100644
> --- a/scripts/gdb/linux/constants.py.in
> +++ b/scripts/gdb/linux/constants.py.in
> @@ -139,7 +139,7 @@ LX_CONFIG(CONFIG_ARM64_64K_PAGES)
>   if IS_BUILTIN(CONFIG_ARM64):
>       LX_VALUE(CONFIG_ARM64_PA_BITS)
>       LX_VALUE(CONFIG_ARM64_VA_BITS)
> -    LX_VALUE(CONFIG_ARM64_PAGE_SHIFT)
> +    LX_VALUE(CONFIG_PAGE_SHIFT)
>       LX_VALUE(CONFIG_ARCH_FORCE_MAX_ORDER)
>   LX_CONFIG(CONFIG_SPARSEMEM)
>   LX_CONFIG(CONFIG_SPARSEMEM_EXTREME)
> diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py
> index ad5641dcb068..515730fd4c9d 100644
> --- a/scripts/gdb/linux/mm.py
> +++ b/scripts/gdb/linux/mm.py
> @@ -41,7 +41,7 @@ class aarch64_page_ops():
>               self.SECTION_SIZE_BITS = 27
>           self.MAX_PHYSMEM_BITS = constants.LX_CONFIG_ARM64_VA_BITS
>   
> -        self.PAGE_SHIFT = constants.LX_CONFIG_ARM64_PAGE_SHIFT
> +        self.PAGE_SHIFT = constants.LX_CONFIG_PAGE_SHIFT
>           self.PAGE_SIZE = 1 << self.PAGE_SHIFT
>           self.PAGE_MASK = (~(self.PAGE_SIZE - 1)) & ((1 << 64) - 1)
>   
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

  reply	other threads:[~2024-02-26 19:05 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-26 16:14 [PATCH 0/4] arch: mm, vdso: consolidate PAGE_SIZE definition Arnd Bergmann
2024-02-26 16:14 ` [PATCH 1/4] arch: consolidate existing CONFIG_PAGE_SIZE_*KB definitions Arnd Bergmann
2024-02-26 16:55   ` Samuel Holland
2024-02-27 15:40     ` Arnd Bergmann
2024-02-27 15:44       ` Christophe Leroy
2024-02-27 15:48         ` Arnd Bergmann
2024-02-26 19:02   ` Christophe Leroy
2024-02-27 15:42     ` Arnd Bergmann
2024-02-27  8:45   ` Geert Uytterhoeven
2024-02-27 15:43     ` Arnd Bergmann
2024-02-26 16:14 ` [PATCH 2/4] arch: simplify architecture specific page size configuration Arnd Bergmann
2024-02-26 19:05   ` Christophe Leroy [this message]
2024-02-27 13:46   ` Catalin Marinas
2024-02-27 13:53   ` Helge Deller
2024-02-26 16:14 ` [PATCH 3/4] arch: define CONFIG_PAGE_SIZE_*KB on all architectures Arnd Bergmann
2024-02-27  0:49   ` Guo Ren
2024-02-27  7:41   ` Heiko Carstens
2024-02-27  8:54   ` Geert Uytterhoeven
2024-02-27 10:59     ` Arnd Bergmann
2024-02-27 11:12       ` Geert Uytterhoeven
2024-02-27 14:18         ` Arnd Bergmann
2024-02-28 21:06   ` Stafford Horne
2024-03-05 10:59   ` Johannes Berg
2024-02-26 16:14 ` [PATCH 4/4] vdso: avoid including asm/page.h Arnd Bergmann
2024-02-26 18:53   ` Christophe Leroy
2024-02-27 12:57     ` Michael Ellerman
2024-02-27 13:46   ` Catalin Marinas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=803facbe-2dfb-44cd-9110-0a27eb31b62f@csgroup.eu \
    --to=christophe.leroy@csgroup.eu \
    --cc=akpm@linux-foundation.org \
    --cc=andreas@gaisler.com \
    --cc=anna-maria@linutronix.de \
    --cc=arnd@arndb.de \
    --cc=arnd@kernel.org \
    --cc=bcain@quicinc.com \
    --cc=catalin.marinas@arm.com \
    --cc=chenhuacai@kernel.org \
    --cc=deller@gmx.de \
    --cc=geert@linux-m68k.org \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=guoren@kernel.org \
    --cc=jan.kiszka@siemens.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=kbingham@kernel.org \
    --cc=keescook@chromium.org \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-openrisc@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux@armlinux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=loongarch@lists.linux.dev \
    --cc=luto@kernel.org \
    --cc=mattst88@gmail.com \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=palmer@dabbelt.com \
    --cc=richard@nod.at \
    --cc=sparclinux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tsbogend@alpha.franken.de \
    --cc=vgupta@kernel.org \
    --cc=vincenzo.frascino@arm.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).