diff options
-rw-r--r-- | firmware/include/vboot_api.h | 2 | ||||
-rw-r--r-- | firmware/lib/vboot_api_init.c | 17 |
2 files changed, 13 insertions, 6 deletions
diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h index 526c1e4a..81240585 100644 --- a/firmware/include/vboot_api.h +++ b/firmware/include/vboot_api.h @@ -227,6 +227,8 @@ typedef struct VbCommonParams { * can (and should) be used for additional physical presence checks. */ #define VB_INIT_FLAG_VIRTUAL_REC_SWITCH 0x00001000 +/* Set when we are calling VbInit() before loading Option ROMs */ +#define VB_INIT_FLAG_BEFORE_OPROM_LOAD 0x00002000 /* * Output flags for VbInitParams.out_flags. Used to indicate potential boot diff --git a/firmware/lib/vboot_api_init.c b/firmware/lib/vboot_api_init.c index 38bc8793..ce89715a 100644 --- a/firmware/lib/vboot_api_init.c +++ b/firmware/lib/vboot_api_init.c @@ -301,7 +301,13 @@ VbError_t VbInit(VbCommonParams *cparams, VbInitParams *iparams) if ((iparams->flags & VB_INIT_FLAG_OPROM_MATTERS) && !(iparams->flags & VB_INIT_FLAG_OPROM_LOADED)) { VbNvSet(&vnc, VBNV_OPROM_NEEDED, 1); - retval = VBERROR_VGA_OPROM_MISMATCH; + /* + * If VbInit() is run before Option ROMs are run it + * can still respond to the VbNv flag and does not + * need to reboot here. + */ + if (!(iparams->flags & VB_INIT_FLAG_BEFORE_OPROM_LOAD)) + retval = VBERROR_VGA_OPROM_MISMATCH; VBDEBUG(("VbInit() needs oprom, doesn't have it\n")); } @@ -332,12 +338,11 @@ VbError_t VbInit(VbCommonParams *cparams, VbInitParams *iparams) (iparams->flags & VB_INIT_FLAG_OPROM_LOADED)) { VbNvSet(&vnc, VBNV_OPROM_NEEDED, 0); /* - * If this is a system with slow EC update then don't - * reboot immediately in case VGA option ROM is still - * needed to display an update screen. The reboot will - * be requested after EC software sync is complete. + * If VbInit() is run before Option ROMs are run it + * can still respond to the VbNv flag and does not + * need to reboot here. */ - if (!(iparams->flags & VB_INIT_FLAG_EC_SLOW_UPDATE)) + if (!(iparams->flags & VB_INIT_FLAG_BEFORE_OPROM_LOAD)) retval = VBERROR_VGA_OPROM_MISMATCH; VBDEBUG(("VbInit() has oprom, doesn't need it\n")); } |