[coreboot] New patch to review for coreboot: 5a596f7 Add constants for fast path resume copying

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Thu Apr 5 21:27:49 CEST 2012

Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/872


commit 5a596f7a8fb66d12c2888d8bb91ea883c2fceea0
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Tue Apr 3 16:21:04 2012 -0700

    Add constants for fast path resume copying
    cache as ram does not usually cache the ram before it is up. Hence,
    if romstage.c backs up resume memory, the involved memcpy is always
    uncached. This makes resume very slow.
    On Sandybridge we copy the memory later, after enabling caching, and
    that allows us to resume in as little as 250ms.
    Change-Id: I31a71ad4468679d39880cf9a8c4e497bb7addf8f
    Signed-off-by: Stefan Reinauer <reinauer at google.com>
 src/include/cbmem.h |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/include/cbmem.h b/src/include/cbmem.h
index 6a48dd2..c55a7ca 100644
--- a/src/include/cbmem.h
+++ b/src/include/cbmem.h
@@ -27,13 +27,15 @@
 #define HIGH_MEMORY_DEF_SIZE	( 128 * 1024 )
-#ifndef __PRE_RAM__
-extern uint64_t high_tables_base, high_tables_size;
+/* Delegation of resume backup memory so we don't have to
+ * (slowly) handle backing up OS memory in romstage.c
+ */
+#define CBMEM_BOOT_MODE		0x610
+#define CBMEM_RESUME_BACKUP	0x614
@@ -47,9 +49,15 @@ extern uint64_t high_tables_base, high_tables_size;
 #define CBMEM_ID_RESUME		0x5245534d
 #define CBMEM_ID_SMBIOS         0x534d4254
 #define CBMEM_ID_TIMESTAMP	0x54494d45
+#define CBMEM_ID_MRCDATA	0x4d524344
 #define CBMEM_ID_CONSOLE	0x434f4e53
 #define CBMEM_ID_NONE		0x00000000
+#ifndef __ASSEMBLER__
+#ifndef __PRE_RAM__
+extern uint64_t high_tables_base, high_tables_size;
 int cbmem_initialize(void);
 void cbmem_init(u64 baseaddr, u64 size);
@@ -65,3 +73,4 @@ extern struct cbmem_entry *get_cbmem_toc(void);
 void set_cbmem_toc(struct cbmem_entry *);

More information about the coreboot mailing list