diff mbox series

[v2,1/2] arch: add support 16k page size on ARM64

Message ID 20231211155951.4079886-2-gael.portay@rtone.fr
State Accepted
Headers show
Series Add support for Pi5 | expand

Commit Message

Gaël PORTAY Dec. 11, 2023, 3:59 p.m. UTC
The BCM2712 of the RaspberryPi 5 supports for 16KB page size.

This adds support for 16 KB on ARM64.

Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
---
 arch/Config.in.arm | 4 ++++
 arch/arch.mk       | 2 +-
 linux/linux.mk     | 4 ++++
 3 files changed, 9 insertions(+), 1 deletion(-)

Comments

Yann E. MORIN Jan. 19, 2024, 8:24 p.m. UTC | #1
Gaël, All,

On 2023-12-11 16:59 +0100, Gaël PORTAY spake thusly:
> The BCM2712 of the RaspberryPi 5 supports for 16KB page size.
> 
> This adds support for 16 KB on ARM64.
> 
> Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  arch/Config.in.arm | 4 ++++
>  arch/arch.mk       | 2 +-
>  linux/linux.mk     | 4 ++++
>  3 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/Config.in.arm b/arch/Config.in.arm
> index 78621e321c..b44a164e03 100644
> --- a/arch/Config.in.arm
> +++ b/arch/Config.in.arm
> @@ -781,6 +781,9 @@ choice
>  config BR2_ARM64_PAGE_SIZE_4K
>  	bool "4KB"
>  
> +config BR2_ARM64_PAGE_SIZE_16K
> +	bool "16KB"
> +
>  config BR2_ARM64_PAGE_SIZE_64K
>  	bool "64KB"
>  
> @@ -789,6 +792,7 @@ endchoice
>  config BR2_ARM64_PAGE_SIZE
>  	string
>  	default "4K" if BR2_ARM64_PAGE_SIZE_4K
> +	default "16K" if BR2_ARM64_PAGE_SIZE_16K
>  	default "64K" if BR2_ARM64_PAGE_SIZE_64K
>  
>  config BR2_ARCH
> diff --git a/arch/arch.mk b/arch/arch.mk
> index 2e737b92ac..4174d33df5 100644
> --- a/arch/arch.mk
> +++ b/arch/arch.mk
> @@ -23,7 +23,7 @@ ifeq ($(BR2_ARC_PAGE_SIZE_4K)$(BR2_ARM64_PAGE_SIZE_4K),y)
>  ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096
>  else ifeq ($(BR2_ARC_PAGE_SIZE_8K),y)
>  ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=8192 -Wl,-z,common-page-size=8192
> -else ifeq ($(BR2_ARC_PAGE_SIZE_16K),y)
> +else ifeq ($(BR2_ARC_PAGE_SIZE_16K)$(BR2_ARM64_PAGE_SIZE_16K),y)
>  ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384
>  else ifeq ($(BR2_ARM64_PAGE_SIZE_64K),y)
>  ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=65536 -Wl,-z,common-page-size=65536
> diff --git a/linux/linux.mk b/linux/linux.mk
> index 1db5c6046d..53e2ad6d48 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -411,6 +411,10 @@ define LINUX_KCONFIG_FIXUP_CMDS
>  		$(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_4K_PAGES)
>  		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_16K_PAGES)
>  		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_64K_PAGES))
> +	$(if $(BR2_ARM64_PAGE_SIZE_16K),
> +		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_4K_PAGES)
> +		$(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_16K_PAGES)
> +		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_64K_PAGES))
>  	$(if $(BR2_ARM64_PAGE_SIZE_64K),
>  		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_4K_PAGES)
>  		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_16K_PAGES)
> -- 
> 2.43.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 78621e321c..b44a164e03 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -781,6 +781,9 @@  choice
 config BR2_ARM64_PAGE_SIZE_4K
 	bool "4KB"
 
+config BR2_ARM64_PAGE_SIZE_16K
+	bool "16KB"
+
 config BR2_ARM64_PAGE_SIZE_64K
 	bool "64KB"
 
@@ -789,6 +792,7 @@  endchoice
 config BR2_ARM64_PAGE_SIZE
 	string
 	default "4K" if BR2_ARM64_PAGE_SIZE_4K
+	default "16K" if BR2_ARM64_PAGE_SIZE_16K
 	default "64K" if BR2_ARM64_PAGE_SIZE_64K
 
 config BR2_ARCH
diff --git a/arch/arch.mk b/arch/arch.mk
index 2e737b92ac..4174d33df5 100644
--- a/arch/arch.mk
+++ b/arch/arch.mk
@@ -23,7 +23,7 @@  ifeq ($(BR2_ARC_PAGE_SIZE_4K)$(BR2_ARM64_PAGE_SIZE_4K),y)
 ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096
 else ifeq ($(BR2_ARC_PAGE_SIZE_8K),y)
 ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=8192 -Wl,-z,common-page-size=8192
-else ifeq ($(BR2_ARC_PAGE_SIZE_16K),y)
+else ifeq ($(BR2_ARC_PAGE_SIZE_16K)$(BR2_ARM64_PAGE_SIZE_16K),y)
 ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384
 else ifeq ($(BR2_ARM64_PAGE_SIZE_64K),y)
 ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=65536 -Wl,-z,common-page-size=65536
diff --git a/linux/linux.mk b/linux/linux.mk
index 1db5c6046d..53e2ad6d48 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -411,6 +411,10 @@  define LINUX_KCONFIG_FIXUP_CMDS
 		$(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_4K_PAGES)
 		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_16K_PAGES)
 		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_64K_PAGES))
+	$(if $(BR2_ARM64_PAGE_SIZE_16K),
+		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_4K_PAGES)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_16K_PAGES)
+		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_64K_PAGES))
 	$(if $(BR2_ARM64_PAGE_SIZE_64K),
 		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_4K_PAGES)
 		$(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_16K_PAGES)