Francis Rowe (info@gluglug.org.uk) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7041
-gerrit
commit c6779c02bcc1d77e90f07fefb063c8ee727c3f18 Author: Francis Rowe info@gluglug.org.uk Date: Fri Oct 10 21:46:36 2014 +0100
Revert "cbmem console: Locate the preram console with a symbol instead of a section."
This reverts commit 35382a6eeb6634c291ffb67a3c4fa7a4601a7328. X60/X201 were found not to boot at all with this commit. Reverting it fixes boot issue.
Change-Id: Idfe7bd5323e4936441f112f3bb65287f3ec6cd1f Signed-off-by: Francis Rowe info@gluglug.org.uk --- src/arch/arm/include/arch/early_variables.h | 1 + src/arch/x86/include/arch/early_variables.h | 2 ++ src/arch/x86/init/romstage.ld | 14 +++++++------- src/console/Kconfig | 10 +++++----- src/lib/cbmem_console.c | 5 ++--- 5 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/arch/arm/include/arch/early_variables.h b/src/arch/arm/include/arch/early_variables.h index 5b58baa..041d0ae 100644 --- a/src/arch/arm/include/arch/early_variables.h +++ b/src/arch/arm/include/arch/early_variables.h @@ -21,6 +21,7 @@ #define ARCH_EARLY_VARIABLES_H
#define CAR_GLOBAL +#define CAR_CBMEM
#define CAR_MIGRATE(migrate_fn_) static inline void *car_get_var_ptr(void *var) { return var; } diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h index 80e82d6..ea1a133 100644 --- a/src/arch/x86/include/arch/early_variables.h +++ b/src/arch/x86/include/arch/early_variables.h @@ -26,8 +26,10 @@ asm(".previous"); asm(".section .car.cbmem_console,"w",@nobits"); asm(".previous"); #define CAR_GLOBAL __attribute__((section(".car.global_data"))) +#define CAR_CBMEM __attribute__((section(".car.cbmem_console"))) #else #define CAR_GLOBAL +#define CAR_CBMEM #endif
#if defined(__PRE_RAM__) diff --git a/src/arch/x86/init/romstage.ld b/src/arch/x86/init/romstage.ld index d6eb511..5458cfc 100644 --- a/src/arch/x86/init/romstage.ld +++ b/src/arch/x86/init/romstage.ld @@ -55,15 +55,15 @@ SECTIONS .car.data . (NOLOAD) : { _car_data_start = .; *(.car.global_data); - _car_data_end = .; - /* The preram cbmem console area comes last to take advantage - * of a zero-sized array to hold the memconsole contents that - * grows to a bound of CONFIG_CONSOLE_PRERAM_BUFFER_SIZE. - * However, collisions within the cache-as-ram region cannot be + /* The cbmem_console section comes last to take advantage of + * a zero-sized array to hold the memconsole contents that + * grows to a bound of CONFIG_CONSOLE_CAR_BUFFER_SIZE. However, + * collisions within the cache-as-ram region cannot be * statically checked because the cache-as-ram region usage is * cpu/chipset dependent. */ - preram_cbmem_console = .; + *(.car.cbmem_console); + _car_data_end = .; }
- _bogus = ASSERT((SIZEOF(.car.data) + CONFIG_CONSOLE_PRERAM_BUFFER_SIZE <= CONFIG_DCACHE_RAM_SIZE), "Cache as RAM area is too full"); + _bogus = ASSERT((SIZEOF(.car.data) <= CONFIG_DCACHE_RAM_SIZE), "Cache as RAM area is too full"); } diff --git a/src/console/Kconfig b/src/console/Kconfig index 619af56..472ac5c 100644 --- a/src/console/Kconfig +++ b/src/console/Kconfig @@ -184,15 +184,15 @@ config CONSOLE_CBMEM_BUFFER_SIZE value (128K or 0x20000 bytes) is large enough to accommodate even the BIOS_SPEW level.
-config CONSOLE_PRERAM_BUFFER_SIZE +config CONSOLE_CAR_BUFFER_SIZE depends on CONSOLE_CBMEM - hex "Room allocated for console output before RAM is initialized" + hex "Room allocated for console output in Cache as RAM" default 0xc00 help Console is used before RAM is initialized. This is the room reserved - in the DCACHE based RAM, SRAM, etc. to keep console output before it - can be saved in a CBMEM buffer. 3K bytes should be enough even for - the BIOS_SPEW level. + in the DCACHE based RAM to keep console output before it can be + saved in a CBMEM buffer. 3K bytes should be enough even for the + BIOS_SPEW level.
config CONSOLE_QEMU_DEBUGCON bool "QEMU debug console output" diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c index b5b75f3..9d5419a 100644 --- a/src/lib/cbmem_console.c +++ b/src/lib/cbmem_console.c @@ -44,7 +44,7 @@ static struct cbmem_console *cbmem_console_p CAR_GLOBAL; * the area are defined in the config. */
-extern struct cbmem_console preram_cbmem_console; +static struct cbmem_console car_cbmem_console CAR_CBMEM;
#else
@@ -86,8 +86,7 @@ static inline void init_console_ptr(void *storage, u32 total_space) void cbmemc_init(void) { #ifdef __PRE_RAM__ - init_console_ptr(&preram_cbmem_console, - CONFIG_CONSOLE_PRERAM_BUFFER_SIZE); + init_console_ptr(&car_cbmem_console, CONFIG_CONSOLE_CAR_BUFFER_SIZE); #else /* * Initializing before CBMEM is available, use static buffer to store