lkml.org 
[lkml]   [2019]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 11/16] powerpc/kconfig: define CONFIG_DATA_SHIFT and CONFIG_ETEXT_SHIFT
    Date
    CONFIG_STRICT_KERNEL_RWX requires a special alignment
    for DATA for some subarches. Today it is just defined
    as an #ifdef in vmlinux.lds.S

    In order to get more flexibility, this patch moves the
    definition of this alignment in Kconfig

    On some subarches, CONFIG_STRICT_KERNEL_RWX will
    require a special alignment of _etext.

    This patch also adds a configuration item for it in Kconfig

    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    ---
    arch/powerpc/Kconfig | 9 +++++++++
    arch/powerpc/kernel/vmlinux.lds.S | 9 +++------
    2 files changed, 12 insertions(+), 6 deletions(-)

    diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
    index 417e52a27f63..edef40a2b446 100644
    --- a/arch/powerpc/Kconfig
    +++ b/arch/powerpc/Kconfig
    @@ -725,6 +725,15 @@ 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
    + int
    + default PPC_PAGE_SHIFT
    +
    +config DATA_SHIFT
    + int
    + default 24 if STRICT_KERNEL_RWX && PPC64
    + default PPC_PAGE_SHIFT
    +
    config FORCE_MAX_ZONEORDER
    int "Maximum zone order"
    range 8 9 if PPC64 && PPC_64K_PAGES
    diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
    index c3efb972c8c1..060a1acd7c6d 100644
    --- a/arch/powerpc/kernel/vmlinux.lds.S
    +++ b/arch/powerpc/kernel/vmlinux.lds.S
    @@ -12,11 +12,8 @@
    #include <asm/cache.h>
    #include <asm/thread_info.h>

    -#if defined(CONFIG_STRICT_KERNEL_RWX) && !defined(CONFIG_PPC32)
    -#define STRICT_ALIGN_SIZE (1 << 24)
    -#else
    -#define STRICT_ALIGN_SIZE PAGE_SIZE
    -#endif
    +#define STRICT_ALIGN_SIZE (1 << CONFIG_DATA_SHIFT)
    +#define ETEXT_ALIGN_SIZE (1 << CONFIG_ETEXT_SHIFT)

    ENTRY(_stext)

    @@ -131,7 +128,7 @@ SECTIONS

    } :kernel

    - . = ALIGN(PAGE_SIZE);
    + . = ALIGN(ETEXT_ALIGN_SIZE);
    _etext = .;
    PROVIDE32 (etext = .);

    --
    2.13.3
    \
     
     \ /
      Last update: 2019-02-21 20:09    [W:4.950 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site