Re: [PATCH 2/2] risc-v: implement DBCN based debug console
On 9/4/23 11:30, Chanho Park wrote: Hi, -Original Message- From: U-Boot On Behalf Of Heinrich Schuchardt Sent: Saturday, August 19, 2023 10:13 PM To: Rick Chen ; Leo Cc: Bin Meng ; Anup Patel ; u-boot@lists.denx.de; Heinrich Schuchardt Subject: [PATCH 2/2] risc-v: implement DBCN based debug console Use the DBCN SBI extension to implement a debug console. Make it the default for S-mode RISC-V. Signed-off-by: Heinrich Schuchardt --- drivers/serial/Kconfig | 3 ++- drivers/serial/serial_sbi.c | 19 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index a1e089962a..8421c5c047 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -218,6 +218,7 @@ config DEBUG_UART choice prompt "Select which UART will provide the debug UART" depends on DEBUG_UART + default DEBUG_SBI_CONSOLE if RISCV_SMODE default DEBUG_UART_NS16550 config DEBUG_UART_ALTERA_JTAGUART @@ -289,7 +290,7 @@ config DEBUG_EFI_CONSOLE config DEBUG_SBI_CONSOLE bool "SBI" - depends on SBI_V01 + depends on RISCV_SMODE help Select this to enable a debug console which calls back to SBI to output to the console. This can be useful for early debugging of diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c index b9f35ed36e..093c7309d3 100644 --- a/drivers/serial/serial_sbi.c +++ b/drivers/serial/serial_sbi.c @@ -3,6 +3,8 @@ #include #include +#ifdef CONFIG_SBI_V01 + static inline void _debug_uart_init(void) { } @@ -13,4 +15,21 @@ static inline void _debug_uart_putc(int c) sbi_console_putchar(c); } +#else + +static int sbi_dbcn_available; + +static inline void _debug_uart_init(void) { + sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN); +} + +static inline void _debug_uart_putc(int ch) { + if (sbi_dbcn_available) + sbi_dbcn_write_byte(ch); +} + +#endif + DEBUG_UART_FUNCS -- 2.40.1 I've got below error when I tried to build it with VisionFive2 board configuration(starfive_visionfive2_defconfig). To test this patch, I enabled CONFIG_DEBUG_SBI_CONSOLE. Seems like spl also includes the driver when DEBUG_SBI_CONSOLE is enabled. Do I need to do any more configurations to test this? LD spl/u-boot-spl riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function `_debug_uart_putc': /data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined reference to `sbi_dbcn_write_byte' riscv64-unknown-linux-gnu-ld.bfd: /data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined reference to `sbi_dbcn_write_byte' riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function `_debug_uart_init': /data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:24: undefined reference to `sbi_probe_extension' make[2]: *** [/data/risc-v/vf2/mainline/u-boot/scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 Best Regards, Chanho Park Hello Chanho, thanks for reporting the issue. SBI is not available in M-mode. We need a check in the driver like if (!CONFIG_IS_ENABLED(RISCV_MMODE)) I will send a new version of the series. Best regards Heinrich
RE: [PATCH 2/2] risc-v: implement DBCN based debug console
Hi, > -Original Message- > From: U-Boot On Behalf Of Heinrich > Schuchardt > Sent: Saturday, August 19, 2023 10:13 PM > To: Rick Chen ; Leo > Cc: Bin Meng ; Anup Patel ; > u-boot@lists.denx.de; Heinrich Schuchardt > > Subject: [PATCH 2/2] risc-v: implement DBCN based debug console > > Use the DBCN SBI extension to implement a debug console. > Make it the default for S-mode RISC-V. > > Signed-off-by: Heinrich Schuchardt > --- > drivers/serial/Kconfig | 3 ++- > drivers/serial/serial_sbi.c | 19 +++ > 2 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index > a1e089962a..8421c5c047 100644 > --- a/drivers/serial/Kconfig > +++ b/drivers/serial/Kconfig > @@ -218,6 +218,7 @@ config DEBUG_UART > choice > prompt "Select which UART will provide the debug UART" > depends on DEBUG_UART > + default DEBUG_SBI_CONSOLE if RISCV_SMODE > default DEBUG_UART_NS16550 > > config DEBUG_UART_ALTERA_JTAGUART > @@ -289,7 +290,7 @@ config DEBUG_EFI_CONSOLE > > config DEBUG_SBI_CONSOLE > bool "SBI" > - depends on SBI_V01 > + depends on RISCV_SMODE > help > Select this to enable a debug console which calls back to SBI to > output to the console. This can be useful for early debugging of > diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c > index b9f35ed36e..093c7309d3 100644 > --- a/drivers/serial/serial_sbi.c > +++ b/drivers/serial/serial_sbi.c > @@ -3,6 +3,8 @@ > #include > #include > > +#ifdef CONFIG_SBI_V01 > + > static inline void _debug_uart_init(void) { } @@ -13,4 +15,21 @@ static > inline void _debug_uart_putc(int c) > sbi_console_putchar(c); > } > > +#else > + > +static int sbi_dbcn_available; > + > +static inline void _debug_uart_init(void) { > + sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN); > +} > + > +static inline void _debug_uart_putc(int ch) { > + if (sbi_dbcn_available) > + sbi_dbcn_write_byte(ch); > +} > + > +#endif > + > DEBUG_UART_FUNCS > -- > 2.40.1 I've got below error when I tried to build it with VisionFive2 board configuration(starfive_visionfive2_defconfig). To test this patch, I enabled CONFIG_DEBUG_SBI_CONSOLE. Seems like spl also includes the driver when DEBUG_SBI_CONSOLE is enabled. Do I need to do any more configurations to test this? LD spl/u-boot-spl riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function `_debug_uart_putc': /data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined reference to `sbi_dbcn_write_byte' riscv64-unknown-linux-gnu-ld.bfd: /data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined reference to `sbi_dbcn_write_byte' riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function `_debug_uart_init': /data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:24: undefined reference to `sbi_probe_extension' make[2]: *** [/data/risc-v/vf2/mainline/u-boot/scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 Best Regards, Chanho Park
Re: [PATCH 2/2] risc-v: implement DBCN based debug console
On Sat, Aug 19, 2023 at 03:12:50PM +0200, Heinrich Schuchardt wrote: > Use the DBCN SBI extension to implement a debug console. > Make it the default for S-mode RISC-V. > > Signed-off-by: Heinrich Schuchardt > --- > drivers/serial/Kconfig | 3 ++- > drivers/serial/serial_sbi.c | 19 +++ > 2 files changed, 21 insertions(+), 1 deletion(-) Reviewed-by: Leo Yu-Chi Liang
[PATCH 2/2] risc-v: implement DBCN based debug console
Use the DBCN SBI extension to implement a debug console. Make it the default for S-mode RISC-V. Signed-off-by: Heinrich Schuchardt --- drivers/serial/Kconfig | 3 ++- drivers/serial/serial_sbi.c | 19 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index a1e089962a..8421c5c047 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -218,6 +218,7 @@ config DEBUG_UART choice prompt "Select which UART will provide the debug UART" depends on DEBUG_UART + default DEBUG_SBI_CONSOLE if RISCV_SMODE default DEBUG_UART_NS16550 config DEBUG_UART_ALTERA_JTAGUART @@ -289,7 +290,7 @@ config DEBUG_EFI_CONSOLE config DEBUG_SBI_CONSOLE bool "SBI" - depends on SBI_V01 + depends on RISCV_SMODE help Select this to enable a debug console which calls back to SBI to output to the console. This can be useful for early debugging of diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c index b9f35ed36e..093c7309d3 100644 --- a/drivers/serial/serial_sbi.c +++ b/drivers/serial/serial_sbi.c @@ -3,6 +3,8 @@ #include #include +#ifdef CONFIG_SBI_V01 + static inline void _debug_uart_init(void) { } @@ -13,4 +15,21 @@ static inline void _debug_uart_putc(int c) sbi_console_putchar(c); } +#else + +static int sbi_dbcn_available; + +static inline void _debug_uart_init(void) +{ + sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN); +} + +static inline void _debug_uart_putc(int ch) +{ + if (sbi_dbcn_available) + sbi_dbcn_write_byte(ch); +} + +#endif + DEBUG_UART_FUNCS -- 2.40.1