summaryrefslogtreecommitdiff
path: root/src/soc/intel/broadwell/romstage/raminit.c
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2018-12-22 16:11:52 +0100
committerPatrick Georgi <pgeorgi@google.com>2019-05-15 17:57:18 +0000
commit4d56a0625516ba436903d59d9c0a4a13827d89be (patch)
tree764641e18971d6e4e54a9e0142595dc3104da106 /src/soc/intel/broadwell/romstage/raminit.c
parent5bb15f1a4d18bafaf51b17fd9ea6d861f2b9ebd2 (diff)
downloadcoreboot-4d56a0625516ba436903d59d9c0a4a13827d89be.tar.xz
nb/intel/broadwell: Add an option for where verstage starts
Previously broadwell used a romcc bootblock and starting verstage in romstage was madatory but with C_ENVIRONMENT_BOOTBLOCK it is also possible to have a separate verstage. This selects using a separate verstage by default but still keeps the option around to use verstage in romstage. With a separate verstage the romstage becomes an RW stage. The mrc.bin however is only added to the RO COREBOOT fmap region as it requires to be run at a specific offset. This means that coreboot will have to jump from a RW region to the RO region for that binary and back to that RW region after that binary is done initializing the memory. Change-Id: I900233cadb3c76da329fb98f93917570e633365f Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/30384 Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Matt DeVillier <matt.devillier@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/intel/broadwell/romstage/raminit.c')
-rw-r--r--src/soc/intel/broadwell/romstage/raminit.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/soc/intel/broadwell/romstage/raminit.c b/src/soc/intel/broadwell/romstage/raminit.c
index 8d43907f8a..fc8b7c6984 100644
--- a/src/soc/intel/broadwell/romstage/raminit.c
+++ b/src/soc/intel/broadwell/romstage/raminit.c
@@ -45,6 +45,8 @@ void raminit(struct pei_data *pei_data)
struct memory_info *mem_info;
pei_wrapper_entry_t entry;
int ret;
+ struct cbfsf f;
+ uint32_t type = CBFS_TYPE_MRC;
broadwell_fill_pei_data(pei_data);
@@ -77,7 +79,10 @@ void raminit(struct pei_data *pei_data)
}
/* Determine if mrc.bin is in the cbfs. */
- entry = cbfs_boot_map_with_leak("mrc.bin", CBFS_TYPE_MRC, NULL);
+ if (cbfs_locate_file_in_region(&f, "COREBOOT", "mrc.bin", &type) < 0)
+ die("mrc.bin not found!");
+ /* We don't care about leaking the mapping */
+ entry = (pei_wrapper_entry_t)rdev_mmap_full(&f.data);
if (entry == NULL) {
printk(BIOS_DEBUG, "Couldn't find mrc.bin\n");
return;