[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <68da3e6d.050a0220.c13dc.0f9a@mx.google.com>
Date: Mon, 29 Sep 2025 10:08:11 +0200
From: Miquel Sabaté Solà <mikisabate@...il.com>
To: linux-riscv@...ts.infradead.org
Cc: linux-kernel@...r.kernel.org, pjw@...nel.org, palmer@...belt.com,
alex@...ti.fr, wangyuli@...ontech.com
Subject: Re: [PATCH] riscv: kgdb: Ensure that BUFMAX > NUMREGBYTES
Miquel Sabaté Solà @ 2025-09-15 16:32 +02:
> The current value of BUFMAX is similar as in other architectures, but as
> per documentation on KGDB (see
> 'Documentation/process/debugging/kgdb.rst'), BUFMAX has to be larger
> than NUMREGBYTES.
>
> Some NUMREGBYTES architectures (e.g. powerpc or hexagon) actually define
> BUFMAX in relation to NUMREGBYTES, and thus this condition is always
> guaranteed. Since 2048 is a value that is generally accepted on all
> architectures, and that is larger than the current value of NUMREGBYTES,
> we can keep this value in arch/riscv, but we can at least add an
> 'static_assert' as an extra measure just in case NUMREGBYTES changes in
> the future for some unforseen reason.
>
> Signed-off-by: Miquel Sabaté Solà <mikisabate@...il.com>
> ---
> arch/riscv/include/asm/kgdb.h | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/include/asm/kgdb.h b/arch/riscv/include/asm/kgdb.h
> index cc11c4544cff..66ff46e434fa 100644
> --- a/arch/riscv/include/asm/kgdb.h
> +++ b/arch/riscv/include/asm/kgdb.h
> @@ -3,14 +3,18 @@
> #ifndef __ASM_KGDB_H_
> #define __ASM_KGDB_H_
>
> +#include <linux/build_bug.h>
> +
> #ifdef __KERNEL__
>
> #define GDB_SIZEOF_REG sizeof(unsigned long)
>
> -#define DBG_MAX_REG_NUM (36)
> -#define NUMREGBYTES ((DBG_MAX_REG_NUM) * GDB_SIZEOF_REG)
> +#define DBG_MAX_REG_NUM 36
> +#define NUMREGBYTES (DBG_MAX_REG_NUM * GDB_SIZEOF_REG)
> #define CACHE_FLUSH_IS_SAFE 1
> #define BUFMAX 2048
> +static_assert(BUFMAX > NUMREGBYTES,
> + "As per KGDB documentation, BUFMAX must be larger than NUMREGBYTES");
> #ifdef CONFIG_RISCV_ISA_C
> #define BREAK_INSTR_SIZE 2
> #else
> @@ -97,6 +101,7 @@ extern unsigned long kgdb_compiled_break;
> #define DBG_REG_STATUS_OFF 33
> #define DBG_REG_BADADDR_OFF 34
> #define DBG_REG_CAUSE_OFF 35
> +/* NOTE: increase DBG_MAX_REG_NUM if you add more values here. */
>
> extern const char riscv_gdb_stub_feature[64];
Gentle ping :)
Download attachment "signature.asc" of type "application/pgp-signature" (902 bytes)
Powered by blists - more mailing lists