powerpc/kconfig: make _etext and data areas alignment configurable on Book3s 32
authorChristophe Leroy <christophe.leroy@c-s.fr>
Thu, 21 Feb 2019 19:08:50 +0000 (19:08 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 23 Feb 2019 10:04:32 +0000 (21:04 +1100)
Depending on the number of available BATs for mapping the different
kernel areas, it might be needed to increase the alignment of _etext
and/or of data areas.

This patchs allows the user to do it via Kconfig.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/Kconfig

index 2544dae471e10ffef8b008362091d5a64be37212..81df0dbc8a9a35bb280e59841d62441588bca2c9 100644 (file)
@@ -721,16 +721,44 @@ config THREAD_SHIFT
          Used to define the stack size. The default is almost always what you
          want. Only change this if you know what you are doing.
 
+config ETEXT_SHIFT_BOOL
+       bool "Set custom etext alignment" if STRICT_KERNEL_RWX && PPC_BOOK3S_32
+       depends on ADVANCED_OPTIONS
+       help
+         This option allows you to set the kernel end of text alignment. When
+         RAM is mapped by blocks, the alignment needs to fit the size and
+         number of possible blocks. The default should be OK for most configs.
+
+         Say N here unless you know what you are doing.
+
 config ETEXT_SHIFT
-       int
+       int "_etext shift" if ETEXT_SHIFT_BOOL
+       range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
        default 17 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
        default PPC_PAGE_SHIFT
+       help
+         On Book3S 32 (603+), IBATs are used to map kernel text.
+         Smaller is the alignment, greater is the number of necessary IBATs.
+
+config DATA_SHIFT_BOOL
+       bool "Set custom data alignment" if STRICT_KERNEL_RWX && PPC_BOOK3S_32
+       depends on ADVANCED_OPTIONS
+       help
+         This option allows you to set the kernel data alignment. When
+         RAM is mapped by blocks, the alignment needs to fit the size and
+         number of possible blocks. The default should be OK for most configs.
+
+         Say N here unless you know what you are doing.
 
 config DATA_SHIFT
-       int
+       int "Data shift" if DATA_SHIFT_BOOL
        default 24 if STRICT_KERNEL_RWX && PPC64
+       range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
        default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
        default PPC_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.
 
 config FORCE_MAX_ZONEORDER
        int "Maximum zone order"