[coreboot-gerrit] New patch to review for coreboot: 11307f2 Lenovo ThinkPad X60: Add cbmem and cbmem console support.

Denis Carikli (GNUtoo@no-log.org) gerrit at coreboot.org
Fri Apr 26 14:15:28 CEST 2013


Denis Carikli (GNUtoo at no-log.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3142

-gerrit

commit 11307f22333c34e0a4d91896a7336e05574d5e21
Author: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>
Date:   Fri Apr 26 12:21:41 2013 +0200

    Lenovo ThinkPad X60: Add cbmem and cbmem console support.
    
    This commit was tested in grub2(as a payload) with
     the cbmemc command, And in userspace with ./cbmem -c
    Both worked.
    
    Change-Id: I34618a55ded7292a411bc232eb76267eec17d91e
    Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>
---
 src/mainboard/lenovo/x60/Kconfig    |  1 +
 src/mainboard/lenovo/x60/romstage.c | 14 ++++++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/mainboard/lenovo/x60/Kconfig b/src/mainboard/lenovo/x60/Kconfig
index 611f932..1431a2f 100644
--- a/src/mainboard/lenovo/x60/Kconfig
+++ b/src/mainboard/lenovo/x60/Kconfig
@@ -24,6 +24,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
 	select HAVE_ACPI_RESUME
 	select USE_OPTION_TABLE
 	select MAINBOARD_HAS_NATIVE_VGA_INIT
+	select EARLY_CBMEM_INIT
 
 config MAINBOARD_DIR
 	string
diff --git a/src/mainboard/lenovo/x60/romstage.c b/src/mainboard/lenovo/x60/romstage.c
index 8d5f922..d3c1d8a 100644
--- a/src/mainboard/lenovo/x60/romstage.c
+++ b/src/mainboard/lenovo/x60/romstage.c
@@ -29,6 +29,7 @@
 #include <device/pnp_def.h>
 #include <cpu/x86/lapic.h>
 #include <lib.h>
+#include <cbmem.h>
 #include <pc80/mc146818rtc.h>
 #include <console/console.h>
 #include <cpu/x86/bist.h>
@@ -216,6 +217,7 @@ void main(unsigned long bist)
 {
 	u32 reg32;
 	int boot_mode = 0;
+	int cbmem_was_initted;
 	const u8 spd_addrmap[2 * DIMM_SOCKETS] = { 0x50, 0x52, 0x51, 0x53 };
 
 	if (bist == 0)
@@ -314,14 +316,13 @@ void main(unsigned long bist)
 
 	MCHBAR16(SSKPD) = 0xCAFE;
 
-#if CONFIG_HAVE_ACPI_RESUME
-	/* Start address of high memory tables */
-	unsigned long high_ram_base = get_top_of_ram() - HIGH_MEMORY_SIZE;
+	cbmem_was_initted = !cbmem_initialize();
 
+#if CONFIG_HAVE_ACPI_RESUME
 	/* If there is no high memory area, we didn't boot before, so
 	 * this is not a resume. In that case we just create the cbmem toc.
 	 */
-	if ((boot_mode == 2) && cbmem_reinit((u64)high_ram_base)) {
+	if ((boot_mode == 2) && cbmem_was_initted) {
 		void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
 
 		/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
@@ -336,4 +337,9 @@ void main(unsigned long bist)
 		pci_write_config32(PCI_DEV(0, 0x00, 0), SKPAD, SKPAD_ACPI_S3_MAGIC);
 	}
 #endif
+
+#if CONFIG_CONSOLE_CBMEM
+        /* Keep this the last thing this function does. */
+        cbmemc_reinit();
+#endif
 }



More information about the coreboot-gerrit mailing list