lkml.org 
[lkml]   [2023]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH -next V13 3/3] riscv: stack: Add config of thread stack size
    Date
    From: Guo Ren <guoren@linux.alibaba.com>

    The commit 0cac21b02ba5 ("riscv: use 16KB kernel stack on 64-bit")
    increases the thread size mandatory, but some scenarios, such as D1 with
    a small memory footprint, would suffer from that. After independent irq
    stack support, let's give users a choice to determine their custom stack
    size.

    Link: https://lore.kernel.org/linux-riscv/5f6e6c39-b846-4392-b468-02202404de28@www.fastmail.com/
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Tested-by: Jisheng Zhang <jszhang@kernel.org>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@kernel.org>
    ---
    arch/riscv/Kconfig | 10 ++++++++++
    arch/riscv/include/asm/thread_info.h | 12 +-----------
    2 files changed, 11 insertions(+), 11 deletions(-)

    diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
    index f515cb101c19..0599bba13654 100644
    --- a/arch/riscv/Kconfig
    +++ b/arch/riscv/Kconfig
    @@ -599,6 +599,16 @@ config IRQ_STACKS
    Add independent irq & softirq stacks for percpu to prevent kernel stack
    overflows. We may save some memory footprint by disabling IRQ_STACKS.

    +config THREAD_SIZE_ORDER
    + int "Kernel stack size (in power-of-two numbers of page size)" if VMAP_STACK && EXPERT
    + range 0 4
    + default 1 if 32BIT && !KASAN
    + default 3 if 64BIT && KASAN
    + default 2
    + help
    + Specify the Pages of thread stack size (from 4KB to 64KB), which also
    + affects irq stack size, which is equal to thread stack size.
    +
    endmenu # "Platform type"

    menu "Kernel features"
    diff --git a/arch/riscv/include/asm/thread_info.h b/arch/riscv/include/asm/thread_info.h
    index 2f32875276b0..1833beb00489 100644
    --- a/arch/riscv/include/asm/thread_info.h
    +++ b/arch/riscv/include/asm/thread_info.h
    @@ -11,18 +11,8 @@
    #include <asm/page.h>
    #include <linux/const.h>

    -#ifdef CONFIG_KASAN
    -#define KASAN_STACK_ORDER 1
    -#else
    -#define KASAN_STACK_ORDER 0
    -#endif
    -
    /* thread information allocation */
    -#ifdef CONFIG_64BIT
    -#define THREAD_SIZE_ORDER (2 + KASAN_STACK_ORDER)
    -#else
    -#define THREAD_SIZE_ORDER (1 + KASAN_STACK_ORDER)
    -#endif
    +#define THREAD_SIZE_ORDER CONFIG_THREAD_SIZE_ORDER
    #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)

    /*
    --
    2.36.1
    \
     
     \ /
      Last update: 2023-06-14 03:32    [W:3.526 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site