[coreboot-gerrit] Patch set updated for coreboot: 85383d8 nehalem: Move cbmem_recovery call to raminit.
Vladimir Serbinenko (phcoder@gmail.com)
gerrit at coreboot.org
Fri Jun 13 22:41:54 CEST 2014
Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5954
-gerrit
commit 85383d855196cfe1a0780f04d3865a0cd08252bb
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date: Sat Jun 7 16:27:27 2014 +0200
nehalem: Move cbmem_recovery call to raminit.
Currently cbmem_recovery is done in raminit only on non-S3-resume path
do it on both paths to reduce confusion.
Change-Id: I16161ad449b9802a855fcf834aa721f4f65c0bb4
Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
src/mainboard/lenovo/x201/romstage.c | 10 ----------
src/mainboard/packardbell/ms2290/romstage.c | 10 ----------
src/northbridge/intel/nehalem/raminit.c | 17 ++++++++++++++++-
3 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/src/mainboard/lenovo/x201/romstage.c b/src/mainboard/lenovo/x201/romstage.c
index 1237a5c..232b3d8 100644
--- a/src/mainboard/lenovo/x201/romstage.c
+++ b/src/mainboard/lenovo/x201/romstage.c
@@ -323,16 +323,6 @@ void main(unsigned long bist)
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
diff --git a/src/mainboard/packardbell/ms2290/romstage.c b/src/mainboard/packardbell/ms2290/romstage.c
index 6a18dd6..d3744a5 100644
--- a/src/mainboard/packardbell/ms2290/romstage.c
+++ b/src/mainboard/packardbell/ms2290/romstage.c
@@ -300,16 +300,6 @@ void main(unsigned long bist)
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
diff --git a/src/northbridge/intel/nehalem/raminit.c b/src/northbridge/intel/nehalem/raminit.c
index 978ffbf..0983e85 100644
--- a/src/northbridge/intel/nehalem/raminit.c
+++ b/src/northbridge/intel/nehalem/raminit.c
@@ -1718,7 +1718,6 @@ static void save_timings(struct raminfo *info)
printk (BIOS_SPEW, "[6e8] = %x\n", train.reg_6e8);
/* Save the MRC S3 restore data to cbmem */
- cbmem_recovery(0);
mrcdata = cbmem_add
(CBMEM_ID_MRCDATA, output_len + sizeof(struct mrc_data_container));
@@ -3871,6 +3870,7 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
struct raminfo info;
u8 x2ca8;
u16 deven;
+ int cbmem_wasnot_inited;
x2ca8 = read_mchbar8(0x2ca8);
deven = pcie_read_config16(NORTHBRIDGE, D0F0_DEVEN);
@@ -4975,8 +4975,23 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
#if REAL
udelay(1000);
dump_timings(&info);
+ cbmem_wasnot_inited = cbmem_recovery(s3resume);
+
if (!s3resume)
save_timings(&info);
+ if (s3resume && cbmem_wasnot_inited) {
+ u32 reg32;
+ printk(BIOS_ERR, "Failed S3 resume.\n");
+ ram_check(0x100000, 0x200000);
+
+ /* Clear SLP_TYPE. */
+ reg32 = inl(DEFAULT_PMBASE + 0x04);
+ outl(reg32 & ~(7 << 10), DEFAULT_PMBASE + 0x04);
+
+ /* Failed S3 resume, reset to come up cleanly */
+ outb(0xe, 0xcf9);
+ hlt();
+ }
#endif
}
More information about the coreboot-gerrit
mailing list