path: root/src/vendorcode/google/chromeos/vboot2/verstage.c
diff options
authorJulius Werner <jwerner@chromium.org>2014-12-01 13:28:47 -0800
committerPatrick Georgi <pgeorgi@google.com>2015-04-14 09:03:36 +0200
commitb5995b5872803838e7f3e03d3fb4f64a290d978f (patch)
tree4ade18ba20c8eeba20f97573abe71401b63f5a5e /src/vendorcode/google/chromeos/vboot2/verstage.c
parent44cf870cb08b48dacdd6652baa15dba93fbc6216 (diff)
rk3288: Add CBMEM console support and fix RETURN_FROM_VERSTAGE
Since we can now reduce our vboot2 work buffer by 4K, we can use all that hard-earned space for the CBMEM console instead (and 4K are unfortunately barely enough for all the stuff we dump with vboot2). Also add console_init() and exception_init() to the verstage for CONFIG_RETURN_FROM_VERSTAGE, which was overlooked before (our model requires those functions to be called again at the beginning of every stage... even though some consoles like UARTs might not need it, others like the CBMEM console do). In the !RETURN_FROM_VERSTAGE case, this is expected to be done by the platform-specific verstage entry wrapper, and already in place for the only implementation we have for now (tegra124). (Technically, there is still a bug in the case where EARLY_CONSOLE is set but BOOTBLOCK_CONSOLE isn't, since both verstage and romstage would run init_console_ptr() as if they were there first, so the romstage overwrites the verstage's output. I don't think it's worth fixing that now, since EARLY_CONSOLE && !BOOTBLOCK_CONSOLE is a pretty pointless use-case and I think we should probably just get rid of the CONFIG_BOOTBLOCK_CONSOLE option eventually.) BRANCH=None BUG=None TEST=Booted Pinky. Change-Id: I87914df3c72f0262eb89f337454009377a985497 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 85486928abf364c5d5d1cf69f7668005ddac023c Original-Change-Id: Id666cb7a194d32cfe688861ab17c5e908bc7760d Original-Signed-off-by: Julius Werner <jwerner@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/232614 Reviewed-on: http://review.coreboot.org/9607 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/vendorcode/google/chromeos/vboot2/verstage.c')
1 files changed, 10 insertions, 4 deletions
diff --git a/src/vendorcode/google/chromeos/vboot2/verstage.c b/src/vendorcode/google/chromeos/vboot2/verstage.c
index 88c18f6de..289b93fef 100644
--- a/src/vendorcode/google/chromeos/vboot2/verstage.c
+++ b/src/vendorcode/google/chromeos/vboot2/verstage.c
@@ -18,6 +18,7 @@
#include <antirollback.h>
+#include <arch/exception.h>
#include <console/console.h>
#include <console/vtxprintf.h>
#include <string.h>
@@ -166,11 +167,7 @@ static void save_if_needed(struct vb2_context *ctx)
* TODO: Avoid loading a stage twice (once in hash_body & again in load_stage).
* when per-stage verification is ready.
-void main(void)
void verstage_main(void)
struct vb2_context ctx;
struct vboot_region fw_main;
@@ -249,3 +246,12 @@ void verstage_main(void)
printk(BIOS_INFO, "Slot %c is selected\n", is_slot_a(&ctx) ? 'A' : 'B');
vb2_set_selected_region(wd, &fw_main);
+void main(void)
+ console_init();
+ exception_init();
+ verstage_main();