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@google.com>
Reviewed-on: http://review.coreboot.org/872
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
This commit is contained in:
Stefan Reinauer 2012-04-03 16:21:04 -07:00 committed by Stefan Reinauer
parent 5b6404e419
commit 61f4a744c0
1 changed files with 13 additions and 4 deletions

View File

@ -27,13 +27,15 @@
#define HIGH_MEMORY_DEF_SIZE ( 128 * 1024 ) #define HIGH_MEMORY_DEF_SIZE ( 128 * 1024 )
#endif #endif
#ifndef __PRE_RAM__
extern uint64_t high_tables_base, high_tables_size;
#endif
#if CONFIG_HAVE_ACPI_RESUME #if CONFIG_HAVE_ACPI_RESUME
#define HIGH_MEMORY_SIZE ((CONFIG_RAMTOP - CONFIG_RAMBASE) + HIGH_MEMORY_DEF_SIZE) #define HIGH_MEMORY_SIZE ((CONFIG_RAMTOP - CONFIG_RAMBASE) + HIGH_MEMORY_DEF_SIZE)
#define HIGH_MEMORY_SAVE ( HIGH_MEMORY_SIZE - HIGH_MEMORY_DEF_SIZE ) #define HIGH_MEMORY_SAVE ( HIGH_MEMORY_SIZE - HIGH_MEMORY_DEF_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
#else #else
#define HIGH_MEMORY_SIZE HIGH_MEMORY_DEF_SIZE #define HIGH_MEMORY_SIZE HIGH_MEMORY_DEF_SIZE
#endif #endif
@ -47,9 +49,15 @@ extern uint64_t high_tables_base, high_tables_size;
#define CBMEM_ID_RESUME 0x5245534d #define CBMEM_ID_RESUME 0x5245534d
#define CBMEM_ID_SMBIOS 0x534d4254 #define CBMEM_ID_SMBIOS 0x534d4254
#define CBMEM_ID_TIMESTAMP 0x54494d45 #define CBMEM_ID_TIMESTAMP 0x54494d45
#define CBMEM_ID_MRCDATA 0x4d524344
#define CBMEM_ID_CONSOLE 0x434f4e53 #define CBMEM_ID_CONSOLE 0x434f4e53
#define CBMEM_ID_NONE 0x00000000 #define CBMEM_ID_NONE 0x00000000
#ifndef __ASSEMBLER__
#ifndef __PRE_RAM__
extern uint64_t high_tables_base, high_tables_size;
#endif
int cbmem_initialize(void); int cbmem_initialize(void);
void cbmem_init(u64 baseaddr, u64 size); 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 *); void set_cbmem_toc(struct cbmem_entry *);
#endif #endif
#endif #endif
#endif