serial: move sbi_dbcn_available to .data section
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Mon, 26 Feb 2024 16:32:26 +0000 (17:32 +0100)
committerLeo Yu-Chi Liang <ycliang@andestech.com>
Tue, 12 Mar 2024 06:36:13 +0000 (14:36 +0800)
U-Boot SPL loads the device-tree directly behind main U-Boot overlapping
the .bss section. reserve_fdt() is called in board_init_f() to relocate the
device-tree to a safe location.

Debug UARTs are enabled before board_init_f(). With sbi_dbcn_available in
the .bss section the device-tree is corrupted when _debug_uart_init() is
called in the SBI serial driver. Move the variable to the .data section.

Link: https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/2054091
Fixes: dfe08374943c ("risc-v: implement DBCN based debug console")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Tested-by: Aurelien Jarno <aurelien@aurel32.net>
Tested-by: Conor Dooley <conor.dooley@microchip.com>
drivers/serial/serial_sbi.c

index a51a96c..f3ecfcc 100644 (file)
@@ -17,7 +17,7 @@ static inline void _debug_uart_putc(int c)
 
 #else
 
-static int sbi_dbcn_available;
+static int sbi_dbcn_available __section(".data");
 
 static inline void _debug_uart_init(void)
 {