summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Don't always enable MTD mode unless MTD device is specifiedfactory-4455.Bfactory-4455.228.BAlbert Chaulk2013-07-244-48/+69
| | | | | | | | | | | | | | | | On MTD devices, don't always enable MTD mode - the installer needs to be able to access both the GPT disk and the MTD disk, so only enable it if we install to /dev/fts BRANCH=none BUG=chromium:221745 TEST=make runtests Change-Id: I7688e6bc758ef47cfb9d468c1224ef43b2043d02 Reviewed-on: https://gerrit.chromium.org/gerrit/62662 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org>
* Fixed sign_official_build.sh to work with PARTUUIDPaul Taysom2013-07-241-1/+1
| | | | | | | | | | | | | | | | | | | Fixed sign_official_build.sh to work with PARTUUID in the linux format, PARTUUID=%U/PARTNROFF=1. Had to handle the '/'. Also fixed a misspelled variable name, devcie -> device. It worked before because a NULL string generated the right results in the current configuration. BUG=chromium:224066 TEST=~/trunk/src/platform/vboot_reference/scripts/image_signing/sign_official_build.sh recovery /home/taysom/trunk/src/build/images/$B/latest/recovery_image.bin /home/taysom/trunk/src/platform/vboot_reference/tests/devkeys /tmp/taysom.bin BRANCH=none Change-Id: Id201885a63c6eba4cdb7c9216c0d3d35e6d3f0c4 Reviewed-on: https://gerrit.chromium.org/gerrit/61889 Tested-by: Paul Taysom <taysom@chromium.org> Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Commit-Queue: Paul Taysom <taysom@chromium.org>
* rollback_index: Remove recovery_mode parameter to SetupTPM.Shawn Nematbakhsh2013-07-238-38/+34
| | | | | | | | | | | | | | | | | | SetupTPM no longer uses recovery_mode parameter for anything other than a debug print. This change moves the debug print to a caller function, then removes recovery_mode from SetupTPM and some caller functions that no longer have a use for it. BUG=chrome-os-partner:20913. TEST=Manual. Boot factory install shim in recovery mode and verify TPM clear operations succeed. Boot in dev mode and verify "Lock physical presence" print on UART. BRANCH=None. Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: I2f671f6680a6e67cf722855e659e99752bc0783c Reviewed-on: https://gerrit.chromium.org/gerrit/62916 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* rollback_index: Add recovery parameter to RollbackKernelLock.stabilize-4443.BShawn Nematbakhsh2013-07-228-18/+12
| | | | | | | | | | | | | | | | | | | | RollbackKernelLock previously checked a global to determine recovery mode state. Since we have two copies of vboot_reference in firmware (in coreboot and depthcharge), this creates a problem with synchronization. Remove the global entirely and instead pass the recovery state to RollbackKernelLock. BUG=chrome-os-partner:20913. TEST=Manual. Boot factory install shim in recovery mode and verify TPM clear operations succeed. Boot in dev mode and verify "Lock physical presence" print on UART. BRANCH=FalcoPeppy. Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: I4e751d4a9ca60cd57c5c662ce86eba595fb22ba2 Reviewed-on: https://gerrit.chromium.org/gerrit/62874 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Add MTD test scriptAlbert Chaulk2013-07-162-21/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | So the quick & dirty hack is to just modify the cgpt command to be cgpt -N=<MTD magic> <rest of the commands> There are a couple limitations of the MTD command versions that will cause them to always fail, so they're skipped if the second argument is empty - boot, adding unknown GUIDs and more than 15 partitions. BUG=chromium:221745 TEST=MTD version of run_cgpt_tests.sh passes BRANCH=none Original-Change-Id: Ida0debdefdc736f38e616801f6a40e67d393f405 Reviewed-on: https://gerrit.chromium.org/gerrit/47177 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> (cherry picked from commit 53fd488fc772e2ed964331fe98eaa21d2a1e471b) Change-Id: Id7af245cc0e8c2dc00fe9ceab9ce0be0e47882ec Reviewed-on: https://gerrit.chromium.org/gerrit/49796 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org>
* MTD: When running on the host (as during install) use the host FTS if possible.Albert Chaulk2013-07-165-7/+83
| | | | | | | | | | | | BUG=chromium:252331 TEST='make runtests' still passes BRANCH=none Change-Id: I1deb70766b811b070f0f412cb5cfa583250dd687 Reviewed-on: https://gerrit.chromium.org/gerrit/61328 Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org>
* Revert "futility: Use flashrom for 'dump_fmap -x'"Simon Glass2013-07-151-34/+24
| | | | | | | | | | | | | | | | | | | | It seems likely that this is causing the reported autoupdate failure, although it will take a bit of time to understand the mechanism. For now, a revert seems safest. BUG=chromium:20939 BRANCH=none TEST=none This revert should be safe since it takes us back to the previous behavior. I will work on repeating the problem and diagnosing it properly. This reverts commit c1bbc75e3ba77019c62eda69db556109faeba607. Change-Id: I303fcbf45d835639b6d5a7f5f6423d0c18890ddf Reviewed-on: https://gerrit.chromium.org/gerrit/62004 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
* futility: Use flashrom for 'dump_fmap -x'factory-pit-4390.BSimon Glass2013-07-111-24/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | New ARM boards use an FDTMAP, which is basically just an FDT. This means that we don't have two potentially conflicting flash maps in the image. Flashrom supports this without issue, but the firmware signer needs dump_fmap to support it also. It would be nice if we had libfmap implementing all this, but this is apparently a long-running clean-up task. So the next best thing is to deal with the flashmap in one program - i.e. flashrom. So support FDTMAP in futility by redirecting 'dump_fmap -x' to flashrom. BUG=chromium:256912 BRANCH=none TEST=manual With the flashrom -x option added, run this: sudo futility dump_fmap -x /build/peach_pit/firmware/image-peach-pit.bin gbb_utility --rootkey=rootkey.bin GBB See that the various chunks of data from the image are output and that gbb_utility completes without error. Change-Id: Id8b2c774a16bdd07968765be5e6609b1b0661a0f Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/60862 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Port MTD structures to use 64-bit byte offsets instead of sectors.Albert Chaulk2013-07-037-75/+119
| | | | | | | | | | | | | | | | | As per the discussion on issue 221745 we will be using 64-bit byte offsets for the MTD partition table and converting to/from sectors internally in cgpt. Existing interfaces do not change, eg sizes are still reported in sectors, only the on-disk representation is affected. BRANCH=none BUG=chromium:221745 TEST=unit tests pass Change-Id: Id312d42783acfdabe6eb8aea11dcbd298e00a100 Reviewed-on: https://gerrit.chromium.org/gerrit/60919 Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org>
* MTD modification commands: add & prioritizeAlbert Chaulk2013-07-032-39/+112
| | | | | | | | | | | | | | | | | | | | | Additionally renames the new functions in add to be CamelCase style BUG=chromium:221745 TEST=MTD version of run_cgpt_tests.sh passes BRANCH=none Original-Change-Id: Ic173f99d7ca4af025403ab11f37061c33c9d59ea Reviewed-on: https://gerrit.chromium.org/gerrit/47173 Tested-by: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> (cherry picked from commit c3aad2fd06a21097cffd10ec5b168e728616b868) Change-Id: Ib3bb947ffcd5c0f40398a27a721e392b895c9da0 Reviewed-on: https://gerrit.chromium.org/gerrit/49795 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org>
* Fix recovery mode entry due to invalid FW hash.Aaron Durbin2013-06-261-0/+7
| | | | | | | | | | | | | | | | | | | | | If FW hash is invalid, it is possible for boot to continue as normal because the shared recovery reason is not updated. Update the shared recovery reason to ensure the bootloader knows to do a recovery boot. This change affects only systems that do not support RO_NORMAL (ex. Haswell systems). BUG=chrome-os-partner:20518. TEST=Run firmware_CorruptBothFwSigAB on Peppy, verify PASS. BRANCH=None. Signed-off-by: Aaron Durbin <adurbin@chromium.org> Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: I3b311416bf8c504deb4154e5850d967253c9dc17 Reviewed-on: https://gerrit.chromium.org/gerrit/60148 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Commit-Queue: Shawn Nematbakhsh <shawnn@chromium.org> Tested-by: Shawn Nematbakhsh <shawnn@chromium.org>
* MTD search commands: show & findstabilize-daisy-4319.96.Brelease-R29-4319.BAlbert Chaulk2013-06-242-60/+284
| | | | | | | | | | | | | | | BUG=chromium:221745 TEST=MTD version of run_cgpt_tests.sh passes BRANCH=none Change-Id: I8a5c1afab238eb10f38d865405ea2828715685d8 Original-Change-Id: I3d72fecbb3ef95252aa35d56885288340537b1c5 Reviewed-on: https://gerrit.chromium.org/gerrit/47175 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/49794 Reviewed-by: Albert Chaulk <achaulk@chromium.org>
* Bugfixes & MTD create commandAlbert Chaulk2013-06-245-56/+82
| | | | | | | | | | | | | | | | | | | | | | | | | Fix some bugs in the cgpt implementation of the flash I/O functions & load logic, it was validating too much at load time. Implement the create command for MTD BUG=chromium:221745 TEST=MTD version of run_cgpt_tests.sh passes BRANCH=none Original-Change-Id: I2f52637d82962f4d805aa827c5c37685f10e76ea Reviewed-on: https://gerrit.chromium.org/gerrit/47172 Tested-by: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> (cherry picked from commit 931544744ba410dad267064b87d504b0b4c24772) Change-Id: If9364155fb2c030645adc6ee6f3fbe5373bcc153 Reviewed-on: https://gerrit.chromium.org/gerrit/49793 Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org>
* cgpt: do not show length of 1 for undefined partitionsMike Frysinger2013-06-241-2/+7
| | | | | | | | | | | | | | | If a partition isn't "defined", then don't declare its size as 1. BUG=chromium:236941 TEST=`cbuildbot {x86,amd64,arm}-generic-full` pass TEST=`cgpt show -i 100 -s chromiumos_image.bin` shows 0 BRANCH=none Change-Id: I538546b6b37a9137958d6f926a58753cf52c946a Reviewed-on: https://gerrit.chromium.org/gerrit/50074 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Mike Frysinger <vapier@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org>
* Correct debug message typoVadim Bendebury2013-06-241-1/+1
| | | | | | | | | | | | | BRANCH=none BUG=none TEST=manual . observe proper function name reported in the debug output Change-Id: I03f87f0f5816db73a105687cd1a67f21c891f677 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/59642 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org>
* dump_fmap: Find correct FMAP structure by checking version.Hung-Te Lin2013-06-212-3/+9
| | | | | | | | | | | | | | | | | | | Firmware images reading its own FMAP structure may have FMAP signature in code and cause dump_fmap to parse incorrectly. Since currently there is only one major version for FMAP (and the structure defined in fmap.h also applies only to current version), we can improve that by checking major version number to skip signatures in firmware code. BUG=chromium:236347 TEST=emerge vboot_reference; dump_fmap /build/daisy/firmware/image.bin # success BRANCH=none Change-Id: I1d8f49bb88357e7a3a945fbdba9d9a7c4e177ac4 Reviewed-on: https://gerrit.chromium.org/gerrit/59362 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: David Hendricks <dhendrix@chromium.org> Tested-by: Hung-Te Lin <hungte@chromium.org> Commit-Queue: Gabe Black <gabeblack@chromium.org>
* Enables MTD mode via command line option.Albert Chaulk2013-06-213-1/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Enables MTD mode with a command line option of -N=<write page bytes>,<write pages per erase block>, <erase block offset to fts partition>,<erase block size of fts partition> The problem is that we need to know exactly where the fts store partition is and what the layout of the flash chip is in order to be able to use it properly. This will vary per-device however, so for flexibility and testing purposes, this command line option allows specification of arbitrary layouts. BUG=chromium:221745 BRANCH=none TEST=verified during development via prints Original-Change-Id: I88640e777d5ccd4ffd3b39e1f131dc1d362c6b2c Reviewed-on: https://gerrit.chromium.org/gerrit/46920 Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> (cherry picked from commit 2b768f99d246823f3711bbe4cf50ea9ab4588a06) Change-Id: I35591d4fbec13c3887beef11fdefc84fc90b8e05 Reviewed-on: https://gerrit.chromium.org/gerrit/49792 Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org>
* Add 5420 to the set of recognizable platformsVadim Bendebury2013-06-201-0/+1
| | | | | | | | | | | | | | | | | | | It is used on peach_pit. BRANCH=none BUG=none TEST=manual . on peach-pit: localhost ~ # echo $(crossystem arch) arm localhost ~ # Change-Id: Ia9a4ea2291d6b672fca1c9e1305961eedc4f60cf Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/59339 Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Provide MTD version of common functionsfactory-4290.BAlbert Chaulk2013-06-184-42/+124
| | | | | | | | | | | | | | | | | | | | | Provide an MTD implementation of several common functions in cgpt_common.c BUG=chromium:221745 BRANCH=none TEST=none Original-Change-Id: Ib3248c283ca31e33a91b9ea0c14b2f72ea7c5850 Reviewed-on: https://gerrit.chromium.org/gerrit/47029 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> (cherry picked from commit b0bd7e4cf8dd15cc3c371dac157093c7e7c7a874) Change-Id: I243c2bf98a88d0019c332b274868459b5f1b8ea1 Reviewed-on: https://gerrit.chromium.org/gerrit/49791 Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org>
* Implement no-op commandsstabilize-4287.Bfactory-pit-4280.BAlbert Chaulk2013-06-143-0/+22
| | | | | | | | | | | | | | | | | | | | | | | Provide implementations for "boot" and "legacy" that error out in MTD mode and "repair" that is a no-op. Eventually if/when we add redundancy, repair will do something, but boot/legacy never will. BUG=chromium:221745 BRANCH=none TEST=none Original-Change-Id: Ie537f20d8dff9d14fb83d0431bd48453bff0217d Reviewed-on: https://gerrit.chromium.org/gerrit/46883 Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> (cherry picked from commit 00c4bc52e35c7c77ebe73322693a457b3dd072f9) Change-Id: I90e6118114554a05245fb8cfcec9567c4705ea96 Reviewed-on: https://gerrit.chromium.org/gerrit/49790 Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org>
* Add GBB flags for disabling software sync and defaulting to legacy bootfactory-spring-4262.Bfactory-skate-4262.459.BRandall Spangler2013-06-125-2/+45
| | | | | | | | | | | | | | | | | | | 1) GBB flag to skip EC software sync, so EC will be untouched. Needed for EC development. 2) GBB flag to default to booting legacy at end of dev screen timeout. Very handy for booting Ubuntu (or other OS). Also added unit tests for the new flags. BUG=chrome-os-partner:20111 BRANCH=none TEST=make runtests Change-Id: I9da87d87014881a1b1393b0b4a5acb921d080066 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/58270 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* EC software sync no longer checks for shutdown requestedRandall Spangler2013-06-122-37/+5
| | | | | | | | | | | | | | | | | | This means that in normal mode the system will boot all the way to the OS before shutting down. In developer or recovery modes, the BIOS screens will still check for shutdown requested and shut down if so. This is necessary in developer mode for security reasons, and because there's no guarantee that a dev OS will still pay attention to the lid switch. BUG=chrome-os-partner:17521 BRANCH=spring TEST=make runtests; unit tests pass Change-Id: I0698b659ad0febcf73043f1e8c5b98681c1bc5ba Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/58109
* Integrate the flash key-value store code into cgpt.stabilize-4255.BAlbert Chaulk2013-06-107-96/+993
| | | | | | | | | | | | | | | | | | | | | | Integrates the FTS driver into cgpt. This driver is binary-format compatible with the linux driver for interoperabiilty. The cgpt changes load & store a hex-encoded mtd partition table in the FTS; we need some sort of encoding because FTS only stores NUL-terminated strings. Currently, the mtd code paths aren't executed in cgpt, only in the tests. It's also not hooked up to the vboot code yet, we will need to do that eventually. BUG=chromium:221745 TEST=new unit test added BRANCH=none Change-Id: I94eb0389d29aca0beb9d9a644465c7d86161b3c2 Original-Change-Id: I9fe2fa91b666572563426adb8fa9d426f9b60bbf Reviewed-on: https://gerrit.chromium.org/gerrit/46796 Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Albert Chaulk <achaulk@chromium.org> Tested-by: Albert Chaulk <achaulk@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/49789
* crossystem: Add device IDs for haswellDuncan Laurie2013-05-231-0/+2
| | | | | | | | | | | | | | | | | 0x8086,0x0a04 is Haswell ULT 0x8086,0x0c04 is Haswell Mobile BUG=chrome-os-partner:19263 BRANCH=none TEST=manual test on slippy hardware: $ crossystem platform_family Haswell Change-Id: Ia885d0c8f0be2fb626257ca513f581df50259173 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/56075 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Changed to use sed for regex pattern matchingPaul Taysom2013-05-211-9/+8
| | | | | | | | | | | | | | | | | The code was using a mixture of shell patterns and sed regular expression. Changed code to just used sed regex. This will let me use more complex regex that are needed for adding PARTUUID to uuids. BUG=chromium:241572 TEST=./security_test_image BRANCH=none Change-Id: I2e8570051b31d580ae36cb82f05383a33236b88e Reviewed-on: https://gerrit.chromium.org/gerrit/51503 Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Queue: Paul Taysom <taysom@chromium.org> Tested-by: Paul Taysom <taysom@chromium.org>
* Added support for PARTUUID=Paul Taysom2013-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | | The Linux kernel expects partitions that are identified by uuid, to have the the uuid prefixed by "PARTUUID=" and an optional suffix of "PARTRNOFF=%d". The change adds additional pattern matching for these strings. This will also let get rid of custom uuid processing in dm-verity, dm-bootcache and dm-verity-chromeos. BUG=chromium:224066 TEST=security_test_image with old and new command line BRANCH=none Change-Id: I71b89dd1df8d7ccd5768c2784078bb869d546bf3 Reviewed-on: https://gerrit.chromium.org/gerrit/51303 Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Queue: Paul Taysom <taysom@chromium.org> Tested-by: Paul Taysom <taysom@chromium.org>
* tpmc: Fix compilation with MOCK_TPM=1toolchainBstabilize-spring-4100.53.Bstabilize-4100.38.Brelease-R28-4100.Bfactory-spring-4131.Bfactory-4128.BDuncan Laurie2013-05-061-0/+13
| | | | | | | | | | | | | | | | | | The tpmc utility is failing to build with: MOCK_TPM=1 emerge vboot_reference Because some functions are not exported by the mocked_tlcl library. This commit adds mocked functions for TlclPacketSize() and TlclSendReceive() BUG=chrome-os-partner:19263 BRANCH=none TEST=manual: MOCK_TPM=1 emerge-fox_wtm2 vboot_reference Change-Id: Iaf4c2dff78272c41572e3b89444346a03be35fbe Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/50225 Reviewed-by: Aaron Durbin <adurbin@chromium.org>
* crossystem: Add LynxPoint to list of valid x86 chipset typesDuncan Laurie2013-05-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Haswell CPUs are paired with the LynxPoint chipset and this needs to be a valid controller name for crossystem. BUG=chrome-os-partner:19263 BRANCH=none TEST=manual This was tested on a wtm2 system to ensure that a GPIO defined in chromeos ACPI that is exported by the kernel at /sys/devices/platform/chromeos_acpi/GPIO.# is used by crossystem and the GPIO is exported in /sys/class/gpio and read. $ cat /sys/devices/platform/chromeos_acpi/GPIO.1/GPIO.2 34 $ cat /sys/class/gpio/gpio196/value 1 $ crossystem wpsw_cur 1 Change-Id: I04064109e99270d7d26b27182b17fffbf47b025b Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/50224 Reviewed-by: Aaron Durbin <adurbin@chromium.org>
* Refactor CgptAdd and CgptPrioitize to remove gpt-specific codeAlbert Chaulk2013-05-068-233/+226
| | | | | | | | | | | | | | | | | | | | - Refactor cgpt_prioitize.c to completely remove gpt-specific code. - Refactor cgpt_add.c to isolate gpt-dependence to one helper function and the backup/restore logic - Change several common apis to take a struct drive* rather than a GptData*, this provides a path to cleanly implement mtd versions BUG=chromium:221745 TEST=no functional changes, existing tests cover this BRANCH=none Change-Id: I27ed166aae390aa5dc83062f62939e45122edc76 Original-Change-Id: I1b0a73509efbf22411c4ae5cf044feede0a49a33 Reviewed-on: https://gerrit.chromium.org/gerrit/46548 Tested-by: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/49788
* Implement cgptlib for MTD devices.Albert Chaulk2013-05-028-25/+913
| | | | | | | | | | | | | | | | | | | | | | | | | Defines MTD on-disk structures & API in mtdlib.h/c that closely mirrors the existing cgpt implementation. Currently, the disk structures do not contain guids or labels, and the number of available partition types and quantities are limited, exactly what we want to support should be decided before we ship this. Adds appropriate test coverage to the unit test library - either by modifying existing tests, or copying them and changing them accordingly. BUG=chromium:221745 TEST=added appropriate tests to the unittests BRANCH=none Change-Id: Iee19864498024c72229bc3c7811594fe762f52de Original-Change-Id: I031eca69d6c8e825b02bd0522d57e92b05eb191a Reviewed-on: https://gerrit.chromium.org/gerrit/46082 Tested-by: Albert Chaulk <achaulk@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Albert Chaulk <achaulk@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/48793 Reviewed-by: Albert Chaulk <achaulk@chromium.org>
* vboot_reference: change position of 'const'stabilize-4068.0.Bstabilize-4035.0.Bstabilize-4008.0.BYunlian Jiang2013-04-121-2/+2
| | | | | | | | | | | | | | BUG=chromium:230465 BRANCH=none TEST=USE="chrome_internal" CFLAGS="-clang -print-cmdline" CXXFLAGS="-clang -print-cmdline" emerge-x86-alex vboot_reference passes. Change-Id: I42466ac27b1ad7f473fc9400461b553646c04617 Reviewed-on: https://gerrit.chromium.org/gerrit/47883 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Yunlian Jiang <yunlian@chromium.org> Tested-by: Yunlian Jiang <yunlian@chromium.org>
* vbutil_kernel: copy zeropage fullyKees Cook2013-04-112-14/+16
| | | | | | | | | | | | | | | | | | When copying the vmlinuz zeropage, the entries were being truncated even though the boot protocol version was being retained. This means that booting a kernel that depended on details from the zeropage's ignored areas would find invalid information. Fix this by copying out the entire possible range of memory. BUG=chromium:230212 TEST=kernels can boot with CONFIG_RELOCATABLE BRANCH=None Change-Id: Ifb94bedcf881e17ab20fff44d8c1c1885b15ef9e Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47832 Reviewed-by: Luigi Semenzato <semenzato@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Clarify comment in VbInit()Randall Spangler2013-04-101-1/+2
| | | | | | | | | | | | | | | In recovery mode we ignore all TPM errors. Just a comment change; no code change. BUG=none BRANCH=none TEST=build vboot Change-Id: I43ed89d0d38347b55e1f6e17b712814f9b972156 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47747 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Build dump_fmap into futility.Bill Richardson2013-04-099-20/+147
| | | | | | | | | | | | | | | | | | This stops creating dump_fmap as a standalone utility and builds it into futility. Since it was already invoked as a symlink, no user-visible changes should be observed. BUG=chromium:224734 BRANCH=none TEST=manual, trybots sudo FEATURES=test emerge vboot_reference FEATURES=test emerge-$BOARD vboot_reference Change-Id: I68d1bea0c1867043b2633e15509b95c2717009a7 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47672 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Build both static and dynamic versions of futility.Bill Richardson2013-04-084-16/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | In almost every case we want the dynamically linked version of futility, because it's smaller and the openssl functions require it (they use dl_open() to invoke the correct RSA libraries). However, the AU shellball requires three futility functions (crossystem, gbb_utility, and dump_fmap). Those pretty much have to be built statically, because they run from the new rootfs and packing all the dynamic libraries into the shellball is way too large and complicated. This change prepares to build both futility (full featured) and futility_s (just those functions). The scripts that create the AU shellball will already choose futility_s from /build/$BOARD/. BUG=chromium:224734 BRANCH=none TEST=none CQ-DEPEND=CL:47589 Nothing to test just yet. The AU shellball is currently broken (it uses the dynamic version of futility and doesn't copy the symlinks anyway), so this should have no effect. We just need to ensure that the _s version doesn't go into any of the other images. Change-Id: I60b8dcd17e135f12a0d29ddacfb9fe8275567c70 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47466
* Add framework for testing builtin futility functions.Bill Richardson2013-04-055-79/+157
| | | | | | | | | | | | | | | | | This tweaks the Makefile and adds a couple of placeholder tests to prepare for testing the builtin futility operations. There aren't any useful builtin functions yet, but this lets us start adding them along with the tests. BUG=chromium:224734 BRANCH=none TEST=none This doesn't actually do anything yet. Change-Id: Iff0ca514f7d26346f072bd80a3bcd04621284843 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47432 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Include generated dependency files for all object files.Bill Richardson2013-04-051-9/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | This just fixes the dependencies for repeated manual builds, so that touching just a couple of files will rebuild the right things. It doesn't do anything for ebuilds, since those always (or should!) compile everything from an empty directory. BUG=chromium:224734 BRANCH=none TEST=none Actually, I tested this by adding a fake target that removed all the listed generated object and dependency files (a side effect of compilation). foo: rm -f ${ALL_OBJS} ${ALL_DEPS} find ${BUILD} -name '*.[od]' Then run "make clean; make; make foo". If there are any .o or .d files left over, they needed to be listed explicitly. I found a bunch. This CL takes care of them. Change-Id: If33f7e13a9f3dbee023b63aa21a47691746bad25 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47407 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Fix Makefile to only build fwlib when asked to, not hostlib too.Bill Richardson2013-04-051-14/+20
| | | | | | | | | | | BUG=chromium:224734 BRANCH=none TEST=manual, trybots Change-Id: I5811a89c3b68de7fd2da032ecf5a56800b4754a4 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47406 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Massive refactoring of external header files.Bill Richardson2013-04-02136-180/+278
| | | | | | | | | | | | | | | | | | | | | | | | This reduces the number of exported header files to the minimum needed by the existing userspace utilities and firmware implementations. BUG=chromium:221544 BRANCH=none TEST=manual, trybots CQ-DEPEND=CL:47019,CL:47022,CL:47023 sudo FEATURES=test emerge vboot_reference FEATURES=test emerge-$BOARD \ vboot_reference \ chromeos-cryptohome \ chromeos-installer \ chromeos-u-boot \ peach-u-boot \ depthcharge Change-Id: I2946cc2dbaf5459a6c5eca92ca57d546498e6d85 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47021 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Simplify the exported FindKernelConfig() function.Bill Richardson2013-03-293-27/+51
| | | | | | | | | | | | | | | | | | FindKernelConfig() is used to extract the kernel cmdline from a kernel partition. It's only used in the chromeos-installer, but was a bit awkward. This changes the calling parameters to make it simpler. BUG=chromium:221544 BRANCH=none TEST=manual CQ-DEPEND=CL:46835 FEATURES=test sudo emerge vboot_reference FEATURES=test emerge-$BOARD vboot_reference Change-Id: Ib7192175d72ad51387d8d122ead4490a4aa62300 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/46834
* Add a QUIET Makefile option to reduce non-error outputSimon Glass2013-03-261-21/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At present building vboot results in some output when there are no warnings/ errors. Add a QUIET option to suppress this. BUG=none BRANCH=none TEST=manual Build without QUIET=1 CC firmware/lib/cryptolib/padding.o CC firmware/lib/cryptolib/rsa.o CC firmware/lib/cryptolib/rsa_utility.o CC firmware/lib/cryptolib/sha1.o CC firmware/lib/cryptolib/sha256.o CC firmware/lib/cryptolib/sha512.o CC firmware/lib/cryptolib/sha_utility.o CC firmware/lib/stateful_util.o CC firmware/lib/vboot_api_firmware.o CC firmware/lib/vboot_common.o CC firmware/lib/vboot_firmware.o CC firmware/lib/tpm_bootmode.o CC firmware/lib/crc8.o CC firmware/lib/utility.o CC firmware/lib/vboot_api_init.o CC firmware/lib/vboot_common_init.o CC firmware/lib/vboot_nvstorage.o CC firmware/lib/rollback_index.o CC firmware/lib/tpm_lite/tlcl.o CC firmware/lib/cgptlib/cgptlib.o CC firmware/lib/cgptlib/cgptlib_internal.o CC firmware/lib/cgptlib/crc32.o CC firmware/lib/utility_string.o CC firmware/lib/vboot_api_kernel.o CC firmware/lib/vboot_audio.o CC firmware/lib/vboot_display.o CC firmware/lib/vboot_kernel.o RM vboot_fw.a AR vboot_fw.a Build with QUIET=1: (no output from Makefile) Change-Id: I35e057df6c640ed06325092365934d870240b9cf Reviewed-on: https://gerrit.chromium.org/gerrit/46533 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> Commit-Queue: Simon Glass <sjg@chromium.org>
* crossystem: Fix cros_debug detection on non-chrome systems.toolchainAstabilize-3912.79.Brelease-R27-3912.BHung-Te Lin2013-03-201-1/+3
| | | | | | | | | | | | | | | | | | | "cros_debug" is usually the last token of kernel command line on UEFI/legacy BIOS systems. However, kernel command line may end with new line ("\n") and that may cause strcmp to fail (i.e., can't detect "cros_debug" if it's the last parameter in command line), so we need to add that into strtok delimiters. BRANCH=none BUG=chromium:222248 TEST=crossystem cros_debug # display 1 on UEFI system with cros_debug Change-Id: I9aed1562291469118acbadcc5211ff5c45eb9feb Reviewed-on: https://gerrit.chromium.org/gerrit/46106 Tested-by: Hung-Te Lin <hungte@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Hung-Te Lin <hungte@chromium.org>
* Apply consistent naming scheme for hostlib functions.Bill Richardson2013-03-2022-50/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The chromeos-installer uses several functions from the vboot_reference userspace library, but the names of those functions are inconsistent: IsZero MapFile VbGetSystemPropertyString cgpt_add cgpt_boot cgpt_create cgpt_get_boot_partition_number cgpt_get_num_non_empty_partitions cgpt_get_partition_details cgpt_prioritize cgpt_set_attributes find_kernel_config The Google C++ style guide says types and functions should use CamelCase, while variables use lower_case_with_underscores. Kernel style (which vboot_reference tries to be more-or-less compatible with) uses lower_case_with_underscores for everything, but that really only has to apply to firmware stuff. For userspace, we can use the Google style. BUG=chromium:221544 BRANCH=none TEST=buildbot CQ-DEPEND=CL:46045 Renaming/cleanup only; no functional changes. Change-Id: I9c82c9ff8909be88586194c8ffdb435fc771195f Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/46044
* Remove unused 'autotest' directory (real one's in autotest repo).Bill Richardson2013-03-208-495/+0
| | | | | | | | | | | | | | There are three tests in the local autotest directory. All of them have been moved to the autotest repository long ago. BUG=none BRANCH=none TEST=trybot Change-Id: I53d858db44bd2f84de8a7d61995ebe3d737eaebe Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/45994 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Get rid of some crufty macros.Gabe Black2013-03-1943-199/+57
| | | | | | | | | | | | | | | | | | | | | | | These were macros that were never used, or that were only set to one thing and could be substituted up front. I left in code guarded by the HAVE_ENDIAN_H and HAVE_LITTLE_ENDIAN macros even though those are never defined because they guard a reportedly significantly faster implementation of some functionality, at least according to a comment in the source. It would be a good idea to enable that code path and see if it really does make a big difference before removing it entirely. BUG=None TEST=Built for Link, Daisy, and the host with FEATURES=test. Built depthcharge for Link and booted in normal mode. BRANCH=None Change-Id: I934a4dd0da169ac018ba07350d56924ab88b1acc Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: https://gerrit.chromium.org/gerrit/45687 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Gabe Black <gabeblack@chromium.org> Tested-by: Gabe Black <gabeblack@chromium.org>
* Get rid of the now unused biosincludes.h headers.stabilize-3881.0.BGabe Black2013-03-194-186/+0
| | | | | | | | | | | | | | | | These are no longer necessary. BUG=None TEST=Built for Daisy, Link, Lumpy. BRANCH=None Change-Id: I8db7dde1ba52bd5cf1881481ef6a502a5b509439 Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: https://gerrit.chromium.org/gerrit/45686 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Gabe Black <gabeblack@chromium.org> Commit-Queue: Gabe Black <gabeblack@chromium.org>
* Don't include biosincludes.h any more.Gabe Black2013-03-181-10/+0
| | | | | | | | | | | | | | | | | | | It's no longer necessary and adds complexity. BUG=None TEST=Built vboot_reference (with FEATURES=test), chromeos-u-boot, depthcharge, chromeos-factory, chromeos-factoryinstall, chromeos-initramfs, and chromeos-cryptohome for daisy, lumpy, link, alex, and fox_wtm2 where applicable. Built vboot_reference for the host. BRANCH=None Change-Id: Ic2d70b92b25d57fd9ca1d9ad47d9889f6adc85e7 Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: https://gerrit.chromium.org/gerrit/45685 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Gabe Black <gabeblack@chromium.org> Tested-by: Gabe Black <gabeblack@chromium.org>
* Wrap all vboot utilities with futility.firmware-spring-3833.Bfactory-spring-3842.BBill Richardson2013-03-1111-37/+565
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves all the old userspace utilities generated by vboot_reference into a subdirectory not in $PATH, and replaces them with symlinks to a single executable named 'futility'. At the moment that utility just execs the original utilities (optionally logging that fact first). Ultimately, the old utilities will be subsumed into a single binary instead of multiple separate executables. There is a matching CL needed to make the recovery image creation work. BUG=chromium-os:37062 BRANCH=none CQ-DEPEND=CL:44864 TEST=auto To test, build everything, test everything. It should work as before in all cases. I have built normal images, test images, factory installers, recovery images; they all seem to work. I've run trybots on daisy-paladin link-paladin lumpy-paladin and alex-paladin. Change-Id: Ie93db676f2ed2a64e4b13b3b5dc6b65a77db0f8c Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/44871 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
* Rename Strncat to StrnAppend, use it instead of strncat.firmware-spring-3824.Bfirmware-spring-3824.84.Bfirmware-spring-3824.55.Bfirmware-spring-3824.4.Bfirmware-skate-3824.129.BBill Richardson2013-03-066-59/+60
| | | | | | | | | | | | | | | | | | Strncat() looks almost like strncat(), but it's completely different. Change the name to reduce confusion. Also fix a place where strncat() was misused anyway. BUG=none BRANCH=all TEST=manual sudo FEATURES=test emerge vboot_reference FEATURES=test emerge-$BOARD vboot_reference Change-Id: I39c30d391aa6566ec67461462e800720ade66a91 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/44572
* Use Memcpy to avoid unaligned accesses when using RollbackKernelSpace.Gabe Black2013-03-041-6/+9
| | | | | | | | | | | | | | | | | | | | This structure, like RollbackSpaceFirmware in my previous CL, contains members that are inherently unaligned. This breaks when the machine running vboot cares about alignment. Like before, I'm using Memcpy to avoid the direct unaligned accesses. BUG=chrome-os-partner:17340 TEST=Built and booted into depthcharge on Snow. Without this change, there's an unaligned access in RollbackKernelRead. After this change, the unaligned access goes away and vboot gets at the kernel version successfully. BRANCH=None Change-Id: Ifcdcee1ab4bbce74d05e563cb82bef73a1aa9a84 Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: https://gerrit.chromium.org/gerrit/44503 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Gabe Black <gabeblack@chromium.org> Tested-by: Gabe Black <gabeblack@chromium.org>