summaryrefslogtreecommitdiff
path: root/extra/usb_updater/gsctool.c
Commit message (Collapse)AuthorAgeFilesLines
* Revert "gsctool: add support for USER_PRES vc"stabilize-voshyr-14637.B-cr50_stabstabilize-14633.B-cr50_stabstabilize-14616.B-cr50_stabstabilize-14589.B-cr50_stabstabilize-14588.98.B-cr50_stabstabilize-14588.14.B-cr50_stabstabilize-14588.123.B-cr50_stabrelease-R101-14588.B-cr50_stabfactory-guybrush-14600.B-cr50_stabBrian Norris2022-03-141-65/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d4b3156ccadb281842b22bb3bd2ad41ab1da5c9b. Reason for revert: new warnings/errors cause build failures b/224575372 Original change's description: > gsctool: add support for USER_PRES vc > > Add support for sending and interpreting the user_pres vendor command. > > BUG=b:208504127 > TEST=none > > Change-Id: I7e20f448011ffb2a15ae352a4c1e49b72afa015d > Signed-off-by: Mary Ruthven <mruthven@chromium.org> > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3495864 > Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Bug: b:208504127, b:224575372 Change-Id: I4a6c8813da5c4ed31ac6adcb410d6869ca7ec9ec Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3523383 Owners-Override: Brian Norris <briannorris@chromium.org> Auto-Submit: Brian Norris <briannorris@chromium.org> Commit-Queue: Brian Norris <briannorris@chromium.org> Tested-by: Brian Norris <briannorris@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org> Commit-Queue: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@google.com> Commit-Queue: Abhishek Pandit-Subedi <abhishekpandit@google.com>
* gsctool: add support for USER_PRES vcMary Ruthven2022-03-141-1/+65
| | | | | | | | | | | | Add support for sending and interpreting the user_pres vendor command. BUG=b:208504127 TEST=none Change-Id: I7e20f448011ffb2a15ae352a4c1e49b72afa015d Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3495864 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* gsctool: search on 2KB boundary instead of 16KB boundary for headerJett Rink2022-03-081-5/+5
| | | | | | | | | | | | | | | | | | | We relaxed the RW header alignment search in RO to be on the 2KB boundary instead of 16KB. This gives us more room if RO grows. ti50 already supports this. Also 2KB is the lowest is would every go since that is a hardware page boundary. BUG=b:217564005 TEST=see that gsctool can upgrade with an image that isn't align on 16KB boundary but it aligned on 2KB boundary. Change-Id: I0b05de6191d566a01b629d09d95f3d214282e454 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3508830 Reviewed-by: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* ap_ro_status: report the button status if verification is unsupportedMary Ruthven2021-10-151-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Shimless RMA needs to know if the button combo triggered AP RO verification even if AP RO verification isn't supported. This change adds two new responses AP_RO_UNSUPPORTED_TRIGGERED(5) and AP_RO_UNSUPPORTED_NOT_TRIGGERED(4) to tell if the button combo was pressed on a board that doesn't support AP RO verification. The old AP_RO_UNSUPPORTED value, 3, isn't returned by cr50 anymore. AP_RO_PASS(1) and AP_RO_FAIL(2) are still used. They both mean the combo was triggered. AP_RO_NOT_RUN(0) is still used. It still means the combo wasn't triggered. Summary of the states - pressed - AP_RO_PASS(1), AP_RO_FAIL(2), AP_RO_UNSUPPORTED_TRIGGERED(5) - not pressed - AP_RO_NOT_RUN(0) and AP_RO_UNSUPPORTED_NOT_TRIGGERED(4) - unknown - AP_RO_UNSUPPORTED_UNKNOWN(3) BUG=b:181000999 TEST=use gsctool to get the AP RO verification status on cr50 images with the new and old version of the get AP RO status vendor command. Change-Id: Ib2b33e69a4d4165fc2c13437a919b8f2a83c1bba Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3213112 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Commit-Queue: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: add new get ap ro hash errorsMary Ruthven2021-06-181-2/+8
| | | | | | | | | | BUG=b:185783841 TEST=none Change-Id: I4c9a43efd2d3c5e77a681b8b10054a07df99df96 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2953866 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: add support for getting AP RO boot statusMary Ruthven2021-06-181-0/+52
| | | | | | | | | | | | Add support for running the VENDOR_CC_GET_AP_RO_STATUS vendor command. BUG=b:182594555 TEST=gsctool -aB prints the AP RO verification status Change-Id: If14073894441657746a84cff8f778fd57a126625 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2951963 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: add --dauntless flag and default to havenstabilize-14029.B-cr50_stabJett Rink2021-06-101-1/+13
| | | | | | | | | | | | | | | | | | For commands that do not take in an image, we cannot tell if we are communicating with a haven or dauntless chip automatically. Add a way to specify if we are communicating with a dauntless chip. Default to haven if the optional --dauntless flag is not present BUG=b:190659004 TEST=execute `gsctool -I` on haven chip and see success TEST=execute `gsctool -I --dauntless` on haven chip and see failure that it cannot find device with dauntless VID:PID Change-Id: Ia92422846d283eba5b27cfaa130c782f13af90ca Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2952837 Commit-Queue: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* gsctool: use dauntless vid:pid as default for d2 imagesJett Rink2021-03-231-12/+12
| | | | | | | | | | | | | | | | If a dauntless image is passed in on the command line, then default the vid:pid to daunltess's vid:pid if it wasn't specified on the command line. BUG=none TEST=upgraded d2 image without specifying -d option TEST=upgraded cr50 image without specifying -d option Change-Id: I8387d9d27432f6911df03e16249e91bd44b5558b Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2782361 Commit-Queue: Vadim Bendebury <vbendeb@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* cleanup: remove unnecessary image size paddingJett Rink2021-02-191-4/+2
| | | | | | | | | | | | | | | | For dauntless images, we say that the image goes to the next 16KB aligned address, but this will get reduce anyway since we don't send the 0xFFs as the end of the transfer. Removing this just reduces unnecessary complexity BUG=none TEST=update firmware on D2 TEST=update firmware on H1 (should be no change) Change-Id: I03ce12b85138b9200a8e48ad441221d3aa3f1609 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2706038 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: use SHA256 digest for D2 instead of SHA1Jett Rink2021-02-191-19/+60
| | | | | | | | | | | | | | | Since Dauntless does not support SHA1, we need to send a SHA256 digest prefix for each firmware update packet. Haven should be unaffected by this change as it will still use SHA1 BUG=b:179683616 TEST=Verify D2 using SHA256 for validation works TEST=Verify H1 using SHA1 still works Change-Id: I4627d3d4d90e0bbe0dae78d4bb29852fad1a3149 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2702316 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: drop logic for non-background supportJett Rink2021-02-191-37/+10
| | | | | | | | | | | | | | | | | | | We won't encounter H1 older than 0.0.22, and all dauntless will support background update support The alpha firmware drop (b:180042261) contains support for VENDOR_CC_TURN_UPDATE_ON in addition to VENDOR_CC_IMMEDIATE_RESET. Use VENDOR_CC_TURN_UPDATE_ON as the default. BUG=b:162244909,b:172465629 TEST=Upgrade firmware with alpha firmware before and after this change TEST=verify that Cr50 upgrade works as well Change-Id: Ibaf1d867dd4135f0041aa53273515e4228508cc3 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2702315 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* usb_updater: gsctool: fix buffer truncation warn/errorAdrian Ratiu2021-01-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC starting with v7 introduced a new warning triggered by the snprintf calls which fails the build due to having -Werror on. CrOS is upgrading GCC 4.9 -> 10.2. The fix here is to increase the buffer size a bit so the entire max string content can fit into the buffer, thus not triggering GCC's bounds checks. gsctool.c: In function 'process_erase_ap_ro_hash': gsctool.c:1540:37: error: ', size ' directive output truncated writing 7 bytes into a region of size between 0 and 2 [-Werror=format-truncation=] 1540 | "misconfigured response, rc=%d, size %zd", | ~~^~~~~ gsctool.c:1540:5: note: using the range [-..., ...] for directive argument 1540 | "misconfigured response, rc=%d, size %zd", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gsctool.c:1539:3: note: 'snprintf' output between 37 and 66 bytes into a destination of size 30 1539 | snprintf(error_details, sizeof(error_details), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1540 | "misconfigured response, rc=%d, size %zd", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1541 | rv, response_size); | ~~~~~~~~~~~~~~~~~~ gsctool.c:1534:38: error: ', response ' directive output truncated writing 11 bytes into a region of size between 0 and 9 [-Werror=format-truncation=] 1534 | "Unexpected error rc %d, response %d", | ~~~~~~~~~^~ gsctool.c:1533:4: note: 'snprintf' output between 34 and 46 bytes into a destination of size 30 1533 | snprintf(error_details, sizeof(error_details), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1534 | "Unexpected error rc %d, response %d", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1535 | rv, response); | ~~~~~~~~~~~~~ cc1: all warnings being treated as errors BUG=chromium:1169162 TEST=Local builds using GCC 10.2.0. Change-Id: Ib66eb6a877c52a8bd6e82a7e76d040ff927ec691 Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2645125 Tested-by: Adrian Ratiu <adrian.ratiu@collabora.corp-partner.google.com> Commit-Queue: Vadim Bendebury <vbendeb@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* coil: replace coil terms in gsctoolMary Ruthven2021-01-061-1/+1
| | | | | | | | | | BUG=b:175244613 TEST=make buildall -j Change-Id: I59278215bfc40886b213442918c07fcdbe9bbfe7 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2613452 Reviewed-by: Namyoon Woo <namyoon@chromium.org>
* gsctool: add ti50 image supportJett Rink2021-01-061-62/+214
| | | | | | | | | | | | | | | | | | Based on the input image, we determine if this is a CR50 image or a Dauntless image. The magic lets us determine which type of image it is. For D2 images, we scan for the RW header instead of using hard coded offsets as this will allow us to change where the RW is located (if RO contracts or expands). BUG=b:172465629 TEST=sent image to D2 from gsctool via CCD TEST=flash new H1 image to volteer using to slot B Signed-off-by: Jett Rink <jettrink@chromium.org> Change-Id: I7554c978a9ba83b423fbaf43c62f9f0d6711d071 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2585926 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: print raw timestamp with gsctool -LMMary Ruthven2021-01-051-12/+19
| | | | | | | | | | | | | | | | | | The UMA get flog script expects a raw timestamp without spaces around the colon. Output the UMA format when the machine arg is given. gsctool -aL still prints the incorrect year in the timestamp. That will get fixed in a followup CL. BUG=b:176816528 TEST=gsctool -aML outputs the old format. gsctool -aL still prints the output with timestamps. Change-Id: Ie11204260958f48485c28917c31d62d78c5b722c Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2610932 Reviewed-by: Andrey Pronin <apronin@chromium.org> Commit-Queue: Andrey Pronin <apronin@chromium.org>
* gsctool: add support for GET_AP_RO_HASH vendor commandMary Ruthven2020-11-181-0/+50
| | | | | | | | | | | | Add the gsctool support for the GET_AP_RO_HASH vendor command BUG=b:168634745 TEST=gsctool -aA Change-Id: I9c14446fbea22e428ca920341a8c1618b82722a3 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2547198 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: add option to erase AP RO hashVadim Bendebury2020-05-291-3/+55
| | | | | | | | | | | | | | | | | | | The new option triggers sending the VENDOR_CC_SEED_AP_RO_CHECK vendor command with the empty payload. The Cr50 response indicates if the erase succeeded or there were problems (either board ID space not erased, or flash erase operation failed). BUG=b:153764696 TEST=verified successful erase of the AP RO flash space on devices with empty board ID space, and failure to erase in case board ID space is programmed with the appropriate error message. Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: I4b7c981323771b73a837e766bd5e94e3824e8e00 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2204976 Reviewed-by: Namyoon Woo <namyoon@chromium.org>
* gsctool: print sensible date when listing flash log contentsVadim Bendebury2020-05-111-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Displaying epoch values in the flash log entries does not help the end user to synchronize the flash log events with other logs generated on the device. This patch changes the log output format to display the device time zone in the first line and then all present log entries with timestamp in 'dd:mm:yy hh:mm:ss' format. BUG=b:153764696 TEST=ran the new gsctool image on a Chrome OS device: $ gsctool -a -L Log time zone is PST Dec 31 69 16:00:01 : 00 May 06 20 21:20:41 : 09 01 ... May 08 20 12:09:21 : 09 00 May 08 20 12:09:22 : 09 03 May 08 20 12:09:23 : 09 06 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: I3fca12e1679fbdd9e0e168606014e84c89c42402 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2191282 Reviewed-by: Namyoon Woo <namyoon@chromium.org>
* gsctool: supprot enabling write protection (WP)Vadim Bendebury2020-04-141-13/+39
| | | | | | | | | | | | | | | | This patch makes use of the modification of the vendor command VENDOR_CC_WP, which allows to enable WP. BUG=b:153881773 TEST=verified that attempts to enable WP when running the unmodified Cr50 image fail with error message "Early Cr50 versions do not support setting WP", and that the updated Cr50 image allows to enable WP using 'gsctool -a -w enable' Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: Ie28c1c9b171dd6ea2e3edc0ae624f953cb4fa4fe Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2149526 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* gsctool: get the current system boot modeNamyoon Woo2020-03-061-2/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gsctool -g or --getbootmode can get the current system boot mode. BUG=b:141578322 BRANCH=cr50 TEST=ran on helios. $ ./extra/usb_updater/gsctool --getbootmode finding_device 18d1:5014 Found device. found interface 3 endpoint 4, chunk_len 64 READY ------- Boot mode = 0x00: NORMAL $ ./extra/usb_updater/gsctool -g finding_device 18d1:5014 Found device. found interface 3 endpoint 4, chunk_len 64 READY ------- Getting boot mode Boot mode = 0x00: NORMAL Change-Id: Id024ac94fb08b680bd5e190bc7eeb2de301b70a2 Signed-off-by: Namyoon Woo <namyoon@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2058128 Reviewed-by: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: add 'force_ro' optionstabilize-12951.B-cr50_stabVadim Bendebury2020-02-281-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | By design gsctool does not update the inactive RO unless the running RO version is lower than the version in the Cr50 image being transferred. With transition to the new RO version, keys and rollback map state, there is a need to enforce that both ROs on the device are updated. This patch adds a command line option which allows to update the inactive RO to the contents of the Cr50 image. BRANCH=none BUG=b:136284186 TEST=running 'gsctool -q cr50.bin' updates the inactive RO section. Change-Id: I79c21fc2cd41c40070352d8fbce0b71dd3ae2b1f Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1949547 Reviewed-by: Namyoon Woo <namyoon@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org> (cherry picked from commit 53f59f6b361e8cf0a8d1af70306146db90ffae23) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2058127 Tested-by: Namyoon Woo <namyoon@chromium.org> Commit-Queue: Namyoon Woo <namyoon@chromium.org>
* gsctool: delay RO update for old cr50 imagesMary Ruthven2019-11-221-0/+35
| | | | | | | | | | | | | | | | If Cr50 is running older than 0.3.20, delay the RO update 1 minute after the RW update, so Cr50 doesn't reject the RO blocks because their offsets are less than the RW offsets. BUG=b:144873413 BRANCH=none TEST=update board running RO 0.0.10 RW 0.3.18 to the RO 0.0.11 RW 0.3.22 image. Change-Id: I0179cc235c692133b08cd3430d71069b2f94bf69 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1929481 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: print devid in image version outputMary Ruthven2019-08-131-0/+24
| | | | | | | | | | | | | | | If the image is node locked to a devid, print that information in the '-b' output. BUG=none BRANCH=none TEST=get version output of node locked and prod signed image. Change-Id: I0db2828d7bd699013ec84467c7e2a4b918bd7b27 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1742913 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: add support for endorsement seed vcMary Ruthven2019-08-131-3/+85
| | | | | | | | | | | | | | | Add support for getting and setting the endorsement key using the vendor command. BUG=b:138943966 BRANCH=none TEST=Get/Set endorsement seed using vendor command. Change-Id: I5c2f5d9efa0fbc236731430cac650785693c8db8 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1740076 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: make options mutually exclusiveMary Ruthven2019-08-131-2/+3
| | | | | | | | | | | | | | | | Fix the mutually exclusive check, so using 2 raises an error. Also fix the error message to show -U instead of -u. Upstart isn't exclusive. CCD unlock is. BUG=none BRANCH=none TEST=gsctool -i -U raises an error. Change-Id: Iaf43f18fefc1a8c4b6612b05daa5c82a7680b310 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1742220 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: process intermittent flash log retrieval errorsVadim Bendebury2019-06-041-12/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Flash log access could be denied in case there is a previously started log operation in progress. Flash log by design is a 'the best effort' facility, let's re-try a few times if Cr50 returns an error when flash log read is attempted. Also, allow the -L optional parameter to be a decimal value, this is better aligned with the output format where timestamp is reported as a decimal value. BRANCH=none BUG=b:132287488 TEST=ran two concurrent processes, one constantly adding flash log entries using Cr50 console command, and another one constantly retrieving entries using 'gsctool -a -L' observed reliable operation over long periods of time, with occasional flash log lockup log entries reported by the Cr50 (as expected). - verified proper operation when a decimal value is passed in as a -L optional parameter. Change-Id: I4510490c73d616e0d84776f483b9ee7bf11bcbc3 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1639094 Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: make more debug output availableVadim Bendebury2019-06-011-4/+4
| | | | | | | | | | | | | | This would allow to see up to 20 bytes of each packet sent to the TPM when -v command line option is passed to gsctool. BRANCH=none BUG=none TEST=ran 'gsctool -a -L -v' and observed expected traces. Change-Id: If0988e71a3856b2e213b906315651a84051317ce Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1639095 Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: add ability to get/set flash log timestamp baseVadim Bendebury2019-05-241-1/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recently introduced vendor command is used to get or set flash log timestamp. BRANCH=none BUG=b:132287488 TEST=on the device ran various incarnations of the command (> prompt on the Cr50 console, # is the DUT bash): > flo 10 10 > flo 1:00 13:0a 0a 0b 0c 0d 0e 0f 10 11 12 13 ==== afger a few seconds ===== # /var/tmp/gsctool -a -T Current H1 time is 68 ==== afger some more time ===== > flo 5 5 > flo 1:00 13:0a 0a 0b 0c 0d 0e 0f 10 11 12 13 398:05 05 06 07 08 09 # /var/tmp/gsctool -a -T 300 error: return value 1 # /var/tmp/gsctool -a -T 1000000 > flo 6 6 > flo 1:00 13:0a 0a 0b 0c 0d 0e 0f 10 11 12 13 398:05 05 06 07 08 09 1000022:06 06 07 08 09 0a 0b # /var/tmp/gsctool -a -T Current H1 time is 1000052 Change-Id: I16ceb97a32b4d452705f9df3826151f3e4e45832 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1610721 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: further optimize parameter descriptionVadim Bendebury2019-05-241-56/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need to duplicate short and long option strings in the .opt and .help_text fields, one is enough. To properly format --help output in case the command line argument expects a parameter, part of the .help_text string has to be printed concatenated with the option strings. Let's retrieve the short and long option strings form from the .opt structure and use '%' as the formatting character to allow to indicate that the the beginning of the help message needs to be printed concatenated with the option strings. Also correct the general description. BRANCH=none BUG=none TEST=help text before this change: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $ gsctool -h Usage: gsctool [options] [<binary image>] This utility allows to update Cr50 RW firmware, configure various aspects of Cr50 operation, analyze Cr50 binary images, etc. The required argument is the file name of a full RO+RW binary image. A typical Chromebook use would expect -s -t options included in the command line. Options: -a,--any Try any interfaces to find Cr50 (-d, -s, -t are all ignored) -b,--binvers Report versions of Cr50 image's RW and RO headers, do not update -c,--corrupt Corrupt the inactive rw -d,--device VID:PID USB device (default 18d1:5014) -f,--fwver Report running Cr50 firmware versions -F,--factory [enable|disable] Control factory mode -h,--help Show this message -I,--ccd_info Get information about CCD state -i,--board_id [ID[:FLAGS]] Get or set Info1 board ID fields ID could be 32 bit hex or 4 character string. -k,--ccd_lock Lock CCD -L,--flog [prev entry] Retrieve contents of the flash log (newer than <prev entry> if specified) -M,--machine Output in a machine-friendly way. Effective with -b, -f, -i, and -O. -m,--tpm_mode [enable|disable] Change or query tpm_mode -n,--serial SERIAL Cr50 CCD serial number -O,--openbox_rma <desc_file> Verify other device's RO integrity using information provided in <desc file> -o,--ccd_open Start CCD open sequence -P,--password Set or clear CCD password. Use 'clear:<cur password>' to clear it -p,--post_reset Request post reset after transfer -R,--sn_rma_inc RMA_INC Increment SN RMA count by RMA_INC. RMA_INC should be 0-7. -r,--rma_auth [auth_code] Request RMA challenge, process RMA authentication code -S,--sn_bits SN_BITS Set Info1 SN bits fields. SN_BITS should be 96 bit hex. -s,--systemdev Use /dev/tpm0 (-d is ignored) -T,--tstamp <stamp> Set flash log timestamp base -t,--trunks_send Use `trunks_send --raw' (-d is ignored) -U,--ccd_unlock Start CCD unlock sequence -u,--upstart Upstart mode (strict header checks) -V,--verbose Enable debug messages -v,--version Report this utility version -w,--wp Get the current wp setting ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ and after this change: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $ ./extra/usb_updater/gsctool -h Usage: gsctool [options] [<binary image>] This utility allows to update Cr50 RW firmware, configure various aspects of Cr50 operation, analyze Cr50 binary images, etc. <binary image> is the file name of a full RO+RW binary image. Options: -a,--any Try any interfaces to find Cr50 (-d, -s, -t are all ignored) -B,--background_update_supported Force background update mode (relevant only when interacting with Cr50 versions before 0.0.19) -b,--binvers Report versions of Cr50 image's RW and RO headers, do not update -c,--corrupt Corrupt the inactive rw -d,--device VID:PID USB device (default 18d1:5014) -f,--fwver Report running Cr50 firmware versions -F,--factory [enable|disable] Control factory mode -h,--help Show this message -I,--ccd_info Get information about CCD state -i,--board_id [ID[:FLAGS]] Get or set Info1 board ID fields. ID could be 32 bit hex or 4 character string. -k,--ccd_lock Lock CCD -L,--flog [prev entry] Retrieve contents of the flash log (newer than <prev entry> if specified) -M,--machine Output in a machine-friendly way. Effective with -b, -f, -i, and -O. -m,--tpm_mode [enable|disable] Change or query tpm_mode -n,--serial Cr50 CCD serial number -O,--openbox_rma <desc_file> Verify other device's RO integrity using information provided in <desc file> -o,--ccd_open Start CCD open sequence -P,--password Set or clear CCD password. Use 'clear:<cur password>' to clear it -p,--post_reset Request post reset after transfer -R,--sn_rma_inc RMA_INC Increment SN RMA count by RMA_INC. RMA_INC should be 0-7. -r,--rma_auth [auth_code] Request RMA challenge, process RMA authentication code -S,--sn_bits SN_BITS Set Info1 SN bits fields. SN_BITS should be 96 bit hex. -s,--systemdev Use /dev/tpm0 (-d is ignored) -T,--tstamp [<tstamp>] Get or set flash log timestamp base -t,--trunks_send Use `trunks_send --raw' (-d is ignored) -U,--ccd_unlock Start CCD unlock sequence -u,--upstart Upstart mode (strict header checks) -V,--verbose Enable debug messages -v,--version Report this utility version -w,--wp Get the current wp setting ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Change-Id: I5afd2473dbdaf9edc515ee9f02b932effe3755c5 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1628113 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: consolidate processing of optional parametersVadim Bendebury2019-05-241-29/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Standard libc getopt_long() and getopt() functions do not allow the optional parameters to follow the command line option without the equal sign ('='), but gsctool utility users expect this form to be available, so additional processing is done for command line arguments accepting optional parameters. This additional processing code is duplicated for each such argument. On top of that, some arguments which described as requiring the parameter (not optional) still include code which looks for the command line option. Information about expected parameter type is included in the long options descriptor table, so it is not readily available if the user specified the short version of the argument in the command line. To consolidate processing of the optional parameters in one place, in case the user specified the short version of the command line argument, the long_opts table is looked up to find the appropriate long version, then the parameter type is checked, and if the parameter is supposed to be optional, the next command line token is examined to determine if this is the optional parameter. BRANCH=none BUG=none TEST=tried the following commands: - tried the following commands: ./extra/usb_updater/gsctool -b # reports missing file name error # All the following succeed processing command line parameters: ./extra/usb_updater/gsctool -m ./extra/usb_updater/gsctool -m enable ./extra/usb_updater/gsctool --tpm_mode enable ./extra/usb_updater/gsctool --tpm_mode=enable # All the following fail processing command line parameters # reporting 'Invalid tpm mode arg: xxx.': ./extra/usb_updater/gsctool -m xxx ./extra/usb_updater/gsctool --tpm_mode xxx ./extra/usb_updater/gsctool --tpm_mode=xxx Change-Id: I68e9cc312aa8a5a2cccbd78df66a24ac71f78c36 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1621185 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: refactor command line arguments processingVadim Bendebury2019-05-241-89/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are a couple of issues with command line processing code: - command line options must be listed in two different places if we want to allow both short and long forms of the same argument - help text for commands is included in yet another place in the code Indeed, from the libc getopt_long() point of view the long options table and short options string are completely unrelated: the function scans the command line arguments vector for -x[x[y]] or --word command line options style and looks up either short_opts or long_opts depending on the encountered command line token's style. The standard way to cross reference long options table and the short options string is to put the short option character in the long option table's entries .val field. This is how it is done in gsctool. What this means is that as long as all short command options are referenced in the long_opts table, the short command option string could be generated based no the long_opts table. The help text and long_opts table would still remain separate and require manual syncing. To help with that problem this patch introduces a container structure, which includes both long option contents and the help text for each command line option. This allows to build the long_opts table and then the short_opts string on the fly, based on the contents of the single table, and also generated the --help output, ensuring consistency of all representations. BRANCH=none BUG=none TEST=as follows: - temporarily added debug code to print out the generated short option string, got the following: aBbcd:fF:hIikLMmn:O:oPpR:rS:stUuVvw which is extended to include previously omitted 'f': aBbcd:F:fhIikLMmn:O:oPpR:rS:stUuVvw - verified that 'gsctool -h' outputs before and after this patch are the same apart from including help text for -B - verified that it is still possible to update a Cr50 - verified --board_id/-i command with various optional parameter representations. Change-Id: Ie8d409c6c8866247323cee93ce5b9bfbe22046fa Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1617077 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: use the usb serial number to find the usb deviceMary Ruthven2019-05-121-3/+19
| | | | | | | | | | | | | | | | | Add a serial number arg that can be used to specify which CCD device to use. If there are multiple CCD devices, you can use this arg to pick which device to update. BUG=none BRANCH=none TEST='gsctool -f -n $SERIAL' can be used to get the cr50 version from two chromebooks connected to the same machine. 'gsctool -f' still works too. Change-Id: I91cbfdc7d62bee2623919e4dded62f92ba7adb19 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1600501 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* usb_if: use the device with the matching serial numberMary Ruthven2019-05-121-1/+1
| | | | | | | | | | | | | | There might be multiple devices with the same VID:PID connected to the host. Use the serial number to find the correct device if it is given. BUG=none BRANCH=none TEST=none Change-Id: I96f31e8e7ceb0dd2c3c643771b38752da88a2a9e Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1600500 Reviewed-by: Matthew Blecker <matthewb@chromium.org>
* gsctool: enforce order of Cr50 section updatesVadim Bendebury2019-04-301-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When both RO and RW updates are required, and the RO includes a new RW signing key, to ensure recovery from failed updates, the RW section of the image needs to be updated before the RO section, In this case interrupted RO or RW update will result in the H1 rebooting still using the original RO and original RW. If the RO was updated first and the RW update was interrupted, the chip could end up with the newer RO with no RW to verify with the new key. BRANCH=none BUG=b:74100307 TEST=created an image with fake RO_B version number of 0.0.106, and then tried to update to this image. Observed that RW_B was transferred before RO_B [1067.694175 FW update: starting...] at 0x84000 at 0x84400 at 0x84800 ... at 0xbb400 at 0x80000 at 0x80400 at 0x80800 at 0x80c00 at 0x81000 at 0x81400 at 0x81800 at 0x81c00 at 0x82000 at 0x82400 Change-Id: Ie5240c14c6b7d73c00baac693be724fab4636992 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1586590 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* gsctool: add command line option for log retrievalVadim Bendebury2019-03-281-5/+53
| | | | | | | | | | | | | | | | | The new command line option accepts a single optional parameter, the timestamp. If the parameter is not given, the entire log is retrieved one entry at a time. If the parameter is given, only entries newer than the passed in timestamp are retrieved. BRANCH=none BUG=b:63760920 TEST=tried retrieving log entries from an H1 running the updated Cr50 code. Change-Id: I317a659dfc7ebe24cf6f1d957bf0b6d29fb94518 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1525149 Reviewed-by: Namyoon Woo <namyoon@chromium.org>
* Make the argument to --sn_bits a 96-bits hex stringYves Arrouye2019-03-261-22/+41
| | | | | | | | | | | | | | This makes the argument simpler to understand and produce. BUG=chromium:940327 TEST=manual on a device Change-Id: I9226116f52011dab1967196e1c236dd36b11e4c4 Signed-off-by: Yves Arrouye <drcrash@google.com> Reviewed-on: https://chromium-review.googlesource.com/1514215 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Yves Arrouye <drcrash@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: Add error code description if authcode fails.Cheng-Han Yang2019-03-201-2/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When doing RMA reset and the auth code is rejected, gsctool only reports the error code, which is not clear for the user. This CL adds the failure reason to make the message clearer. BUG=b:128801501 TEST=make gsctool; manually test on DUT BRANCH=none [Before fix] localhost $ gsctool -a -r "A" rma unlock failed, code 1 Processing response... localhost $ gsctool -a -r "ABCDEFGH" rma unlock failed, code 6 Processing response... [After fix] localhost $ gsctool -a -r "A" Processing response... rma unlock failed, code 1 (wrong authcode size) localhost $ gsctool -a -r "ABCDEFGH" Processing response... rma unlock failed, code 6 (authcode mismatch) Change-Id: I5db4d8f7cffe5b582f48fdc3b7fb27493b3715ff Signed-off-by: Cheng-Han Yang <chenghan@google.com> Reviewed-on: https://chromium-review.googlesource.com/1527905 Commit-Ready: Cheng-Han Yang <chenghan@chromium.org> Tested-by: Cheng-Han Yang <chenghan@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: fix bug in scanning Boolean optionsVadim Bendebury2019-03-181-1/+1
| | | | | | | | | | | | | The scan should continue while scanned entries are not empty. BRANCH=none BUG=none TEST='gsctool -f is not reporting error anymore. Change-Id: Ie8316de1b95b511ed6c2b3f65c4cfbd92822edf8 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1529711 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* gsctool: refactor assignment of Boolean flag optionsVadim Bendebury2019-03-171-39/+52
| | | | | | | | | | | | | | | Many of gsctool command line options result in setting a Boolean flag. This patch collects all such flags in a structure, and uses a function to iterate over flags when examining command line options. BRANCH=none BUG=none TEST=verified that Boolean command line options still can be set. Change-Id: Id4a14e573ced893650c4c1c81f8ef92fc0d03bc5 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1525148 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* gsctool: noop clean upVadim Bendebury2019-03-171-19/+26
| | | | | | | | | | | | | | Replace C++ style comments with C style comments and alphabetize the help output. BRANCH=none BUG=none TEST=gsctool still builds, -h output is ordered. Change-Id: I1a6f10873c123d61773911e97cbf32fce7447ff7 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1525147 Reviewed-by: Namyoon Woo <namyoon@chromium.org>
* gsctool: make sure programmed image size is properly alignedVadim Bendebury2019-03-061-0/+6
| | | | | | | | | | | | | | | | | Flash driver of the g chip requires that the size of the programmed area is evenly divisible by 4. This patch makes sure that gsctool complies with this requirement. BRANCH=none BUG=b:127295653 TEST=without this patch attempts to update Cr50 to an image built from ToT fails, with this patch the same image programs just fine. Change-Id: I064d22130a56e9e703f728bc898fd5de82d365d4 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1499657 Reviewed-by: Namyoon Woo <namyoon@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: fix version string generation and processingVadim Bendebury2019-02-191-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Function reporting the version of the gsctool expects the VERSION variable generated by ./util/getversion.sh utility to start with a single underscore without a prefix. But the utility could be adding various prefixes to the VERSION string depending on the environment variable settings. Those settings are irrelevant for gsctool, it should ignore the prefix up to the first underscore character found in the VERSION string. Also, modify the Makefile to make sure the build date reported by getversion.sh is accurate. BRANCH=none BUG=chromium:932361 TEST=built gsctool and checked version reporting: make BOARD=cr50 CR50_DEV=1 gsctool ./gsctool -v Version: v2.0.821+e890d0974 tpm2:v0.0.320-e987095 \ cryptoc:v0.0.10-b256f39, built on 2019-02-15 10:25:08 \ by vbendeb@eskimo.mtv.corp.google.com Change-Id: I5fb6c4aa1dea6e857fffc7ec5e5a599d61175044 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1474736 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Namyoon Woo <namyoon@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
* gsctool: Add commands to set sn bits.Louis Collard2018-12-061-1/+146
| | | | | | | | | | | | | | | | | | Adds two commands to set sn bits, and increment sn rma count. These commands will be used in factory and RMA flows. 'gsctool -S 0x123:0x456:0x789' can be used to set sn bits 'gsctool -R <0-7>' can be used to increment rma count BUG=chromium:905408 BRANCH=none TEST=local manual tests on soraka Change-Id: Iefb2076d5f53105ab36e84973d68f571b9626501 Signed-off-by: Louis Collard <louiscollard@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1347831 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* gsctool: verbose flag should print debug messagesJoel Kitching2018-12-031-8/+11
| | | | | | | | | | | | | | | | | Currently the verbose flag is stored in `verbose_mode` but never used. Print conditionally on this flag within a new `debug` function. BUG=None TEST=try running various commands with --verbose check for verbose output BRANCH=master Change-Id: Iadaf1a91ea1b02b0638e6364077c2c148f26e03c Reviewed-on: https://chromium-review.googlesource.com/1351926 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: correct a typoJoel Kitching2018-12-031-1/+1
| | | | | | | | | | | | BUG=None TEST=check for correct output with --help flag BRANCH=master Change-Id: Idf0448791e3d043313bc1291810d71d3f4846a6a Reviewed-on: https://chromium-review.googlesource.com/1351925 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: fix in setting '--tpm_mode'.Namyoon Woo2018-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b:119626285 reported the problem with '--tpm_mode'. $ gsctool -a --tpm_mode Unrecognized option: -m $ gsctool -a --tpm_mode enable TPM Mode: enabled (0) $ gsctool -a --tpm_mode disable TPM Mode: enabled (0) "tpm_mode" long opt should have 'has_arg' set to 'optional_argumenet', not 'required_argument'. Before this CL, --tpm_mode worked in a wrong way as reported in BRANCH=none BUG=b:119626285 TEST=manually and with autotest (crrev.com/c/1340640) as well. $ gsctool -a --tpm_mode TPM Mode: enabled (0) $ gsctool -a --tpm_mode enable TPM Mode: enabled (1) $ gsctool -a --tpm_mode disable TPM Mode: disabled (2) Change-Id: Ie11852925a21a3a3b8d9dda6092eac5040f1cd5c Signed-off-by: Namyoon Woo <namyoon@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1340642 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* gsctool: explicitly set buffering type to line bufferedWei-Cheng Xiao2018-11-161-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | This CL allows gsctool outputs to be instantly piped and shown in crosh when crosh executes cr50-verify-ro.sh, which calls gsctool, indirectly via debugd. Program stdout buffering type by default changes from line buffered to block buffered if the output is redirected to a file or pipe. Since we are going to call gsctool from inside debugd (CL:1337190) and want to pipe the output instantly to the dbus request sender, the buffering type of gsctool needs to be explicitly set. BRANCH=none BUG=b:113893821 TEST=in crosh run verify_ro, which indirectly runs gsctool via debugd, and verify that output is instantly piped and shown in crosh. (see CL:1337190 for detailed output) Signed-off-by: Wei-Cheng Xiao <garryxiao@chromium.org> Change-Id: I515854a29e5e2ede0acc8c2d9e2c4df367a5062e Reviewed-on: https://chromium-review.googlesource.com/1337250 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-by: Louis Collard <louiscollard@chromium.org>
* gsctool: fix RO_B version number output for debug Cr50 imagesWei-Cheng Xiao2018-11-131-2/+2
| | | | | | | | | | | | | | | | | | For cr50 debug images, the RO_B version number format should be -1.-1.-1. I previously changed the output format to unsigned int, which caused the outputted version to be UINT_MAX. BRANCH=none BUG=b:119223356 TEST=manually run gsctool on a soraka device $ gsctool -b cr50.dbg.prod RO_A:0.0.10 RW_A:0.3.10[00000000:00000000:00000000] RO_B:-1.-1.-1 RW_B:0.3.10[00000000:00000000:00000000] Signed-off-by: Wei-Cheng Xiao <garryxiao@chromium.org> Change-Id: I5f842d4d5e50f35effbd2e5269dfd6946746acc2 Reviewed-on: https://chromium-review.googlesource.com/1328661 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* gsctool: minor code pruning.Namyoon Woo2018-11-051-6/+5
| | | | | | | | | | | | | | Removed a redundant if-statement BRANCH=none BUG=none TEST=gsctool -i Board ID space: 41434245:bebcbdba:00007f7f Change-Id: Ie6a1237fb5d1dc6085c1680dc1b37a9b127511f0 Signed-off-by: Namyoon Woo <namyoon@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1315629 Reviewed-by: Bob Moragues <moragues@chromium.org>
* gsctool: add RO_B and RW_B back to the output of gsctool -bWei-Cheng Xiao2018-11-021-38/+27
| | | | | | | | | | | | | | | | | Previous change CL:1278414 removed RO_B and RW_B from gsctool -b output and broke cr50 tests. This CL adds them back. BRANCH=none BUG=b:118701324 TEST=manually run gsctool on a soraka device $ gsctool -b cr50.bin.prod RO_A:0.0.10 RW_A:0.3.10[00000000:00000000:00000000] RO_B:0.0.10 RW_B:0.3.10[00000000:00000000:00000000] Change-Id: I0d76052ef9b6e34c4c8f4be40ac48ed3559ef3ec Signed-off-by: Wei-Cheng Xiao <garryxiao@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1308242 Reviewed-by: Andrey Pronin <apronin@chromium.org>