summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* vboot: Implement dev mode boot options for menu UIstabilize-12997.BHsuan Ting Chen2020-03-235-3/+416
| | | | | | | | | | | | | | | | | | | | | | | Add dev default boot retrieval and dev boot related allowance check api in 2misc along with their tests in vb2_misc_tests: - vb2_get_dev_boot_target - vb2_dev_boot_allowed - vb2_dev_boot_legacy_allowed - vb2_dev_boot_usb_allowed Implement parts of vb2_developer_menu functionalities along with tests: - Retrieve the default boot option. - Try to boot with the specified option. BRANCH=none BUG=b:146399181, chromium:1033815 TEST=USE="menu_ui" emerge-nami vboot_reference depthcharge TEST=make runtests Change-Id: Ie82076f93b86ba5abe26a9e3e25076892684855d Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2094508 Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: remove compression_type constantsJoel Kitching2020-03-231-8/+0
| | | | | | | | | | | | | | | | These are no longer needed after CL:367882. BUG=b:124141368, chromium:968464 TEST=make clean && make runtests BRANCH=none Change-Id: I267d20054778a6565dc1ed0687ed0d2afa928463 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2108752 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: remove VbExRegionRead vestigesJoel Kitching2020-03-231-7/+0
| | | | | | | | | | | | | | | | API was originally removed in CL:852798. BUG=b:124141368, chromium:968464 TEST=make clean && make runtests BRANCH=none Change-Id: I29c0b642dbac80b5c8c7eceaf108843467a90be4 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2108751 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: Introduce menu UIHsuan Ting Chen2020-03-216-3/+164
| | | | | | | | | | | | | | | | | | | | | | | | | According to crbug.com/1033815, add files for MENU_UI: - 2ui.{c,h} for entry point functions called by kernel selection. - vb2_ui_tests.c for tests (normal boot included). There are three entry points: vb2_developer_menu(), vb2_broken_recovery_menu(), and vb2_manual_recovery_menu(). Only infinite loop for this CL, others will be added in separate CLs. BRANCH=none BUG=b:146399181,chromium:1033815 TEST=USE="legacy_clamshell_ui" emerge-nami vboot_reference depthcharge TEST=USE="legacy_menu_ui" emerge-nami vboot_reference depthcharge TEST=USE="menu_ui" emerge-nami vboot_reference depthcharge TEST=make runtests Cq-Depend: chromium:2043102 Change-Id: I5a23eb006754b5ff08eb42bcd5021374995eab40 Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2087557 Reviewed-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Yu-Ping Wu <yupingso@chromium.org>
* vboot: Fix fuzzer buildManoj Gupta2020-03-191-0/+1
| | | | | | | | | | | | | | | | | | | | LLD is complaining about the symbol vb2_check_padding present in a discarded section. This is caused by multiple defintions of vb2_check_padding being present (fuzzers & 2rsa.c) and the definition in 2rsa.c also being used in the same file. Fix by marking vb2_check_padding as weak. BUG=chromium:1062665 TEST=Fuzzer builds work BRANCH=none Signed-off-by: Manoj Gupta <manojgupta@google.com> Change-Id: Id1e2b69cdb35cbd127ba57881a70fc352ea2450a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2108483 Tested-by: Manoj Gupta <manojgupta@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
* Avoid zero-size VLA in cmd_dump_fmap.cinglorion2020-03-181-1/+2
| | | | | | | | | | | | | | | | | Zero-size variable length arrays are undefined behavior. UBSan reported a zero-size VLA in futility/cmd_dump_fmap.c when running tests. This change fixes that by making sure the size of the VLA is at least 1. BUG=chromium:1058086 TEST=FEATURES="test" USE="llvm-next ubsan" emerge -e --nodeps vboot_reference BRANCH=none Change-Id: I3c0eee0359668ce2e1ec3c0724f243788161fb13 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2103436 Tested-by: Bob Haarman <inglorion@chromium.org> Reviewed-by: Manoj Gupta <manojgupta@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
* host: add host library for accessing chromeos-configrelease-R82-12974.BJack Rosenthal2020-03-134-0/+325
| | | | | | | | | | | | | | | | | | | | Host side library for accessing chromeos-config. Initially, this will be used by futility to access the /firmware:image-name property during a firmware update. More background: go/mosys-firmware-name (note: despite the name "mosys" in the design doc, this is an effort to *not* rely on mosys during the firmware update) BUG=chromium:1061192 BRANCH=none TEST=provided unit tests Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: Ib8e5f8f836a93695e3b30731ae227501f37c4633 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2099449 Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: stop reading from ACPI for wpsw_bootJoel Kitching2020-03-111-4/+0
| | | | | | | | | | | | | | | | Stop reading wpsw_boot value from ACPI as fallback for wpsw_cur. wpsw_cur is available on all non-EOL'd devices. BUG=b:124141368, chromium:950273, chromium:1059670 TEST=make clean && make runtests BRANCH=none Change-Id: I9c6f21b9f341a61e85db3e6e45b553b1ab4293e3 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2094807 Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: Move vb2_normal_boot tests to vb2_kernel_tests.cHsuan Ting Chen2020-03-103-41/+53
| | | | | | | | | | | | | | Move vb2_normal_boot tests from legacy clamshell UI tests to 2kernel tests. BUG=b:124141368, chromium:968464 TEST=make clean && make runtests BRANCH=none Change-Id: Iaf05dfa845222cd5eaf5aa39afcfa23f0ef21425 Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2091152 Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: create 2kernel.c for kernel-related functionsJoel Kitching2020-03-0910-308/+501
| | | | | | | | | | | | | | | | | | | | | | | Create 2kernel.c for kernel-related functions (including both internal and API-facing). Relocate functions which are currently in active use from lib20/api_kernel.c to 2lib/2kernel.c. Create vb2_kernel_tests.c and move appropriate tests there. Tests for vb2_normal_boot (previously VbBootNormal) will be added in a subsequent CL. BUG=b:124141368, chromium:968464 TEST=make clean && make runtests BRANCH=none Change-Id: I153ea318ba238b7b30bf871105388437f63075d1 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2091126 Reviewed-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
* vboot: stop setting VBSD_BOOT_FIRMWARE_WP_ENABLEDJoel Kitching2020-03-062-5/+2
| | | | | | | | | | | | | | | | | | wpsw_boot is being deprecated in favour of using wpsw_cur. Remove the wp_enabled argument from vb2api_export_vbsd and stop setting VBSD_BOOT_FIRMWARE_WP_ENABLED in VBSD. BUG=b:124141368, chromium:950273 TEST=make clean && make runtests BRANCH=none Change-Id: Ib3c7f43b5fb2af519bca93d5bbd95db5eff241a3 Signed-off-by: Joel Kitching <kitching@google.com> Cq-Depend: chromium:2088434 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2087141 Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* Revert "vboot: Add screen types for upcoming UI revamp"Yu-Ping Wu2020-03-061-22/+0
| | | | | | | | | | | | | | | | | This reverts commit 1df08718b7c18a0454240f78bdb80359116fc295. CL:1968268 added screen types to enum VbScreenType_t for menu UI, but we later decided to create a separate enum for that as part of vboot2 APIs. Hence, remove these screen types that are not used in legacy UIs. BRANCH=none BUG=b:146399181 TEST=emerge-nami vboot_reference Change-Id: Id86fcac257894148c82d54d27a8720ecb6b23af6 Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2089049 Reviewed-by: Joel Kitching <kitching@chromium.org>
* EFS: Implement EFS2 and NO_BOOT modeDaisuke Nojiri2020-03-0510-48/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EFS v1 allowed Chromeboxes to verify RW without AP. EFS v2 will bring the benefts to Chromebooks, which are: - Reduce RO dependency and presence. Allow more code to be updated in the fields. - Remove jumptag and workarounds needed for late sysjump. Major imporvements over v1 are: - No A/B slot required. - No signature in RW or public key in RO. - Rollback-attack protection. For battery-equipped devices, additional benefts are: - Immediate boot on drained battery. - Support recovery mode regardless of battery condition. - Faster charge in S5/G3. EC-Cr50 communication is based on the shared UART (go/ec-cr50-comm). EFS2 is documented in go/ec-efs2. BUG=chromium:1020578,chromium:1045217 TEST=Boot Helios in NORMAL/RECOVERY/NO_BOOT mode. TEST=Verify EC is updated by software sync in Depthcharge. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Change-Id: Ie07e6f6ce46c0955a6a0adf595633e65c4ffe724 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1901868
* Add vb2_secdata_kernel_v10dnojiri2020-03-059-74/+504
| | | | | | | | | | | | | This patch adds vb2_secdata_kernel_v10. It has ec_hash field to support EFS2. The secdata kernel APIs continue to support v0.2. BUG=chromium:1045217 TEST=emerge-hatch depthcharge TEST=make runtests Change-Id: I18d5097ed799e790a2742d54c25c89a7559cbcb2 Signed-off-by: dnojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2041695
* Increase VB2_CONTEXT_MAX_SIZEdnojiri2020-03-051-2/+3
| | | | | | | | | | | | | | | This patch increases VB2_CONTEXT_MAX_SIZE to 384 to accommodate the new secdata_kernel v1.0 in vb2_context. BUG=chromium:1045217 TEST=emerge-hatch depthcharge TEST=make runtests Signed-off-by: dnojiri <dnojiri@chromium.org> Change-Id: I1df3b7a4383a45104a05a06a47cec3677dc44005 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2041694 Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: Set VB2_SD_STATUS_EC_SYNC_COMPLETE in shared data statusstabilize-12951.BYu-Ping Wu2020-03-033-10/+10
| | | | | | | | | | | | | | | | CL:1877066 introduced shared data status VB2_SD_STATUS_EC_SYNC_COMPLETE, but incorrectly saved it in shared data flags. BRANCH=hatch BUG=chromium:1057517 TEST=make runtests Change-Id: Idc993304760c419f80c6b160b30763142cf47234 Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2082756 Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Julius Werner <jwerner@chromium.org>
* image_signing: Add one more cheets flavor.Lepton Wu2020-03-032-1/+5
| | | | | | | | | | | | | On Pi, the target name is sdk_cheets instead of sdk_google_cheets BUG=chromium:1057649 TEST=./sign_android_unittests.sh BRANCH=none Change-Id: Ic4e5123687eee7fc9f6c0640b7b9455f180dff6e Signed-off-by: Lepton Wu <lepton@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2083836 Reviewed-by: Nicolas Norvez <norvez@chromium.org> Reviewed-by: George Engelbrecht <engeg@google.com>
* vboot: Convert more UI errors to vboot2-styleYu-Ping Wu2020-03-021-7/+9
| | | | | | | | | | | | | | | | | | | | | | Error codes are renamed as follows: VBERROR_INVALID_BMPFV --> VB2_ERROR_UI_INVALID_ARCHIVE VBERROR_NO_IMAGE_PRESENT --> VB2_ERROR_UI_MISSING_IMAGE Also remove unnecessary paddings 0x1000 for UI errors. BRANCH=none BUG=b:124141368, chromium:988410 TEST=emerge-nami depthcharge Cq-Depend: chromium:2082833 Change-Id: I8b7743d9ceecde6c9e3e88109422a99594ad6aab Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2082759 Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: remove NEED_VB20_INTERNALSJoel Kitching2020-03-021-20/+0
| | | | | | | | | | | | | | | | | Since the name is somewhat inaccurate, and since we want to make it slightly clearer that it should not be used, remove NEED_VB20_INTERNALS in favour of directly using a separate header file. The new header file is called vb2_internals_please_do_not_use.h. BUG=b:124141368, chromium:957880 TEST=make clean && make runtests BRANCH=none Change-Id: Icf67eed2d9ae3448387f6c1fbae1501ff6fa5d52 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2055601 Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: stop using wpsw_boot and remove it from crossystemJoel Kitching2020-02-276-21/+3
| | | | | | | | | | | | | | | | | | wpsw_boot is being deprecated, so just use wpsw_cur. BUG=b:124141368, chromium:950273 TEST=make clean && make runtests BRANCH=none Change-Id: Iae63b2a76b19629a9ecd9b87e5dd6367767860b3 Cq-Depend: chromium:2066154, chromium:2068241, chromium:2068209 Cq-Depend: chromium:2068297, chromium:2067229, chromium:2067231 Cq-Depend: chromium:2068242 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2066192 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: move vboot_test.h to private namespaceJoel Kitching2020-02-271-0/+0
| | | | | | | | | | | | BUG=b:124141368 TEST=make clean && make runtests BRANCH=none Change-Id: I48b390be1d7d9d4e17caddb883eed6eda3bd4ae6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2073212 Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: clean up vboot_struct.hJoel Kitching2020-02-275-330/+246
| | | | | | | | | | | | | | | | | | | | | | It only needs to contain VbSharedDataHeader definition, and it can be made private to vboot_reference now. Move kernel verification-related structs to vboot_kernel.h. Also, since the related constants VBSD_LF_CHECK_* are being removed in this CL, deprecate the RO_INVALID_RW_CHECK_MIN recovery reason, which was originally dismantled in CL:1863624. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: Ie6937cda6c3ba987031ba770ec9f1fb0ffa9cf3a Cq-Depend: chromium:2070292, chromium:2073461, chrome-internal:2634199 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2066302 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: eradicate vboot1 data structures from kernel verificationJoel Kitching2020-02-279-72/+69
| | | | | | | | | | | | | | | | | | | VbSelectAndLoadKernel no longer takes a vboot1-style VBSD data structure. Conversion of vboot 2->1 data structure is moved into an API function called vb2api_export_vbsd() for use by depthcharge. VbSharedDataHeader type is now opaque to the caller, and only a raw data buffer is exposed. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: Id11f663f6e3296e947c519581d428b0c8fb60be5 Cq-Depend: chromium:2056343 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2054270 Reviewed-by: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* crossystem: use wpsw_boot as fallback for wpsw_curJoel Kitching2020-02-262-0/+6
| | | | | | | | | | | | | | | | | | | In preparation for deprecating wpsw_boot, update wpsw_cur to use wpsw_boot as a fallback value. The source of wpsw_boot will still be deprecated on devices using new firmware, but in those cases, we are absolutely certain that wpsw_cur will work. BUG=b:124141368, chromium:950723 TEST=make clean && make runtests BRANCH=none Change-Id: I77ab9c6b827ef2c033ae46b7b01b12465101c0a9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2071633 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: Add mockable attribute to some overridden functionsManoj Gupta2020-02-266-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | A newer clang version has an optimization that is breaking vboot_reference unit tests. The root cause appears to be: Many functions inside unit tests are supposed to override the functions defined in the main library but the main library functions are not defined as weak. Fix by marking some of the overridden function by test_mockable which is already used for some of the functions. This is similar to a prior bug 723906 where unit tests were broken after binutils upgrade. BUG=chromium:1055151 TEST=unit tests passed with ToT clang Change-Id: Ib9f16e1af59632b6a82411656ebba75e26b5d211 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2069806 Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org> Tested-by: Manoj Gupta <manojgupta@chromium.org> Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
* futility: updater: Fix failure by modifying released memoryHung-Te Lin2020-02-261-1/+1
| | | | | | | | | | | | | | | When deleting the temp files, the pointer to released head must not be used again. Setting 'next' to NULL should be done earlier. BUG=chromium:1055468 TEST=make clean && make runfutiltests BRANCH=none Change-Id: Ia4356ade5fcf85e2bfc917c5a3bcbb7f492c5a08 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2071179 Reviewed-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
* vboot: rename VbExGetSwitches to vb2ex_physical_presence_pressedstabilize-volteer-12931.BJoel Kitching2020-02-268-70/+43
| | | | | | | | | | | | | | | | | | The only purpose of this function is to get the physical presence switch. Rename it appropriately, and migrate function header into 2api.h. BUG=b:124141368, chromium:1035761 TEST=Build locally BRANCH=none Change-Id: Ice3e3a362ca2d2e3aa18c60a129f67d5139daf04 Cq-Depend: chromium:2069629 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2069628 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: clear recovery request subcode when recovery UI is reachedEric Lai2020-02-232-1/+2
| | | | | | | | | | | | | | | | | CL:2044954 moved clear recovery request into vboot_api_kernel. We'd like to leave the subcode so that we can pipe it through as a UMA statistic. But it's breaking FAFT at the moment. Unconditionally clear it until we have a more detailed design. BUG=b:124141368, b:35576380 TEST=make clean && make runtests BRANCH=none Change-Id: Ib90c746779ca58e0d0100bb0b42a29c2b5a100dd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2063198 Reviewed-by: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: EricR Lai <ericr_lai@compal.corp-partner.google.com>
* futility: updater: Ignore image parsing error in --forceHung-Te Lin2020-02-213-41/+70
| | | | | | | | | | | | | | | | | | | | The firmware updater has been improved to support flashing outside DUT (--ccd, --servo) that also implies more people will use it for devices with corrupted (or empty) firmware. It's pretty confusing for developers to see "Cannot load system active firmware" while the flashrom can actually read and write to the SPI firmware. The solution here is to allow updating on such devices when --force is specified (which is automatically applied for --servo and --ccd). BUG=b:148405957 TEST=make runtests BRANCH=None Change-Id: I19e63e3464616bc508639cbfad0d1cf8e99507b0 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2059621 Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: use vboot2 for storing kernel rollback versionsJoel Kitching2020-02-1910-72/+21
| | | | | | | | | | | | | | | | | | | | | Migrate to using vboot2 shared data fields for storing kernel rollback versions: kernel_version_tpm_start(1) --> kernel_version_secdata(2) kernel_version_tpm(1) --> kernel_version(2) kernel_version_lowest(1) --> [removed] Also remove VBSD from tests which no longer need it. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: I26c2ccede5fba52e1477b625ef5fc6181f60aadf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2053179 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: remove previous name VB2_NV_OPROM_NEEDEDJoel Kitching2020-02-191-3/+0
| | | | | | | | | | | | | | | | As part of go/vboot2-oprom-cleanup, VB2_NV_OPROM_NEEDED was renamed to VB2_NV_DISPLAY_REQUEST. Remove the old name since it is no longer in use. BUG=b:124141368, b:124192753, chromium:948529 TEST=make clean && make runtests BRANCH=none Change-Id: I72fb652043936f310e595eacadf6ad3f911187b0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2059505 Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
* vboot: do not call vb2_commit_data at end of VBSLKJoel Kitching2020-02-188-138/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | Under normal circumstances, data should be committed by depthcharge after execution flow leaves VbSelectAndLoadKernel API call. Since depthcharge needs to be able to respond with the appropriate vb2api_fail call for specific data commit errors anyways, this logic is moved directly into vb2ex_commit_data in CL:2053765. Remove the vb2_commit_data wrapper as was originally intended. vboot code may now directly call vb2ex_commit_data and depend on depthcharge to call vb2api_fail appropriately. BUG=b:124141368, chromium:972956, chromium:1006689 TEST=make clean && make runtests BRANCH=none Change-Id: I55bdb3274210869d4ad1411837b6ef6c579dccad Cq-Depend: chromium:2053765 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2037906 Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
* vboot: create vb2_internals_please_do_not_use.hJoel Kitching2020-02-181-0/+26
| | | | | | | | | | | | | | | | | | | Create vb2_internals_please_do_not_use.h to replace NEED_VB20_INTERNALS. NEED_VB20_INTERNALS will be removed in a separate commit in order to give coreboot code a chance to switch over to using the new header file. BUG=b:124141368, chromium:957880 TEST=make clean && make runtests BRANCH=none Change-Id: Ide3f69d45e4ebbd2b12d03ccffd1e3d8bb68aa5f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2055600 Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: implement vb2api_get_recovery_reasonJoel Kitching2020-02-183-0/+23
| | | | | | | | | | | | | | | This API function should be used rather than directly accessing vb2_shared_data.recovery_reason. BUG=b:124141368, chromium:1038260, chromium:957880 TEST=make clean && make runtests BRANCH=none Change-Id: I92c8f9a654400be69885a691b39c4b9e4e2031c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2055662 Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
* vboot: add vboot2 flags to vboot_displayJoel Kitching2020-02-181-0/+14
| | | | | | | | | | | | | | | | | Add debug information to vboot_display: - vb2_context.flags - vb2_shared_data.flags - vb2_shared_data.status BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: I641f5a5cac041d0b9aac580e3216fb4153369fa7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2055661 Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: remove vb2_packed_key reference from vboot_struct.hJoel Kitching2020-02-181-12/+5
| | | | | | | | | | | | | | | | | | Since CL:1651221, the vb2_packed_key "kernel_subkey" field in VbSharedDataHeader is no longer used. Replace the field with a reserved field of the same size, so that we can remove the awkward relative 2struct.h header include. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: Ic755ae102cd3928f1dbec8f1e76f723a4411c2a4 Cq-Depend: chrome-internal:2576432 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2054269 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: fix up load_kernel_test to store subkey in workbufJoel Kitching2020-02-141-11/+11
| | | | | | | | | | | | | | | | Since CL:1651221, kernel subkey has been stored and accessed as part of vboot2 workbuf. We forgot to update the utility load_kernel_test to follow suit. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: I67686dc9dd555d3cce9d1be287b56c108460239b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2054268 Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: check for recovery mode with VB2_CONTEXT_RECOVERY_MODEJoel Kitching2020-02-144-7/+5
| | | | | | | | | | | | | | | | When the specific recovery reason is not needed, just use (ctx->flags & VB2_CONTEXT_RECOVERY_MODE) to determine whether or not we are in recovery mode. BUG=b:124141368 TEST=make clean && make runtests BRANCH=none Change-Id: I37f1bc066d970a51dfd7ef38cba519c00e1e764f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2053252 Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot/vboot_display: fetch subkey from vboot2 structJoel Kitching2020-02-141-2/+5
| | | | | | | | | | | | | | | | Since CL:1651221, the kernel subkey is stored in vb2_shared_data and vboot2 workbuf. Update vboot_display.c to read from this location accordingly. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: Id287ff595bc394d23837e946c0f711b79d2f19ab Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2051892 Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
* vboot: stop setting context mode flag in VBSLKJoel Kitching2020-02-142-10/+6
| | | | | | | | | | | | | | | | Stop setting mode flags (developer or recovery) in VbSelectAndLoadKernel; this has already been done in firmware verification. BUG=b:124141368, chromium:994060 TEST=make clean && make runtests BRANCH=none Change-Id: I659f406e0182f809ad46c92a2597b05f685d45dd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2054265 Reviewed-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
* vboot: unmarry LoadKernel from VBSDJoel Kitching2020-02-143-124/+18
| | | | | | | | | | | | | | | | Create a function-local copy of VbSharedDataKernelCall rather than using the memory built-in to VBSD. Stop making any reference to vboot1 VBSD from LoadKernel. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: I5dabfb33a0eb05c1f40509dcf00a4c5751af1ef5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2053182 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: use VB2_SD_FLAG_KERNEL_SIGNEDJoel Kitching2020-02-143-3/+9
| | | | | | | | | | | | | | | | Use vboot2 variant VB2_SD_FLAG_KERNEL_SIGNED instead of vboot1 VBSD flag VBSD_KERNEL_KEY_VERIFIED. Export the flag back to vboot1 at the end of VBSLK. BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: Ie7516195b95a9ef2ca254616c9486991b1a418fa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2053181 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: integrate BROKEN screen recovery request logic into VBSLKJoel Kitching2020-02-147-93/+150
| | | | | | | | | | | | | | | | | | | | | | | | | CL:1940398 brought us towards the goal of deferring clearing recovery requests until kernel verification stage. However, now we are modifying recovery requests from multiple locations in kernel verification code -- namely, also on the BROKEN screen in UI code. Integrate the logic into a function called vb2_clear_recovery to be called from VbSelectAndLoadKernel. Add tests to ensure that recovery requests get properly updated *before* entering the UI. BUG=b:124141368, b:35576380 TEST=make clean && make runtests BRANCH=none Change-Id: I5b0f4f7556c045ccc0d0739acc2668905a2a93e9 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2044954 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* 2lib: Add vb2api_is_developer_signed() to replace old dev key checkJulius Werner2020-02-133-54/+43
| | | | | | | | | | | | | | | | | | This patch removes the old check for developer keys from the firmware verification path and instead inserts a similar (but faster) check into vb2api_kernel_phase1(). This has the advantage that we can export the check function to the calling firmware which could use it to display this information in a more user-visible manner. BRANCH=None BUG=None TEST=Booted in normal and recovery mode with developer keys, confirmed they were recognized. Change-Id: I00af0d10e31b2789574c8e4f1875ccd8d01eb0d5 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2038245 Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: remove -drop-ld-preload from qemu invocationJoel Kitching2020-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This flag is currently not supported in the qemu binary, and causes qemu process to end with a return code of 1, making all tests fail. The inability to enable this flag is likely the cause of all the warnings in test output: ERROR: ld.so: object 'libsandbox.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. BUG=b:124141368, chromium:605348 TEST=make clean && make runtests TEST=force QEMU_ARCH := ${ARCH} and run: FEATURES=test emerge-eve vboot_reference BRANCH=none Change-Id: Ie8c06da7a52638268d6ab318b591c995b18b98b3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2050969 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* vboot: Rename legacy UIsHsuan Ting Chen2020-02-1214-247/+270
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to crbug.com/1033815, rename files and entry point functions for two legacy UIs. Ideally, these UIs will be deprecated after the detachable UI revamp (b:146399181) is done. common: - rename vboot_ui_common.{c,h} to vboot_ui_legacy_common.{c,h} LEGACY_CLAMSHELL_UI: - rename vboot_ui.c to vboot_ui_legacy_clamshell.c - rename vboot_ui_wilco.c to vboot_ui_legacy_wilco.c - rename VbBootRecovery() to VbBootRecoveryLegacyClamshell() - rename VbBootDiagnostic() to VbBootDiagnosticLegacyClamshell() - rename VbBootDeveloper() to VbBootDeveloperLegacyClamshell() LEGACY_MENU_UI: - rename vboot_ui_menu.c to vboot_ui_legacy_menu.c - rename vboot_ui_menu_private.h to vboot_ui_legacy_menu_private.h - rename VbBootRecoveryMenu() to VbBootRecoveryLegacyMenu() - rename VbBootDeveloperMenu() to VbBootDeveloperLegacyMenu() BRANCH=none BUG=b:146399181,chromium:1033815 TEST=USE="legacy_clamshell_ui" emerge-nami vboot_reference TEST=USE="legacy_menu_ui" emerge-nami vboot_reference Change-Id: I70dafbab0070b19ed963d2a4ba63a95f4a0f3224 Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2008980 Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: move dumpRSAPublicKey from SDK into BOARD installJoel Kitching2020-02-111-1/+1
| | | | | | | | | | | | | | | | | This utility is used for firmware_UpdateFirmwareDataKeyVersion and firmware_UpdateKernelDataKeyVersion tests, and needs to be available on the DUT. BUG=b:149102664 TEST=None BRANCH=none Change-Id: I5e7d554356d891c165990a5cdda6ba47d5a3918f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2050423 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Mathew King <mathewk@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Queue: Greg Edelston <gredelston@google.com>
* vboot: more complete EC sync testingJoel Kitching2020-02-112-67/+226
| | | | | | | | | | | | | | | | | | | | Add more checks of updated and protected function calls. Check that VB2_SD_STATUS_EC_SYNC_COMPLETE is always set, regardless of whether EC sync actually runs. Only perform action in mock functions when return value is non-error. BUG=b:124141368, chromium:1042135 TEST=make clean && make runtests BRANCH=none Change-Id: I2e7d9770f4c105d372c6e068a95b4fbc78a085c7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2004248 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
* firmware: Add VB2_REC_OR_DIE() helper macroJulius Werner2020-02-116-32/+31
| | | | | | | | | | | | | | | | | After introducing VB2_DIE() recently, practical use has shown that we pretty much always want to check for recovery mode first, and avoid a hard abort in that case. This patch introduces a very similar macro that includes that extra check so we don't have to open-code it all over the place. BRANCH=None BUG=None TEST=make runtests Change-Id: I16e744859ba7a5c68269e06c7e7d071f3bfae67e Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2038244 Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: merge different FWLIB_SRC versions into oneJoel Kitching2020-02-111-27/+18
| | | | | | | | | | | | | | | | Since we are only building one fwlib library now, merge FWLIB_SRCS, FWLIB2X_SRCS, and FWLIB_20_SRCS into one. Remove the corresponding OBJS variables appropriately. BUG=b:124141368, chromium:968464 TEST=make clean && make runtests BRANCH=none Change-Id: I190f3ca99ca67063fe0013dd490ef8869cd8f57c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1969258 Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>