summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* futility: updater: Fix logging messagesstabilize-12222.BHung-Te Lin2019-05-233-7/+6
| | | | | | | | | | | | | | | | | In CL:1601678, few logging messages were not properly converted: - STATUS should add \n - INFO and WARN should not need __FUNCTION__ BUG=None TEST=make futil; tests/futility/run_test_scripts.sh $(pwd)/build/futility BRANCH=None Change-Id: Ib01d9319815a5fbb579e49391fc4bff9d61ca214 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1626189 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* sign_official_build.sh: consistent format loem.iniLaMont Jones2019-05-211-2/+2
| | | | | | | | | | | | | | | | sign_official_build.sh accepted a subset of the syntax allowed by sign_firmware.sh. Update to be consistent. BUG=chromium:962529 BRANCH=None TEST=Manually verified Change-Id: Ic9c7d5d8a4744c09c06249ed835ef678e6368aa0 Reviewed-on: https://chromium-review.googlesource.com/1612376 Commit-Ready: LaMont Jones <lamontjones@chromium.org> Tested-by: LaMont Jones <lamontjones@chromium.org> Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Jason Clinton <jclinton@chromium.org>
* cr50: relax signature type verification for test runsVadim Bendebury2019-05-171-3/+13
| | | | | | | | | | | | | | If the key file directory name includes string 'test' do not check if the image being signed has the prod RO. BRANCH=none BUG=b:74100307 TEST=manual Change-Id: I3241d31f6612c1dc44c217958d74d4da784c5dfb Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1614793 Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* vboot: standardize on vb2_context identifiers in testsJoel Kitching2019-05-1710-541/+541
| | | | | | | | | | | | | | | | | Use `ctx` for global vb2_context variable, and `c` for argument to functions. This avoids shadowing the `ctx` identifier, which was recently disallowed by enabling -Wshadow in CL:1598721. BUG=b:124141368 TEST=make clean && make runtests BRANCH=none Change-Id: I9db97fd4945694e6f54abc5b0c04ed5533789300 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1616872 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Youcheng Syu <youcheng@chromium.org>
* vboot: remove deprecated GoogleBinaryBlockHeaderJoel Kitching2019-05-171-114/+0
| | | | | | | | | | | | | | | | | Use vboot vb2_gbb_header instead. Struct contents are identical. BUG=b:124141368, chromium:954774 TEST=make clean && make runtests BRANCH=none Change-Id: I9047c683af176384da3ec135faecf35870351973 Signed-off-by: Joel Kitching <kitching@google.com> Cq-Depend: chromium:1583943, chromium:1599828 Reviewed-on: https://chromium-review.googlesource.com/1583827 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: deprecate v1 GoogleBinaryBlockHeader structJoel Kitching2019-05-1729-131/+106
| | | | | | | | | | | | | | | | | Deprecate internal usage of GoogleBinaryBlockHeader struct in favour of vb2_gbb_header struct. Keep the v1 struct around until we remove references in other repos. BUG=b:124141368, chromium:954774 TEST=make clean && make runtests BRANCH=none Change-Id: I396d2e624bd5dcac9c461cc86e8175e8f7692d26 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1583826 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: remove NEED_VB2_SHA_LIBRARY switchJoel Kitching2019-05-171-15/+1
| | | | | | | | | | | | | | | | Replaced with the external-facing header vb2_sha.h. BUG=b:124141368, chromium:956474 TEST=make clean && make runtests BRANCH=none Change-Id: Ib31c816ed8e2eb91c30080e854ec9245d59c98f2 Signed-off-by: Joel Kitching <kitching@google.com> Cq-Depend: chromium:1599567, chromium:1583941, chromium:1610164 Reviewed-on: https://chromium-review.googlesource.com/1583825 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* vboot: de-externalize vb2_digest_buffer functionJoel Kitching2019-05-172-25/+0
| | | | | | | | | | | | | | | | | | | | | | Clients which wish to use this function may simply import the vb2_sha.h header to make all SHA library functionality available. Whether or not to make a full vb2api_ set of functions for SHA library should be considered in the future, but individual functions should not be added to the API as was done. BUG=b:124141368, chromium:956474 TEST=make clean && make runtests BRANCH=none Change-Id: I1dc8ed84ecfb621a57411975f312e96a695b68f4 Signed-off-by: Joel Kitching <kitching@google.com> Cq-Depend: chromium:1583942 Reviewed-on: https://chromium-review.googlesource.com/1583822 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: hide 2common.h from external APIJoel Kitching2019-05-176-20/+20
| | | | | | | | | | | | | | | | | | 2common.h contains code which should be internal to vboot. Most notably of which is 2struct.h, which contains the vb2_shared_data data structure. BUG=b:124141368, chromium:956474 TEST=make clean && make runtests BRANCH=none Cq-Depend: chromium:1587981, chromium:1599567, chromium:1610164 Change-Id: I712f51915bb9b0b03dce558e2b843eb83662f434 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1583819 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
* image_signing: set correct security.selinux attribute for lsb-releaseQijiang Fan2019-05-164-0/+10
| | | | | | | | | | | | | | | | | | | | | | | After sed -i, if the lsb-release will change, sed -i will recreate the file and loose the security.selinux xattr. We need to recover this extended attribute to make sure lsb-release still has the correct label in signed images. BRANCH=none BUG=chromium:954670 TEST=../platform/vboot_reference/scripts/image_signing/set_channel.sh image.bin something TEST=../platform/vboot_reference/scripts/image_signing/tag_image.sh --from image.bin --remove_test_label TEST=../platform/vboot_reference/scripts/image_signing/remove_test_label.sh image.bin TEST=getfattr -n security.selinux dir_3/etc/lsb-release after above each command Change-Id: Icfb721a9b4b2ebb21c2cb0f14381ef1f61b928d7 Reviewed-on: https://chromium-review.googlesource.com/1610265 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Qijiang Fan <fqj@google.com> Reviewed-by: Brian Norris <briannorris@chromium.org> Reviewed-by: Kenny Root <kroot@google.com> Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* vboot: update display init to use vboot2 codeJoel Kitching2019-05-1617-101/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per go/vboot2-oprom-cleanup, use vboot2 SD flag DISPLAY_AVAILABLE, instead of the old vboot1 flags OPROM_MATTERS and OPROM_LOADED. Remove instances of "OPROM" and update with correct nomenclature. Update code and tests for EC software sync and diagnostic menu to use vboot2 display init model. OPROM_MATTERS and OPROM_LOADED are now deprecated, and will be removed when no references remain in depthcharge and coreboot. Deprecate VBERROR_DISPLAY_INIT_MISMATCH (previously OPROM_MISMATCH) and return VBERROR_REBOOT_REQUIRED directly when needed. BUG=b:124141368, b:124192753, chromium:948529 TEST=Build image for eve, force EC update, check that the "critical update" screen shows TEST=make clean && make runtests BRANCH=none Change-Id: I889872f886230f8559d5cce09d0de194da3fcc38 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1605641 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: add VB2_NV_DISPLAY_REQUESTJoel Kitching2019-05-161-0/+3
| | | | | | | | | | | | | | | | | | As part of go/vboot2-oprom-cleanup, prepare to rename NVRAM request flag used to request that coreboot initialize the device's display, from VB2_NV_OPROM_NEEDED to VB2_NV_DISPLAY_REQUEST. BUG=b:124141368, b:124192753, chromium:948529 TEST=make clean && make runtests BRANCH=none Change-Id: I0ec29d61bd9e87bcaaffd647015e252ff3222708 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1605640 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>
* firmware: replace recovery mode flag with physical presenceMatt Delco2019-05-164-113/+372
| | | | | | | | | | | | | | | | | | | | | vboot can query the physical presence flag instead of the recovery mode flag. In general, the physical presence flag will map to the recovery mode button if a board has it, and otherwise will map to the physical presence button (usually the power button). Cq-Depend: chromium:1580454 BUG=b:129471321 BRANCH=None TEST=make runtests. Built firmware and slashed on sarien. Verified that displayed text references power button and that pressing power button initiates dev mode (vs. powering off the system). Change-Id: I22f29de192da67b8eece27cbdd5aa64e97717bfc Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1580472 Commit-Ready: Matt Delco <delco@chromium.org> Tested-by: Matt Delco <delco@chromium.org> Reviewed-by: Matt Delco <delco@chromium.org>
* vboot: remove workaround in diagnostics UIstabilize-12206.BMatt Delco2019-05-141-24/+14
| | | | | | | | | | | | | | | | | The cr50 has been changed to report live status of the power button so this workaround is no longer needed. BUG=b:128431787 BRANCH=None TEST=Locally built and flashed onto system with modified cr50. Verified that power button status is read and works reliably. Change-Id: Ia9b33610c897085e79dd18805350c41e17e3d9f2 Signed-off-by: Matt Delco <delco@google.com> Reviewed-on: https://chromium-review.googlesource.com/1534621 Commit-Ready: Matt Delco <delco@chromium.org> Tested-by: Matt Delco <delco@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
* vboot: deprecate Alt OS codeJoel Kitching2019-05-147-40/+18
| | | | | | | | | | | | | | BUG=b:124141368, b:131663912 TEST=make clean && make runtests BRANCH=none Change-Id: I6aae5683b8306eede4388ff5ed6665e7769756dc Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1588026 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> Reviewed-by: Ting Shen <phoenixshen@chromium.org>
* Makefile: Enable more warnings for host utilities / testsJulius Werner2019-05-1468-273/+240
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a bunch of more warnings that are already enabled in coreboot and thus already enabled for firmware builds anyway (because coreboot just passes its CFLAGS through). Enabling it in the vboot Makefile means they also apply to host utilities and tests, which sounds desirable for consistency. Fix enough of the cruft and bad coding practices that accumulated over the years of not having warnings enabled to get it to build again (this includes making functions static, removing dead code, cleaning up prototypes, etc.). Also remove -fno-strict-aliasing from the x86 firmware build options, because it's not clear why it's there (coreboot isn't doing this, so presumably it's not needed). BRANCH=None BUG=None TEST=make runtests Change-Id: Ie4a42083c4770a4eca133b22725be9ba85b24184 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1598721 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
* futility: Unify logging macrosJulius Werner2019-05-147-200/+205
| | | | | | | | | | | | | | | | | | | | | | The firmware updater introduced its own logging macros, but the rest of futility already used a (smaller) set of macros previously. Unify the two so that all parts of the binary use the same system. Note that the same debug output infrastructure can (and already could before this patch, although it was less obvious) be enabled with both futility --debug update and futility update -d. This is a bit weird but shouldn't really hurt and I presume we may want it for backwards compatibility in the updater. BRANCH=None BUG=None TEST=make runtests Change-Id: I8b7c1677bcef9e9772ee666c72958d27139b36a2 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1601678 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
* utility: Remove efi(de)compressJulius Werner2019-05-144-2979/+0
| | | | | | | | | | | | | | | These utilities used to be a bmpblk dependency way back in the day. Now that bmpblk utilities have been removed, we don't need them anymore. BRANCH=None BUG=None TEST=make runtests Change-Id: I73b77b853dc03a7c867b8726de3cdeb01314916e Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1601677 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Joel Kitching <kitching@chromium.org>
* 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>