summaryrefslogtreecommitdiff
path: root/src/northbridge/intel
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2014-01-04 11:02:45 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2014-01-15 15:33:54 +0100
commit78938481eb3b4a11950d7c37627bf4704eb6e7da (patch)
tree326709d3d340e5c7a0238392fb29a2f6ad06b5b9 /src/northbridge/intel
parent1e5cacc8f81666818450ec2ca783367af2fdf56c (diff)
Intel (sandy/ivy): Avoid calling cbmem_initialize() twice
Delay the copying of MRC cache data from CAR to CBMEM until after sdram_initialize() returns and cbmem_initialize() completes. Calling cbmem_initialize() twice would complicate the decision logic of when CBMEM area needs to be wiped clean. Change-Id: Ic59e94cb2436293efc47b52f7418f5dbf76c714a Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/4666 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@google.com>
Diffstat (limited to 'src/northbridge/intel')
-rw-r--r--src/northbridge/intel/sandybridge/raminit.c7
-rw-r--r--src/northbridge/intel/sandybridge/raminit.h1
2 files changed, 2 insertions, 6 deletions
diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c
index 3b6557199f..b9c3839e15 100644
--- a/src/northbridge/intel/sandybridge/raminit.c
+++ b/src/northbridge/intel/sandybridge/raminit.c
@@ -54,7 +54,7 @@
#define CMOS_OFFSET_MRC_SEED_CHK 160
#endif
-static void save_mrc_data(struct pei_data *pei_data)
+void save_mrc_data(struct pei_data *pei_data)
{
u16 c1, c2, checksum;
@@ -63,7 +63,6 @@ static void save_mrc_data(struct pei_data *pei_data)
int output_len = ALIGN(pei_data->mrc_output_len, 16);
/* Save the MRC S3 restore data to cbmem */
- cbmem_initialize();
mrcdata = cbmem_add
(CBMEM_ID_MRCDATA,
output_len + sizeof(struct mrc_data_container));
@@ -297,8 +296,4 @@ void sdram_initialize(struct pei_data *pei_data)
post_system_agent_init(pei_data);
report_memory_config();
-
- /* S3 resume: don't save scrambler seed or MRC data */
- if (pei_data->boot_mode != 2)
- save_mrc_data(pei_data);
}
diff --git a/src/northbridge/intel/sandybridge/raminit.h b/src/northbridge/intel/sandybridge/raminit.h
index 2e9b1f32f4..c3b1c2a782 100644
--- a/src/northbridge/intel/sandybridge/raminit.h
+++ b/src/northbridge/intel/sandybridge/raminit.h
@@ -30,6 +30,7 @@ struct sys_info {
} __attribute__ ((packed));
void sdram_initialize(struct pei_data *pei_data);
+void save_mrc_data(struct pei_data *pei_data);
int fixup_sandybridge_errata(void);
#endif /* RAMINIT_H */