u-boot/drivers/serial
Maksim Kiselev fa03568e46 serial-uclass: reset gd->cur_serial_dev to NULL if serial not found
Reset gd->cur_serial_dev pointer to avoid calling non-relocated code
from relocated code if a serial driver is not found and
CONFIG_REQUIRE_SERIAL_CONSOLE is disabled.

Here is detailed explanation of what this patch is trying to fix.

U-boot calls the serial_find_console_or_panic() function twice.
The first console setup occurs before U-boot relocation in
the serial_init(). This stage uses simple FDT parsing and
assigns gd->cur_serial_dev to a "serial" device that lives in
non-relocated code too.

The second console setup after U-boot relocation(from serial_initialize())
may use full live DT (if OF_LIVE enabled) probe sequence with buses,
clocks, resets, etc... And if the console setup fails at this step,
than we should be caught by panic_str("No serial driver found").

But... If we disable CONFIG_REQUIRE_SERIAL_CONSOLE, than we
return from serial_init() with gd->cur_serial_dev pointing
to the "old"(non-relocated) serial device.

And if this area, where "old" serial device is placed, is changed
(e.g. Linux kernel may be relocated at this address), than we will get
an unexpected crash on the next call of printf().

Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
2023-08-30 17:56:21 -04:00
..
altera_jtag_uart.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
altera_uart.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
arm_dcc.c serial: arm_dcc: Use CONFIG_ARM64 not CONFIG_CPU_ARMV8 2021-12-27 16:20:18 -05:00
atmel_usart.c kbuild: Remove uncmd_spl logic 2022-12-23 10:15:13 -05:00
atmel_usart.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Kconfig Kconfigs: Correct default of "0" on hex type entries 2023-08-09 09:21:42 -04:00
Makefile serial: mxs: Add MXS AUART driver 2023-05-21 16:54:41 +02:00
ns16550.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
sandbox.c video: Rename CONFIG_DM_VIDEO to CONFIG_VIDEO 2022-10-30 20:07:17 +01:00
serial-uclass.c serial-uclass: reset gd->cur_serial_dev to NULL if serial not found 2023-08-30 17:56:21 -04:00
serial.c post: Move CONFIG_SYS_POST to CFG_SYS_POST 2022-12-23 13:01:13 -05:00
serial_ar933x.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
serial_arc.c serial: Use -EAGAIN in getc and putc 2023-01-02 16:01:40 -05:00
serial_bcm283x_mu.c Correct SPL uses of OF_BOARD 2023-02-10 07:41:41 -05:00
serial_bcm283x_pl011.c Correct SPL uses of OF_BOARD 2023-02-10 07:41:41 -05:00
serial_bcm6345.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
serial_coreboot.c x86: Allow locating the UART from ACPI tables 2023-05-11 10:25:29 +08:00
serial_cortina.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
serial_efi.c efi: serial: Support arrow keys 2021-12-31 06:45:01 +01:00
serial_htif.c serial: Add RISC-V HTIF console driver 2022-02-10 11:18:12 +08:00
serial_intel_mid.c serial: Update NS16550_t and struct NS16550 2021-01-05 12:24:40 -07:00
serial_linflexuart.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
serial_lpuart.c serial: Use -EAGAIN in getc and putc 2023-01-02 16:01:40 -05:00
serial_mcf.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
serial_meson.c serial: meson: fix meson_serial_pending() tx logic 2023-06-07 10:09:20 +02:00
serial_mpc8xx.c serial, mpc8xx: Take parameter RAM relocation into account 2023-05-05 07:26:53 +02:00
serial_msm.c WS cleanup: remove trailing white space 2021-09-30 08:08:56 -04:00
serial_msm_geni.c serial: msm-geni: correct oversampling value based on QUP hardware revision 2023-05-02 14:23:59 -04:00
serial_mt7620.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
serial_mtk.c serial: mtk: initial priv data before using 2023-08-03 09:40:49 -04:00
serial_mvebu_a3700.c serial: Use -EAGAIN in getc and putc 2023-01-02 16:01:40 -05:00
serial_mxc.c serial: mxc: Speed-up character transmission 2023-01-30 23:23:02 +01:00
serial_mxs.c serial: mxs: Add MXS AUART driver 2023-05-21 16:54:41 +02:00
serial_npcm.c serial: npcm: Add support for Nuvoton NPCM SoCs 2022-05-05 09:28:47 -04:00
serial_ns16550.c global: Move remaining CONFIG_SYS_NS16550_* to CFG_SYS_NS16550_* 2022-12-05 16:06:07 -05:00
serial_nulldev.c serial: remove nulldev_serial_input 2022-02-09 12:30:13 -07:00
serial_octeon_bootcmd.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
serial_octeon_pcie_console.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
serial_omap.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
serial_owl.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
serial_pic32.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
serial_pl01x.c serial: pl01x: Modify pending callback to test if transmit FIFO is empty 2023-07-11 14:40:04 +02:00
serial_pl01x_internal.h kbuild: Remove uncmd_spl logic 2022-12-23 10:15:13 -05:00
serial_rockchip.c rockchip: serial: rename U_BOOT_DRIVER name to rockchip_uart 2022-04-18 11:25:13 +08:00
serial_s5p.c serial: s5p: Use IS_ENABLED where appropriate 2023-01-27 14:32:55 -05:00
serial_s5p4418_pl011.c arm: s5p4418: dm_serial: add driver source code 2023-01-02 16:06:08 -05:00
serial_sbi.c serial: Add a debug console using the RISC-V SBI interface 2021-10-07 16:08:23 +08:00
serial_semihosting.c serial: smh: Fake tstc 2022-06-06 18:01:21 -04:00
serial_sh.c serial: sh: Add HSCIF support for R-Car SoC 2023-04-07 17:13:28 +02:00
serial_sh.h serial: sh: Add HSCIF support for R-Car SoC 2023-04-07 17:13:28 +02:00
serial_sifive.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
serial_sti_asc.c WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
serial_stm32.c serial: stm32: extend TC timeout 2023-08-16 15:38:23 +02:00
serial_stm32.h serial: stm32: Wait TC bit before performing initialization 2023-06-16 11:29:29 +02:00
serial_uniphier.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
serial_xen.c WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
serial_xuartlite.c serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
serial_zynq.c drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
usbtty.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
usbtty.h global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00