From eb0c8cc39bb268a7dc88ed616a564f4d46f77a2c Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Wed, 30 Mar 2016 09:38:54 -0700 Subject: [PATCH] crossystem: x86: Write VbNv with mosys if using vboot2 If this is an x86 system using vboot2 then write VbNv data to CMOS and also use mosys to write it directly to flash. BUG=chrome-os-partner:51846 BRANCH=none TEST=emerge-chell vboot_reference; emerge-oak vboot_reference verify on chell that "crossystem dev_disable_request=1" is written to both CMOS and flash. Change-Id: Ifd5dcee4d401f8de36801c5c0a7db3255e618e28 Signed-off-by: Duncan Laurie Reviewed-on: https://chromium-review.googlesource.com/336311 Reviewed-by: Aaron Durbin --- host/arch/x86/lib/crossystem_arch.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/host/arch/x86/lib/crossystem_arch.c b/host/arch/x86/lib/crossystem_arch.c index c885986b04..f9ce01f604 100644 --- a/host/arch/x86/lib/crossystem_arch.c +++ b/host/arch/x86/lib/crossystem_arch.c @@ -18,6 +18,7 @@ #include "crossystem.h" #include "crossystem_arch.h" +#include "crossystem_vbnv.h" #include "host_common.h" #include "utility.h" #include "vboot_common.h" @@ -171,6 +172,7 @@ int VbReadNvStorage(VbNvContext* vnc) { int VbWriteNvStorage(VbNvContext* vnc) { unsigned offs, blksz; + VbSharedDataHeader *sh = VbSharedDataRead(); if (!vnc->raw_changed) return 0; /* Nothing changed, so no need to write */ @@ -186,6 +188,10 @@ int VbWriteNvStorage(VbNvContext* vnc) { if (0 != VbCmosWrite(offs, VBNV_BLOCK_SIZE, vnc->raw)) return -1; + /* Also attempt to write using mosys if using vboot2 */ + if (sh && (sh->flags & VBSD_BOOT_FIRMWARE_VBOOT2)) + VbWriteNvStorage_mosys(vnc); + return 0; }