* [PATCH 0/2] risc-v: implement DBCN based debug console @ 2023-08-19 13:12 Heinrich Schuchardt 2023-08-19 13:12 ` [PATCH 1/2] risc-v: implement DBCN write byte Heinrich Schuchardt 2023-08-19 13:12 ` [PATCH 2/2] risc-v: implement DBCN based debug console Heinrich Schuchardt 0 siblings, 2 replies; 7+ messages in thread From: Heinrich Schuchardt @ 2023-08-19 13:12 UTC (permalink / raw) To: Rick Chen, Leo; +Cc: Bin Meng, Anup Patel, u-boot, Heinrich Schuchardt Currently we only offer an SBI based debug UART for SBI v0.1. With OpenSBI 1.3 the Debug Console Extension (DBCN) has become available. This allows us to implement a debug UART in a device independent manor. Heinrich Schuchardt (2): risc-v: implement DBCN write byte risc-v: implement DBCN based debug console arch/riscv/include/asm/sbi.h | 1 + arch/riscv/lib/sbi.c | 16 ++++++++++++++++ drivers/serial/Kconfig | 3 ++- drivers/serial/serial_sbi.c | 19 +++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) -- 2.40.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] risc-v: implement DBCN write byte 2023-08-19 13:12 [PATCH 0/2] risc-v: implement DBCN based debug console Heinrich Schuchardt @ 2023-08-19 13:12 ` Heinrich Schuchardt 2023-09-04 3:47 ` Leo Liang 2023-08-19 13:12 ` [PATCH 2/2] risc-v: implement DBCN based debug console Heinrich Schuchardt 1 sibling, 1 reply; 7+ messages in thread From: Heinrich Schuchardt @ 2023-08-19 13:12 UTC (permalink / raw) To: Rick Chen, Leo; +Cc: Bin Meng, Anup Patel, u-boot, Heinrich Schuchardt The DBCN extension provides a Console Write Byte call. Implement function sbi_dbcn_write_byte to invoke it. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> --- arch/riscv/include/asm/sbi.h | 1 + arch/riscv/lib/sbi.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 009a26885c..bf4c9af622 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -170,5 +170,6 @@ int sbi_get_mvendorid(long *mvendorid); int sbi_get_marchid(long *marchid); int sbi_get_mimpid(long *mimpid); void sbi_srst_reset(unsigned long type, unsigned long reason); +int sbi_dbcn_write_byte(unsigned char ch); #endif diff --git a/arch/riscv/lib/sbi.c b/arch/riscv/lib/sbi.c index 8724e3a460..55a3bc3b5c 100644 --- a/arch/riscv/lib/sbi.c +++ b/arch/riscv/lib/sbi.c @@ -204,6 +204,22 @@ void sbi_srst_reset(unsigned long type, unsigned long reason) 0, 0, 0, 0); } +/** + * sbi_dbcn_write_byte() - write byte to debug console + * + * @ch: byte to be written + * Return: SBI error code (SBI_SUCCESS = 0 on success) + */ +int sbi_dbcn_write_byte(unsigned char ch) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_DBCN, + SBI_EXT_DBCN_CONSOLE_WRITE_BYTE, + ch, 0, 0, 0, 0, 0); + return ret.error; +} + #ifdef CONFIG_SBI_V01 /** -- 2.40.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] risc-v: implement DBCN write byte 2023-08-19 13:12 ` [PATCH 1/2] risc-v: implement DBCN write byte Heinrich Schuchardt @ 2023-09-04 3:47 ` Leo Liang 0 siblings, 0 replies; 7+ messages in thread From: Leo Liang @ 2023-09-04 3:47 UTC (permalink / raw) To: Heinrich Schuchardt; +Cc: Rick Chen, Bin Meng, Anup Patel, u-boot On Sat, Aug 19, 2023 at 03:12:49PM +0200, Heinrich Schuchardt wrote: > The DBCN extension provides a Console Write Byte call. > Implement function sbi_dbcn_write_byte to invoke it. > > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> > --- > arch/riscv/include/asm/sbi.h | 1 + > arch/riscv/lib/sbi.c | 16 ++++++++++++++++ > 2 files changed, 17 insertions(+) Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] risc-v: implement DBCN based debug console 2023-08-19 13:12 [PATCH 0/2] risc-v: implement DBCN based debug console Heinrich Schuchardt 2023-08-19 13:12 ` [PATCH 1/2] risc-v: implement DBCN write byte Heinrich Schuchardt @ 2023-08-19 13:12 ` Heinrich Schuchardt 2023-09-04 3:49 ` Leo Liang 2023-09-04 9:30 ` Chanho Park 1 sibling, 2 replies; 7+ messages in thread From: Heinrich Schuchardt @ 2023-08-19 13:12 UTC (permalink / raw) To: Rick Chen, Leo; +Cc: Bin Meng, Anup Patel, u-boot, Heinrich Schuchardt Use the DBCN SBI extension to implement a debug console. Make it the default for S-mode RISC-V. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> --- 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 <debug_uart.h> #include <asm/sbi.h> +#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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] risc-v: implement DBCN based debug console 2023-08-19 13:12 ` [PATCH 2/2] risc-v: implement DBCN based debug console Heinrich Schuchardt @ 2023-09-04 3:49 ` Leo Liang 2023-09-04 9:30 ` Chanho Park 1 sibling, 0 replies; 7+ messages in thread From: Leo Liang @ 2023-09-04 3:49 UTC (permalink / raw) To: Heinrich Schuchardt; +Cc: Rick Chen, Bin Meng, Anup Patel, u-boot 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 <heinrich.schuchardt@canonical.com> > --- > drivers/serial/Kconfig | 3 ++- > drivers/serial/serial_sbi.c | 19 +++++++++++++++++++ > 2 files changed, 21 insertions(+), 1 deletion(-) Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 2/2] risc-v: implement DBCN based debug console 2023-08-19 13:12 ` [PATCH 2/2] risc-v: implement DBCN based debug console Heinrich Schuchardt 2023-09-04 3:49 ` Leo Liang @ 2023-09-04 9:30 ` Chanho Park 2023-09-04 10:22 ` Heinrich Schuchardt 1 sibling, 1 reply; 7+ messages in thread From: Chanho Park @ 2023-09-04 9:30 UTC (permalink / raw) To: 'Heinrich Schuchardt', 'Rick Chen', 'Leo' Cc: 'Bin Meng', 'Anup Patel', u-boot Hi, > -----Original Message----- > From: U-Boot <u-boot-bounces@lists.denx.de> On Behalf Of Heinrich > Schuchardt > Sent: Saturday, August 19, 2023 10:13 PM > To: Rick Chen <rick@andestech.com>; Leo <ycliang@andestech.com> > Cc: Bin Meng <bmeng.cn@gmail.com>; Anup Patel <apatel@ventanamicro.com>; > u-boot@lists.denx.de; Heinrich Schuchardt > <heinrich.schuchardt@canonical.com> > 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 <heinrich.schuchardt@canonical.com> > --- > 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 <debug_uart.h> > #include <asm/sbi.h> > > +#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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] risc-v: implement DBCN based debug console 2023-09-04 9:30 ` Chanho Park @ 2023-09-04 10:22 ` Heinrich Schuchardt 0 siblings, 0 replies; 7+ messages in thread From: Heinrich Schuchardt @ 2023-09-04 10:22 UTC (permalink / raw) To: Chanho Park Cc: 'Bin Meng', 'Anup Patel', u-boot, 'Leo', 'Rick Chen' On 9/4/23 11:30, Chanho Park wrote: > Hi, > >> -----Original Message----- >> From: U-Boot <u-boot-bounces@lists.denx.de> On Behalf Of Heinrich >> Schuchardt >> Sent: Saturday, August 19, 2023 10:13 PM >> To: Rick Chen <rick@andestech.com>; Leo <ycliang@andestech.com> >> Cc: Bin Meng <bmeng.cn@gmail.com>; Anup Patel <apatel@ventanamicro.com>; >> u-boot@lists.denx.de; Heinrich Schuchardt >> <heinrich.schuchardt@canonical.com> >> 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 <heinrich.schuchardt@canonical.com> >> --- >> 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 <debug_uart.h> >> #include <asm/sbi.h> >> >> +#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 ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-09-04 10:22 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-19 13:12 [PATCH 0/2] risc-v: implement DBCN based debug console Heinrich Schuchardt 2023-08-19 13:12 ` [PATCH 1/2] risc-v: implement DBCN write byte Heinrich Schuchardt 2023-09-04 3:47 ` Leo Liang 2023-08-19 13:12 ` [PATCH 2/2] risc-v: implement DBCN based debug console Heinrich Schuchardt 2023-09-04 3:49 ` Leo Liang 2023-09-04 9:30 ` Chanho Park 2023-09-04 10:22 ` Heinrich Schuchardt
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox