aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/lenovo/x201/romstage.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/mainboard/lenovo/x201/romstage.c b/src/mainboard/lenovo/x201/romstage.c
index 57e1e505a0..5eb4fb9dd4 100644
--- a/src/mainboard/lenovo/x201/romstage.c
+++ b/src/mainboard/lenovo/x201/romstage.c
@@ -230,7 +230,6 @@ static inline u16 read_acpi16(u32 addr)
void main(unsigned long bist)
{
u32 reg32;
- int cbmem_initted;
int s3resume = 0;
timestamp_init(rdtsc ());
@@ -327,18 +326,24 @@ void main(unsigned long bist)
outl(reg32 & ~(7 << 10), DEFAULT_PMBASE + 0x04);
}
- /* FIXME: If not in s3resume, raminit() calls cbmem_recovery(0),
- * clears all of CBMEM region and puts in MRC training results.
- * Tell here we are doing resume to avoid wiping CBMEM region
- * again. */
- cbmem_initted = !cbmem_recovery(1);
-
#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 (s3resume && cbmem_initted) {
- void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
+ if (s3resume) {
+ void *resume_backup_memory;
+
+ /* For non-S3-resume, CBMEM is inited in raminit code. */
+ if (cbmem_recovery(1)) {
+ printk(BIOS_ERR, "Failed S3 resume.\n");
+ ram_check(0x100000, 0x200000);
+
+ /* Failed S3 resume, reset to come up cleanly */
+ outb(0xe, 0xcf9);
+ hlt();
+ }
+
+ resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
* through stage 2. We could keep stuff like stack and heap in high tables
@@ -351,13 +356,6 @@ void main(unsigned long bist)
/* Magic for S3 resume */
pci_write_config32(PCI_DEV(0, 0x00, 0), SKPAD, 0xcafed00d);
- } else if (s3resume) {
- printk(BIOS_ERR, "Failed S3 resume.\n");
- ram_check(0x100000, 0x200000);
-
- /* Failed S3 resume, reset to come up cleanly */
- outb(0xe, 0xcf9);
- hlt();
} else {
pci_write_config32(PCI_DEV(0, 0x00, 0), SKPAD, 0xcafebabe);
quick_ram_check();