[coreboot-gerrit] Patch set updated for coreboot: cbb76b1 Revert "cbmem console: Locate the preram console with a symbol instead of a section."

Francis Rowe (info@gluglug.org.uk) gerrit at coreboot.org
Sat Oct 11 01:42:34 CEST 2014


Francis Rowe (info at gluglug.org.uk) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7041

-gerrit

commit cbb76b18d78ccb5ede03916bf805497c615528b3
Author: Francis Rowe <info at 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, X201t and Google/panther (Haswell) were found not to boot at all with this commit. Reverting it fixes boot issue.
    
    Change-Id: Idfe7bd5323e4936441f112f3bb65287f3ec6cd1f
    Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
    Signed-off-by: Francis Rowe <info at 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\", at 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



More information about the coreboot-gerrit mailing list