diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2019-01-31 08:29:32 +0200 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2019-02-02 23:48:23 +0000 |
commit | f88208e0acbcb771fdbf5ef851eb6aec12ccc188 (patch) | |
tree | 2b6d66c5cd918ab7d725239c04a1aaea06580a3f /src/arch | |
parent | 909be6a7d8ea87e23e4098a97c23e3263a80057d (diff) | |
download | coreboot-f88208e0acbcb771fdbf5ef851eb6aec12ccc188.tar.xz |
usbdebug: Fix reserve in CAR
We need sizeof(struct ehci_dbg_info) of 88 but only
reserved 64 bytes. If usbdebug_hw_init() was called
late in romstage, for some builds it would corrupt
CAR_GLOBALs like console_inited variable and stop
logging anything.
Also change pointer initialisation such that
glob_dbg_info will hit garbage collection for
PRE_RAM stages.
Change-Id: Ib49fca781e55619179aa8888e2d859560e050876
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/31174
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/x86/car.ld | 3 | ||||
-rw-r--r-- | src/arch/x86/include/arch/symbols.h | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/arch/x86/car.ld b/src/arch/x86/car.ld index 7b10f4313b..1b0d996b8a 100644 --- a/src/arch/x86/car.ld +++ b/src/arch/x86/car.ld @@ -67,7 +67,8 @@ _car_drivers_storage_end = .; #endif _car_ehci_dbg_info_start = .; - . += 64; + /* Reserve sizeof(struct ehci_dbg_info). */ + . += 88; _car_ehci_dbg_info_end = .; /* _car_global_start and _car_global_end provide symbols to per-stage * variables that are not shared like the timestamp and the pre-ram diff --git a/src/arch/x86/include/arch/symbols.h b/src/arch/x86/include/arch/symbols.h index 9ef6a3b89e..97a07c0746 100644 --- a/src/arch/x86/include/arch/symbols.h +++ b/src/arch/x86/include/arch/symbols.h @@ -35,6 +35,9 @@ extern char _car_stack_end[]; #define _car_stack_size (_car_stack_end - _car_stack_start) extern char _car_ehci_dbg_info_start[]; +extern char _car_ehci_dbg_info_end[]; +#define _car_ehci_dbg_info_size \ + (_car_ehci_dbg_info_end - _car_ehci_dbg_info_start) /* * The _car_relocatable_data_[start|end] symbols cover CAR data which is |