summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Make vboot -Wtype-limits compliantstabilize-12202.BJulius Werner2019-05-101-0/+4
| | | | | | | | | | | | | | | | | | | -Wtype-limits is an additional warning we're trying to enable in coreboot that catches common coding mistakes (e.g. checking whether an unsigned variable is < 0). vboot almost works with this out of the box, but there's one instance where we want such a check (because the constant it's checking may change). This patch pragma's it out so that we can still build with the new warning. BRANCH=None BUG=chromium:960270 TEST=make runtests Change-Id: I678a5915c99451b7e0a2672efb5ae6c81ebfb027 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1598720 Commit-Ready: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* Remove code for displaying screen from GBBDaisuke Nojiri2019-05-0729-2353/+3
| | | | | | | | | | | | | | | | | | | This patch removes the code displaying vboot screens using bitmap and layout data stored in GBB. bmpblk_utility, and futility support for BmpBlock is also removed. BUG=chromium:622501,chrome-os-partner:54619,b:124141368 BRANCH=none CQ-DEPEND=CL:373123 TEST=Verified screens on eve && emerge-eve chromeos-bootimage && make runtests Change-Id: I1a8dd8ff0162965e81df121d5a87ea64310a0854 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/367882 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: relocate GBB flag definitions to 2gbb_flags.hJoel Kitching2019-05-073-76/+92
| | | | | | | | | | | | | | | | | vb2_gbb_header should NOT be in the public API, but GBB flag definitions themselves SHOULD be. BUG=b:124141368, chromium:956474 TEST=make clean && make runtests BRANCH=none Change-Id: I9b9cb1bc67c31c3a29b7a237d90a11aba55f131e Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1583821 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org>
* vboot: update vb2_misc_tests to use VB2_WORKBUF_ALIGNJoel Kitching2019-05-071-3/+5
| | | | | | | | | | | | | | | | | | If VB2_WORKBUF_ALIGN was set to any value other than 16, this test would fail. The test should not be dependent upon a specific alignment, but rather account for this variable. BUG=None TEST=make clean && make runtests BRANCH=none Change-Id: Iaba095eba7a852bc2eb9711bf122a23c34cb66c3 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1588028 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org>
* vboot: implement DISPLAY_INIT context and SD flagJoel Kitching2019-05-034-1/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of go/vboot2-cleanup-oprom, introduce new context flag DISPLAY_INIT. The equivalent shared data flag DISPLAY_AVAILABLE is also introduced for downstream vboot to read. The context flag serves the dual purpose of: (1) the vboot caller (coreboot) telling vboot that "display will be initialized regardless", for cases when a mainboard/SoC cannot disable its display initialization code (see coreboot Kconfig VBOOT_MUST_REQUEST_DISPLAY, previously VBOOT_OPROM_MATTERS). (2) vboot telling the vboot caller (coreboot) that "display initialization should occur" for cases when vboot needs display enabled on this boot. BUG=b:124141368, chromium:948529 TEST=make clean && make runtests BRANCH=none Change-Id: If18bedf99c0f6e366c12d043377edb7bcdb35fdf Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1564232 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot_ui: Add newline to end of error stringDuncan Laurie2019-05-021-1/+1
| | | | | | | | | | | | | | | | | The error string "Could not boot from USB" does not have a newline and so the string gets mashed with the one after it into "Could not boot from USBread-only firmware id..." BUG=b:123224593 BRANCH=none TEST=none Change-Id: I57db2fedb7f920ea201b1dd98d31c1f7f6131ad3 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://chromium-review.googlesource.com/1589847 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* vboot: add vb2_sha.h to replace NEED_VB2_SHA_LIBRARYJoel Kitching2019-04-272-2/+15
| | | | | | | | | | | | | | | | | | | | | | When clients wish to use SHA functionality, they should import vb2_sha.h header instead of setting NEED_VB2_SHA_LIBRARY and importing vb2_api.h. The latter will be deprecated. NEED_VB2_SHA_LIBRARY is troublesome since the compiler may complain when it is defined multiple times within the same namespace. BUG=b:124141368, chromium:956474 TEST=make clean && make runtests BRANCH=none Change-Id: Ie39bb14e7fb35fd7e365acdd29dd5524567358b1 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1583820 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Randall Spangler <rspangler@google.com>
* vboot: add linebreaks to stub unimplemented messagesJoel Kitching2019-04-271-3/+3
| | | | | | | | | | | | | | BUG=b:124141368, chromium:944804 TEST=make clean && make runtests BRANCH=none Change-Id: I79ddbf260ec86ad94eb1ea2daec115fb188264d6 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1583824 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Randall Spangler <rspangler@google.com>
* cgpt: create: Don't modify existing IGNOREME headersRyan Case2019-04-241-0/+13
| | | | | | | | | | | | | | | | | Respect any existing IGNOREME signatures and do not attempt to make any modifications until a user has explicitly removed this flag via cgpt legacy or other method. BRANCH=None BUG=chromium:948742 TEST=chromeos-install on veyron_minnie with 4.19 kernel Change-Id: I110a95ee0c136ebbe2274139deebcaacde712e80 Signed-off-by: Ryan Case <ryandcase@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1572440 Commit-Ready: Ryan Case <ryandcase@google.com> Tested-by: Ryan Case <ryandcase@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
* futility: updater: Revise getopt_long and use enum instead of charsstabilize-flapjack-12109.Bstabilize-flapjack-12105.Bstabilize-12121.Bstabilize-12105.75.Brelease-quickfix-R75-12105.76.BHung-Te Lin2019-04-181-66/+90
| | | | | | | | | | | | | | | | | For options only available in long-form (--something), we should encode using enum OPT_SOMETHING instead of random characters. Also added dummy --update_ec, --update_pd, and --check_keys because getopt* needs to have them explicitly defined (while the original shflags will generate both --cmd and --nocmd automatically). BUG=chromium:943262 TEST=make futil; tests/futility/run_test_scripts.sh $(pwd)/build/futility BRANCH=None Change-Id: I701d88f6f5c346581651ed4f8bf004203672e209 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1569145
* futility: updater: Add '--ccd' for programming with closed case debuggingHung-Te Lin2019-04-181-0/+9
| | | | | | | | | | | | | | | | CCD via Servo v4 or SuzyQ-like cables is becoming more popular so more developers want to flash firmware with that, and it seems better to have one short cut '--ccd' instead of always typing '--wp=0 --force --fast -p raiden_debug_spi'. BUG=None TEST=make futil; build/futility/futility update --ccd -i image.bin -v BRANCH=None Change-Id: I0ca8c49a46cc5f8f87fb4dc1936ac9eb0a889baa Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1564235 Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: remove workbuf alloc and free codeJoel Kitching2019-04-173-39/+16
| | | | | | | | | | | | | | | | Workbuf should be allocated and free'd by vboot caller. BUG=b:124141368, chromium:951692 TEST=make clean && make runtests CQ-DEPEND=CL:1563872 BRANCH=none Change-Id: Ibaa70f62c660d46cc083a5e55a73b961eb813649 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1560716 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: add magic and version to vb2_shared_dataJoel Kitching2019-04-154-2/+70
| | | | | | | | | | | | | | | | | | | | In order for vb2_shared_data to cross application boundaries, it needs magic and version fields. These can be initialized in vb2_init_context, which is called implicitly via vb2api_fw_phase1 and vb2api_fail. On re-init, check fields for validity. BUG=b:124141368, b:124192753 TEST=make clean && make runtests BRANCH=none Change-Id: I90005833836f13f60813bdf82f0e4dbb8d9afecd Reviewed-on: https://chromium-review.googlesource.com/1521406 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* Enable launching diagnostics from OS broken screenstabilize-12088.BMathew King2019-04-133-14/+60
| | | | | | | | | | | | | | | | | If firmware diagnostics is enabled allow the user to lauch diagnostics from the OS broken screen. Currently diagnostics can only be launched from the recovery screen. BUG=b:130244249 TEST=Tested on arcada device make runmisctests BRANCH=none Change-Id: Ic6946338605599ea7411b5658acb2c6fc960a782 Signed-off-by: Mathew King <mathewk@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1564448 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: fix vboot_api_kernel_tests after ctx changeJoel Kitching2019-04-132-33/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | CL:1517061 pulled vb2_context storage up to a higher level in the call stack. It also changed vboot_api_kernel{4,5}_tests to use the same context object as that used for VbExNvStorageRead and VbExNvStorageWrite calls. These tests were already initializing the vb2_context workbuf. Since VbSelectAndLoadKernel and VbVerifyMemoryBootImage both initialize the context object internally, ctx.workbuf was being overwritten as part of the call, causing issues later on when calling free(). (See chromium:946970 for more details.) Separate these two context objects to clarify which one is being used as an NVRAM backend, and which one is the classical "context" object passed around in vboot flow. Also remove the NVRAM context's workbuf, since it is not used. BUG=b:124141368, chromium:946970 TEST=make clean && make runtests BRANCH=none Change-Id: Ic1da92ce754e61d4102ca8a6eb9587cd8d9eca10 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1547711 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* build: Evaluate YAML_LIBS and LZMA_LIBS lazilyPatrick Georgi2019-04-131-2/+2
| | | | | | | | | | | | | | | No need to check for a package that is only needed for a few targets. BUG=chromium:683381 TEST=no more "Package yaml-0.1 was not found in the pkg-config search path." when emerge'ing sys-boot/coreboot Change-Id: I56cacea59d9ac13ee3ba587e475e1ff451e535a9 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: https://chromium-review.googlesource.com/1564472 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* futility: updater: report flashrom error codeHung-Te Lin2019-04-101-0/+2
| | | | | | | | | | | | | | | | | | When flashrom execution failed, it is not very easy to debug what went wrong especially when loading system active firmware (-r). The log may say SUCCEED (or no obvious error) and updater simply reports failure. Reporting the returned termination status should help. BUG=chromium:943262 TEST=make futil; tests/futility/run_test_scripts.sh $(pwd)/build/futility BRANCH=None Change-Id: I4ea09b3d62ebf77eda98084accac582f841e7f7a Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1545590 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
* vboot: fix test_rwsig.sh permissions issueJoel Kitching2019-04-101-2/+5
| | | | | | | | | | | | | | | | | | | Copy hammer_dev.bin to temporary file before running `futility sign` to avoid permissions issue when running under ebuild environment. Also correct an indentation issue. BUG=chromium:950425, chromium:605348 TEST=FEATURES=test USE=cros_host ebuild vboot_reference-9999.ebuild test BRANCH=none Change-Id: I689be46d30b7bf78c6643e88a094e4f4ab311e20 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1557662 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
* Initialize retstabilize-12061.Bstabilize-12060.Bstabilize-12058.Bstabilize-12054.BMathew King2019-04-051-0/+1
| | | | | | | | | | | | | | Without this debug builds will fail. BUG=none TEST=USE=debug emerge-sarien depthcharge libpayload chromeos-bootimage BRANCH=none Change-Id: Iff182a116e89a8144a2102b288ea87fa75ff8885 Signed-off-by: Mathew King <mathewk@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1553920 Reviewed-by: Raul E Rangel <rrangel@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* VbCheckDisplayKey: Remove easter egg supportJulius Werner2019-04-042-24/+0
| | | | | | | | | | | | | | We haven't used the easter egg screen since Mario. Time to get rid of that code. BRANCH=None BUG=None TEST=Booted Kevin. Change-Id: I8f403f296ebb2a3d14ba6a70f12cd13a58e67b64 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1548303 Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* VbDisplayDebugInfo: Don't redraw screenJulius Werner2019-04-041-9/+0
| | | | | | | | | | | | | | | | | VbDisplayDebugInfo() currently redraws the screen before displaying debug info for no apparent reason. This should generally not be necessary because the debug output doesn't tend to change, so redrawing it over old debug output works fine on its own. Removing this gets rid of an unnecessary flicker. BRANCH=None BUG=None TEST=Hit Tab a few times on Kevin, flicker is less noticable. Change-Id: I1e82ece1d25274461fa306c0ab821251a90a2692 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1548302 Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* ui: Allow dismissing debug output with Esc, fix detachable issuesJulius Werner2019-04-042-10/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new debug output using the HWID font looks pretty, but it does bring a few new UX issues since it often completely overlays the main firmware screen. This patch adds the ability to force redrawing the screen (i.e. dismissing any debug text that might be on there) by pressing Esc (which is probably the most natural thing a user would press to try to get rid of the text). This check for Esc happens after any other key checks, so pressing it at the TO_DEV screen will still return you to the recovery screen (as it has before). I also noticed some problems when dismissing debug info by selecting a different menu option in the detachable UI: we don't normally redraw the whole screen when switching between options, so this will still leave the debug output in the background (which is usable but ugly). With this patch the detachable UI will always redraw the screen on the first draw request after displaying debug info. BRANCH=None BUG=None TEST=Manually went through affected transitions on Kevin (both clamshell and detachable). Change-Id: Ifadbc1a258bb7a7f8029e0f1f1786230aa724ae5 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1548301 Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-by: Shelley Chen <shchen@chromium.org>
* vboot: mark VBSD_HONOR_VIRT_DEV_SWITCH as deprecatedfactory-sarien-12033.BJoel Kitching2019-04-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | As part of chromium:942901, physical dev switch functionality is being deprecated. After coreboot CL:1541323 is merged, VBSD_HONOR_VIRT_DEV_SWITCH will no longer be used, and can be renamed. BUG=b:124141368, b:124192753, chromium:942901 TEST=Build locally TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html CQ-DEPEND=CL:1541323 BRANCH=none Change-Id: I4f304565f581b21658771336c6f70f0edcfe0e29 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1526072 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: mark VB2_CONTEXT_FORCE_DEVELOPER_MODE as deprecatedJoel Kitching2019-04-011-2/+3
| | | | | | | | | | | | | | | | | | | | | | As part of chromium:942901, physical dev switch functionality is being deprecated. After CL:1541322 is merged, VB2_CONTEXT_FORCE_DEVELOPER_MODE will no longer be used, and can be renamed. (See: src/security/vboot/vboot_logic.c) BUG=b:124141368, b:124192753, chromium:942901 TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html CQ-DEPEND=CL:1541322 BRANCH=none Change-Id: I3a401a59dc80cb42617a8f3a485d303aa3484c92 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1526071 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* sign_cr50_firmware: improve error reportingVadim Bendebury2019-03-281-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | In case jq does not find a node in the JSON file, it still returns with exit code of 0, it just prints 'null' instead of the expected node value. This patch adds processing this error condition, which makes it easier to troubleshoot the case of misconfigured Cr50 signing manifest. BRANCH=none BUG=b:74100307 TEST=tried using the script with a manifest which does not have the node of board_id_flags defined. Observed error message of ...sign_cr50_firmware.sh: ERROR : bid_flags not found in... instead of previous error reported as ...sign_cr50_firmware.sh: line 53: null: unbound variable Change-Id: I70acff7a3331b01f0f964f2942bf2806a2af8691 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1537260 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* vboot: deprecate GPIO_SIGNAL_TYPE_DEVJoel Kitching2019-03-281-1/+1
| | | | | | | | | | | | | | | | | As part of chromium:942901, physical dev switch functionality is being deprecated. BUG=chromiumos:942901 TEST=make clean && make runtests BRANCH=none Change-Id: I84d35a3eade6272896e7f9c3c43e87bba090f132 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1539435 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* 2lib: create generic return code for unimplemented external functionsJoel Kitching2019-03-282-9/+17
| | | | | | | | | | | | | | | | | | vboot_reference has a set of "external" functions which are defined by the client and linked in at compile time. Instead of creating a separate return code for each unimplemented external function, group them all into one. BUG=chromium:944804 TEST=make clean && make runtests BRANCH=None Change-Id: Ic3896572c71aabf99590758c7fc3848b61f9e078 Reviewed-on: https://chromium-review.googlesource.com/1539433 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: remove tinyhostlib from MakefileJoel Kitching2019-03-281-35/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vboot Makefile contains a target library called libtinyvboot_host.a, and claims it is used by autoupdate installer since it must sometimes be a 32-bit executable. (See CL:44442.) As far as I can tell, this lib is no longer used, and we can safely remove it: (1) I don't see any mention of this file in any repo's git history: $ repo list | sed -e 's@ :.*@@' | while read dir; do ( cd $dir; out=`git --no-pager log --no-renames -p -Svboot_host | grep tinyvboot_host`; [ -z "$out" ] || echo "$dir\n$out" ); done; src/platform/vboot_reference +TINYHOSTLIB = ${BUILD}/libtinyvboot_host.a (2) The library doesn't get installed in vboot_reference's ebuild. BUG=b:124141368, chromium:440078 TEST=build vboot_reference BRANCH=none Change-Id: I0ff41f0596f911ac1d969bfabcdaab7fc2c883f7 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1535459 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* vboot: do not check for VB2_CONTEXT_FORCE_DEVELOPER_MODEstabilize-11998.BJoel Kitching2019-03-263-24/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of chromium:942901, physical dev switch functionality is being deprecated. VB2_CONTEXT_FORCE_DEVELOPER_MODE is for the express purpose of enabling developer mode when the physical dev switch is on. (See: coreboot's src/security/vboot/vboot_logic.c) Remove the check of this context flag for deciding whether developer mode is enabled. In order to retain a path to developer mode on devices with physical dev switch, this CL depends on VBSD_HONOR_VIRT_DEV_SWITCH check being removed first (see CL:1526070). (Alternately, we can wait for CB:31943 to be merged and pulled downstream.) This constant will be marked as deprecated in a subsequent CL, once the coreboot CL has been pulled downstream. BUG=b:124141368, b:124192753, chromium:942901 TEST=Build locally TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html CQ-DEPEND=CL:1526070 BRANCH=none Change-Id: I81b54b9e2b8d3c6f9c00b40dd0771cda0585037c Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1524757 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: do not check for VBSD_HONOR_VIRT_DEV_SWITCHJoel Kitching2019-03-267-46/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of chromium:942901, physical dev switch functionality is being deprecated. As such, we no longer need to specify the flag VBSD_HONOR_VIRT_DEV_SWITCH -- the virtual dev switch should always be honoured. Additionally, there is no longer a need to check this flag when looking up the value for crossystem devsw_cur. This constant will be marked as deprecated in a subsequent CL. BUG=b:124141368, b:124192753, chromium:942901 TEST=Build locally TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html BRANCH=none Change-Id: Ib1ab86d79b039650136f1038c23175f5990895db Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1526070 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: pull vb2_context up to higher level in call stackJoel Kitching2019-03-265-82/+83
| | | | | | | | | | | | | | | | | | | | | The original purpose of vb2_context is to provide one shared state object through the entirety of one particular application. Pull the creation of vb2_context up to a higher level in order to work towards this goal. BUG=b:124141368 TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html CQ-DEPEND=CL:1517179 BRANCH=none Change-Id: I7c454afddb2b525895d9945b081b14b29100892c Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1517061 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot/crossystem: deprecate devsw_virtualJoel Kitching2019-03-261-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | As part of chromium:942901, physical dev switch functionality is being deprecated. There is no longer any need to provide devsw_virtual flag in crossystem. BUG=b:124141368, b:124192753, chromium:942901 TEST=Build locally TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html TEST=Check for references to devsw_virtual in code search BRANCH=none Change-Id: Id80ec1de8c43909ce2ff661744622d2ea36030a6 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1526069 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* Don't allow vowels in vendor data except first charMathew King2019-03-262-3/+29
| | | | | | | | | | | | BUG=b:128419534 TEST=make runmisctests BRANCH=none Change-Id: I1b3403cbe9ce93d9341c7ce32277d75462da894f Signed-off-by: Mathew King <mathewk@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1521216 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
* Arrow keys change language on vendor data uisMathew King2019-03-264-16/+20
| | | | | | | | | | | | BUG=b:127843397 TEST=Tested set and confirm screens on local arcada device BRANCH=none Change-Id: Ifafba3fd32a79131cf1d2059ef2147c074f3a3b6 Reviewed-on: https://chromium-review.googlesource.com/1529751 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Mathew King <mathewk@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* image_signing: Verify cr50 signing manifest complianceDavid Riley2019-03-211-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When signing Cr50 images, Board ID flags and major version number fields of the manifest must follow the following convention: - even major version numbers indicate pre-pvt branch, Board ID flag bit 0x10 must be set; - odd major version numbers indicate mp branch, Board ID flag bit 0x10000 must be set; BRANCH=none BUG=b:74100307 TEST=extracted pre-pvt branch produced Cr50 tarball into /tmp/cr50.cp, and ran the following command: scripts/image_signing/sign_cr50_firmware.sh /tmp/cr50.cp tests/devkeys \ signed observed successful completion. Modified /tmp/cr50.cp/ec_RW-manifest-prod.json to set major version number to 3 instead of 4 and tried again, got the following error, as expected: sign_cr50_firmware.sh: ERROR : Inconsistent manifest \ /tmp/cr50.cp/ec_RW-manifest-prod.json: major = "3", board_id_flags = "16" Change-Id: Ic123df4396d7d497347de40a5ff448940c0b1982 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1321410 Reviewed-by: David Riley <davidriley@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* sign_cr50_firmware: use sanitized manifest fileVadim Bendebury2019-03-211-9/+16
| | | | | | | | | | | | | | | | | This patch makes sure that Cr50 manifest included in the builder produced tarball is stripped to remove the comments before it is given to jq for processing. Also a little clean up. BRANCH=none BUG=b:74100307 TEST=tested as described in the next patch. Change-Id: I4852fea7c21752c45fcfe4cc60d45f264f142bab Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1529387 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* vboot: add diagnostic modeMatt Delco2019-03-218-5/+429
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds diagnostic mode. When enabled for a board (based on defconfig in depthcharge) the user can press Ctrl-C or F12 at a recovery mode screen, at which point an nv bit is set and the system reboots. Upon reboot, if the nv bit is set then the user is prompted to confirm launch of the diagnostic rom via the power button. If user confirms then the diagnostic payload is verified and run (if verify fails or payload doesn't run then a recovery reason is recorded and system reboots to recovery mode). If the user does not confirm then the system reboots. BUG=b:124358784 BRANCH=None TEST=Locally built and flashed using change that enabled feature for atlas and set to use payload 2 (tianocore) rather than 5 (diagnostic). Confirmed that Ctrl-C is functional or not based on defconfig and that Ctrl-C sets NV bit and reboots. Confirmed that NV bit can be set and queried via crossystem. Confirmed that during boot confirmation screen appears or not based on NV bit. Confirmed that pressing power button caused payload to be verified and run. Confirmed that non-matching hash (build configured to use sha1 rather than sha256) caused payload to not be run and system reboot to recovery. Confirmed that Esc or timeout caused system to reboot. CQ-DEPEND=CL:1471056 Change-Id: I8979d4eeb443bf64b727ee86a814c46d1d27ff37 Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1470723 Reviewed-by: Julius Werner <jwerner@chromium.org>
* firmware: allocate nvram bit for diagnostic modeMatt Delco2019-03-206-1/+17
| | | | | | | | | | | | | | | | This change allocates a bit in the nvram that will be used in a later change to tell the firmware whether to detour to diagnostic mode during boot. BUG=b:124358784 BRANCH=None TEST=Local build and ran "make runtests". Verified with a later change that the nvram bit takes effect as expected. Change-Id: If2fd3f46da30fc7375d37b240e3e745819ae0632 Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1504758 Reviewed-by: Julius Werner <jwerner@chromium.org>
* firmware/lib: commit nvram before running legacyMatt Delco2019-03-204-11/+17
| | | | | | | | | | | | | | | | | | | vb2_run_altfw() can jump to run a legacy payload, so this change adds a call to vb2_nv_commit() to commit any pending changes to nvram before making the jump. The call to commit requires a vb2_context, so the majority of this change is to plumb this context through various functions. BUG=b:124358784 BRANCH=None TEST=local compile. Tested with a later change that helps confirm that a pending nvram change is written before jumping. Change-Id: Ib32980527aa07357d62dd695a6ff479e8c918cf8 Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1504757 Reviewed-by: Julius Werner <jwerner@chromium.org>
* firmware: add time unit conversion definesMatt Delco2019-03-205-13/+13
| | | | | | | | | | | | | | | This change adds some #defines to assist with converting between microseconds (usec), milliseconds (msec) and full seconds. BUG=b:124358784 BRANCH=None TEST=Local build and also ran "make runtests" Change-Id: I0fd43ccb42bbd42f9ed319a29eb4015b48c879bb Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1504756 Reviewed-by: Julius Werner <jwerner@chromium.org>
* 2api: add callback for vb2ex_tpm_set_modeMatt Delco2019-03-203-0/+38
| | | | | | | | | | | | | | | | | | | | | | Add vboot2 callback for tpm_set_mode. This is mostly a cherry-pick of these: https://chromium-review.googlesource.com/c/1354139 https://chromium-review.googlesource.com/c/1365293 The re-enable of the tpm is now performed by coreboot so this version doesn't implement tpm_get_mode. BUG=b:124358784 BRANCH=None TEST=compile vboot_reference and depthcharge CQ-DEPEND=CL:1471195 Change-Id: I4168b50650e22f35ad9c66d49f34b689c46a36e1 Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1470962 Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org>
* Show error and wait for 5 seconds to shutdown if setting vendor data failsMathew King2019-03-161-5/+7
| | | | | | | | | | | | BUG=b:128419017 TEST=Tested on arcada by forcing VbExSetVendorData to return an error and verified that error message is shown BRANCH=None Change-Id: I9aa33f88fcb40c1f8d8c60848653654470ac1925 Signed-off-by: Mathew King <mathewk@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1521215 Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: add power button query functionalityMatt Delco2019-03-164-11/+13
| | | | | | | | | | | | | | | | | | | | The primary purpose of this change is to add a flag to VbExGetSwitches() so the current user physical presence (via the status of the power button) can be queried. The flags have also been renamed from the historical _INIT_ use to _SWITCH_ to reflect the current/actual API they're used with. BUG=b:124358784 BRANCH=none TEST=Locally built and flashed. Confirmed that the power button status can be queried when the power button is disabled. CQ-DEPEND=CL:1470273 Change-Id: I579ebe657ae35fb866eb30b466e8e8c16f54e584 Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1471190 Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: remove deprecated constantsJoel Kitching2019-03-152-4/+0
| | | | | | | | | | | | | | | | | | | | | | | Remove: - VB2_DISABLE_DEVELOPER_MODE - VB2_SD_DEV_MODE_ENABLED (Both have been renamed.) coreboot dependencies: CB:31297, CB:31298 BUG=b:124141368 TEST=Build locally TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests TEST=make clean && COV=1 make coverage && make coverage_html BRANCH=none Change-Id: Ic50e5e327e5b192af3aa103e4b36ff7ed8631c8f Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1506681 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
* vboot: futility test outputs should use relative directoryJoel Kitching2019-03-1316-40/+41
| | | | | | | | | | | | | | | | | | | | | | | | Not everyone uses /mnt/host/source as their development environment. If running "make runtests" from a different directory, test_show_contents.sh fails, reporting different stdout for the various futility tests that it runs. Update test_show_contents.sh to use relative test paths, and update the expected output of futility runs. Also fix consistency of quoted variables. BUG=b:124141368 TEST=/work/vboot/src/repohooks/pre-upload.py TEST=make clean && make runtests BRANCH=none Change-Id: I35fd81734b6318a506613eb4f04bb7055709feef Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1517062 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
* Fix memory leaks in cgptFletcher Woodruff2019-03-134-19/+19
| | | | | | | | | | | | | | | | | | | DriveOpen mallocs a couple of buffers, but DriveClose only freed them if a particular flag was passed causing GptSave to be called. Move the free calls out of GptSave so that the buffers are always freed, and add DriveClose calls to a couple of cgpt functions that are missing them. BUG=chromium:940543 TEST=precq passes, manual testing with cgpt/valgrind shows that memory leaks for cgpt find, show are fixed. BRANCH=none Change-Id: I58aeddfa6b8b4715ba4f8e064e95a660371a01c9 Reviewed-on: https://chromium-review.googlesource.com/1516413 Commit-Ready: Fletcher Woodruff <fletcherw@chromium.org> Tested-by: Fletcher Woodruff <fletcherw@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* vboot: changes to allow RW_LEGACY hash verificationMatt Delco2019-03-139-13/+55
| | | | | | | | | | | | | | | | | | | | This is largely a cherry-pick of CL:1133598 - Externalize vb2_digest_buffer function to vb2api_digest_buffer. - Change VbExLegacy()'s altfw_num parameter from int to enum so caller can specify which specific payload to run. BUG=b:124358784 BRANCH=None TEST=Local compile. Verified with subsequent change that legacy boot still works and new functionality can opt-in to and utilize payload verification. CQ-DEPEND=CL:1471053 Change-Id: I9700c2e38c3cfa255eeff72ce416295af9d076fb Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1471051 Reviewed-by: Julius Werner <jwerner@chromium.org>
* image_signing: avoid using mount -o rw,remountMike Frysinger2019-03-132-6/+9
| | | | | | | | | | | | | | | | | The comments said remount was avoided due to loop offset usage which, while true, isn't the only reason. We can't remount rw without first calling enable_rw_mount to clear the invalid bits in the fs header. Update the comment to reflect that and switch to our mount helper as it will call that for us. BUG=chromium:938958 TEST=precq passes & signing unittests pass BRANCH=None Change-Id: I1063bc84befebddc942a3dec05e8f33ea834db30 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1522089 Reviewed-by: Mike Frysinger <vapier@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org>
* image_signing: switch to loopdevs directlyMike Frysinger2019-03-1313-24/+38
| | | | | | | | | | | | | | | Newer kernels seem to be buggy when using loop mounts with offsets. Switch to using `losetup -P` everywhere as that doesn't seem to run into the bug. BUG=chromium:938958 TEST=precq passes & signing unittests pass BRANCH=None Change-Id: I3c35436708d0a4b2c5c1900406503e753f88a53c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1521065 Tested-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* futility: updater: Unit test for preserving sections using FMAP flagsHung-Te Lin2019-03-122-0/+18
| | | | | | | | | | | | | | | | | | | | | In CL:1495054 the updater has different logic when the firmware image has FMAP_AREA_PRESERVE in FMAP flags. This needs to be verified in unit test. The new test tries to set 010=0x08 (FMAP_AREA_PRESERVE) in RO_VPD area flag but not RW_VPD, with RO and RW VPD both being provisioned in source (from) image. The legacy path would update both while the new path will only update RO, so we can make sure the flag-based preservation is working as expected. BUG=chromium:936768 TEST=make futil; tests/futility/run_test_scripts.sh $(pwd)/build/futility BRANCH=None Change-Id: I07d232444344397b80344ccc9b56f8af3256e043 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1514452 Reviewed-by: Joel Kitching <kitching@chromium.org>