vboot: inject vboot loader for stage loading

As previously done the vboot loader can be optionally
inserted in the stage loading logic in order to
decide the source of each stage. This current patch
allows for verstage to be loaded and interrogated
for the source of all subsequent stages. Additionally,
it's also possible to build this logic directly into
one of the additional stages.

Note that this patch does not allow x86 to work.

Change-Id: Iece018f01b220720c2803dc73c60b2c080d637d0
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/10154
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Tested-by: build bot (Jenkins)
This commit is contained in:
Aaron Durbin
2015-05-01 16:48:54 -05:00
committed by Patrick Georgi
parent 01562b6cb5
commit 17200ad5fb
12 changed files with 279 additions and 187 deletions

View File

@@ -34,6 +34,7 @@ verstage-y += prog_ops.c
verstage-y += delay.c
verstage-y += cbfs.c
verstage-y += cbfs_core.c
verstage-y += halt.c
verstage-y += memcmp.c
verstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
verstage-$(CONFIG_CONSOLE_CBMEM) += cbmem_console.c

View File

@@ -23,3 +23,5 @@ romstage-y += cbfs_ramstage_loader.c
romstage-y += load_and_run_ramstage.c
ramstage-y += cbfs_payload_loader.c
ramstage-y += load_and_run_payload.c
verstage-y += cbfs_romstage_loader.c
verstage-y += load_and_run_romstage.c

View File

@@ -27,12 +27,12 @@
#include <symbols.h>
#include <timestamp.h>
extern const struct prog_loader_ops vboot_payload_loader;
extern const struct prog_loader_ops vboot_loader;
extern const struct prog_loader_ops cbfs_payload_loader;
static const struct prog_loader_ops *payload_ops[] = {
#if CONFIG_VBOOT_VERIFY_FIRMWARE
&vboot_payload_loader,
&vboot_loader,
#endif
&cbfs_payload_loader,
};

View File

@@ -27,11 +27,11 @@
#include <timestamp.h>
extern const struct prog_loader_ops cbfs_ramstage_loader;
extern const struct prog_loader_ops vboot_ramstage_loader;
extern const struct prog_loader_ops vboot_loader;
static const struct prog_loader_ops *loaders[] = {
#if CONFIG_VBOOT_VERIFY_FIRMWARE
&vboot_ramstage_loader,
&vboot_loader,
#endif
&cbfs_ramstage_loader,
};

View File

@@ -24,12 +24,19 @@
#include <cbfs.h>
#include <halt.h>
#include <program_loading.h>
#include <rules.h>
#include <timestamp.h>
extern const struct prog_loader_ops cbfs_romstage_loader;
extern const struct prog_loader_ops vboot_loader;
static const struct prog_loader_ops *loaders[] = {
#if CONFIG_VBOOT_VERIFY_FIRMWARE
&vboot_loader,
#endif
#if !ENV_VERSTAGE || (ENV_VERSTAGE && !CONFIG_RETURN_FROM_VERSTAGE)
&cbfs_romstage_loader,
#endif
};
void run_romstage(void)