chromeos: vboot_loader: Add support for SW_WP_ENABLED flag
Set VB_INIT_FLAG_SW_WP_ENABLED according to the status returned by an optional platform / mainboard function vboot_get_sw_write_protect(). BUG=chrome-os-partner:26777 TEST=Manual on Rambi with all patches in sequence: `crossystem sw_wpsw_boot` prints 0 `flashrom --wp-enable` and reboot `crossystem sw_wpsw_boot` prints 1 BRANCH=Rambi Original-Change-Id: Ifb852d75cc106d10120cfee0a396b0662282051a Original-Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/190096 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> (cherry picked from commit c4668fc8a9ab31d9cf876b3d9ad3405756d4d683) Signed-off-by: Marc Jones <marc.jones@se-eng.com> Change-Id: Idace325439958f6b490d2e6705d55e95305c4b2a Reviewed-on: http://review.coreboot.org/7750 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
a0b02e7127
commit
229ad270f6
@ -35,6 +35,9 @@ void save_vbnv(const uint8_t *vbnv_copy);
|
|||||||
void init_chromeos(int bootmode);
|
void init_chromeos(int bootmode);
|
||||||
|
|
||||||
struct romstage_handoff;
|
struct romstage_handoff;
|
||||||
|
|
||||||
|
/* TODO(shawnn): Remove these CONFIGs and define default weak functions
|
||||||
|
* that can be overridden in the platform / MB code. */
|
||||||
#if CONFIG_VBOOT_VERIFY_FIRMWARE
|
#if CONFIG_VBOOT_VERIFY_FIRMWARE
|
||||||
/*
|
/*
|
||||||
* This is a dual purpose routine. If dest is non-NULL the region at
|
* This is a dual purpose routine. If dest is non-NULL the region at
|
||||||
@ -57,6 +60,7 @@ static inline int vboot_get_handoff_info(void **addr, uint32_t *size)
|
|||||||
}
|
}
|
||||||
static inline int vboot_skip_display_init(void) { return 0; }
|
static inline int vboot_skip_display_init(void) { return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
int vboot_get_sw_write_protect(void);
|
||||||
|
|
||||||
#include "gnvs.h"
|
#include "gnvs.h"
|
||||||
struct device;
|
struct device;
|
||||||
|
@ -93,6 +93,12 @@ void *vboot_get_region(uintptr_t offset_addr, size_t size, void *dest)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __attribute((weak)) vboot_get_sw_write_protect(void)
|
||||||
|
{
|
||||||
|
// Can be implemented by a platform / mainboard
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void *vboot_get_payload(size_t *len)
|
static void *vboot_get_payload(size_t *len)
|
||||||
{
|
{
|
||||||
struct vboot_handoff *vboot_handoff;
|
struct vboot_handoff *vboot_handoff;
|
||||||
|
@ -249,6 +249,8 @@ static void vboot_invoke_wrapper(struct vboot_handoff *vboot_handoff)
|
|||||||
*iflags |= VB_INIT_FLAG_REC_BUTTON_PRESSED;
|
*iflags |= VB_INIT_FLAG_REC_BUTTON_PRESSED;
|
||||||
if (get_write_protect_state())
|
if (get_write_protect_state())
|
||||||
*iflags |= VB_INIT_FLAG_WP_ENABLED;
|
*iflags |= VB_INIT_FLAG_WP_ENABLED;
|
||||||
|
if (vboot_get_sw_write_protect())
|
||||||
|
*iflags |= VB_INIT_FLAG_SW_WP_ENABLED;
|
||||||
if (CONFIG_VIRTUAL_DEV_SWITCH)
|
if (CONFIG_VIRTUAL_DEV_SWITCH)
|
||||||
*iflags |= VB_INIT_FLAG_VIRTUAL_DEV_SWITCH;
|
*iflags |= VB_INIT_FLAG_VIRTUAL_DEV_SWITCH;
|
||||||
if (CONFIG_EC_SOFTWARE_SYNC) {
|
if (CONFIG_EC_SOFTWARE_SYNC) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user