Re: [PATCH v2] RISC-V: Add fragmented config for debug options

From: Daniel Thompson
Date: Fri Dec 06 2019 - 04:01:06 EST


On Thu, Dec 05, 2019 at 05:49:18PM +0000, Anup Patel wrote:
> Various Linux kernel DEBUG options have big performance impact so
> these should not be enabled in RISC-V normal defconfigs.
>
> Instead we should have separate RISC-V fragmented config for enabling
> these DEBUG options. This way Linux RISC-V kernel can be built for
> both non-debug and debug purposes using same defconfig.
>
> This patch moves additional DEBUG options to extra_debug.config.
>
> To configure a non-debug RV64 kernel, we use our normal defconfig:
> $ make O=<linux_build_directory> defconfig
> Wherease to configure a debug RV64 kernel, we use extra_debug.config:
> $ make O=<linux_build_directory> defconfig extra_debug.config
>
> Signed-off-by: Anup Patel <anup.patel@xxxxxxx>
> ---
> Changes since v1:
> - Use fragmented .config instead of separate debug defconfigs.
> ---
> arch/riscv/configs/defconfig | 23 -----------------------
> arch/riscv/configs/extra_debug.config | 21 +++++++++++++++++++++

Might be better to call this rv_debug.config (or riscv_debug.config),
This would imply it is a set of options recommended by riscv
maintainers and also having a suitable prefix means it is less
likely to ever conflict with .config files in kernel/configs .

BTW don't respin the patch on my account. Using a .config file was just
an idea and I'm not sure it reached consensus on the v1 thread.


Daniel.


> arch/riscv/configs/rv32_defconfig | 23 -----------------------
> 3 files changed, 21 insertions(+), 46 deletions(-)
> create mode 100644 arch/riscv/configs/extra_debug.config
>
> diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
> index e2ff95cb3390..f0710d8f50cc 100644
> --- a/arch/riscv/configs/defconfig
> +++ b/arch/riscv/configs/defconfig
> @@ -101,27 +101,4 @@ CONFIG_CRYPTO_USER_API_HASH=y
> CONFIG_CRYPTO_DEV_VIRTIO=y
> CONFIG_PRINTK_TIME=y
> CONFIG_DEBUG_FS=y
> -CONFIG_DEBUG_PAGEALLOC=y
> -CONFIG_DEBUG_VM=y
> -CONFIG_DEBUG_VM_PGFLAGS=y
> -CONFIG_DEBUG_MEMORY_INIT=y
> -CONFIG_DEBUG_PER_CPU_MAPS=y
> -CONFIG_SOFTLOCKUP_DETECTOR=y
> -CONFIG_WQ_WATCHDOG=y
> -CONFIG_SCHED_STACK_END_CHECK=y
> -CONFIG_DEBUG_TIMEKEEPING=y
> -CONFIG_DEBUG_RT_MUTEXES=y
> -CONFIG_DEBUG_SPINLOCK=y
> -CONFIG_DEBUG_MUTEXES=y
> -CONFIG_DEBUG_RWSEMS=y
> -CONFIG_DEBUG_ATOMIC_SLEEP=y
> -CONFIG_STACKTRACE=y
> -CONFIG_DEBUG_LIST=y
> -CONFIG_DEBUG_PLIST=y
> -CONFIG_DEBUG_SG=y
> # CONFIG_RCU_TRACE is not set
> -CONFIG_RCU_EQS_DEBUG=y
> -CONFIG_DEBUG_BLOCK_EXT_DEVT=y
> -# CONFIG_FTRACE is not set
> -# CONFIG_RUNTIME_TESTING_MENU is not set
> -CONFIG_MEMTEST=y
> diff --git a/arch/riscv/configs/extra_debug.config b/arch/riscv/configs/extra_debug.config
> new file mode 100644
> index 000000000000..66c58bb645a4
> --- /dev/null
> +++ b/arch/riscv/configs/extra_debug.config
> @@ -0,0 +1,21 @@
> +CONFIG_DEBUG_PAGEALLOC=y
> +CONFIG_DEBUG_VM=y
> +CONFIG_DEBUG_VM_PGFLAGS=y
> +CONFIG_DEBUG_MEMORY_INIT=y
> +CONFIG_DEBUG_PER_CPU_MAPS=y
> +CONFIG_SOFTLOCKUP_DETECTOR=y
> +CONFIG_WQ_WATCHDOG=y
> +CONFIG_SCHED_STACK_END_CHECK=y
> +CONFIG_DEBUG_TIMEKEEPING=y
> +CONFIG_DEBUG_RT_MUTEXES=y
> +CONFIG_DEBUG_SPINLOCK=y
> +CONFIG_DEBUG_MUTEXES=y
> +CONFIG_DEBUG_RWSEMS=y
> +CONFIG_DEBUG_ATOMIC_SLEEP=y
> +CONFIG_STACKTRACE=y
> +CONFIG_DEBUG_LIST=y
> +CONFIG_DEBUG_PLIST=y
> +CONFIG_DEBUG_SG=y
> +CONFIG_RCU_EQS_DEBUG=y
> +CONFIG_DEBUG_BLOCK_EXT_DEVT=y
> +CONFIG_MEMTEST=y
> diff --git a/arch/riscv/configs/rv32_defconfig b/arch/riscv/configs/rv32_defconfig
> index eb519407c841..bdec58e6c5f7 100644
> --- a/arch/riscv/configs/rv32_defconfig
> +++ b/arch/riscv/configs/rv32_defconfig
> @@ -98,27 +98,4 @@ CONFIG_CRYPTO_USER_API_HASH=y
> CONFIG_CRYPTO_DEV_VIRTIO=y
> CONFIG_PRINTK_TIME=y
> CONFIG_DEBUG_FS=y
> -CONFIG_DEBUG_PAGEALLOC=y
> -CONFIG_DEBUG_VM=y
> -CONFIG_DEBUG_VM_PGFLAGS=y
> -CONFIG_DEBUG_MEMORY_INIT=y
> -CONFIG_DEBUG_PER_CPU_MAPS=y
> -CONFIG_SOFTLOCKUP_DETECTOR=y
> -CONFIG_WQ_WATCHDOG=y
> -CONFIG_SCHED_STACK_END_CHECK=y
> -CONFIG_DEBUG_TIMEKEEPING=y
> -CONFIG_DEBUG_RT_MUTEXES=y
> -CONFIG_DEBUG_SPINLOCK=y
> -CONFIG_DEBUG_MUTEXES=y
> -CONFIG_DEBUG_RWSEMS=y
> -CONFIG_DEBUG_ATOMIC_SLEEP=y
> -CONFIG_STACKTRACE=y
> -CONFIG_DEBUG_LIST=y
> -CONFIG_DEBUG_PLIST=y
> -CONFIG_DEBUG_SG=y
> # CONFIG_RCU_TRACE is not set
> -CONFIG_RCU_EQS_DEBUG=y
> -CONFIG_DEBUG_BLOCK_EXT_DEVT=y
> -# CONFIG_FTRACE is not set
> -# CONFIG_RUNTIME_TESTING_MENU is not set
> -CONFIG_MEMTEST=y
> --
> 2.17.1
>