sets mainfw_act to A before running a firmware test
vboot2 does not prefer a particular slot. if slot B is found good and
valid, it keeps booting on B. due to this new behavior some tests such
as CorruptBothFwBodyAB leave the target booting on slot B. Thus, some
tests such as CorruptFwBodyA fail when running back-to-back.
BUG=chrome-os-partner:32193
BRANCH=ToT
TEST=ran faft successfully on nyan kitty
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Change-Id: I0ff8697b913bf74ba3127a3f57cdc42be1e47e23
Reviewed-on: https://chromium-review.googlesource.com/231377
Reviewed-by: Yusuf Mohsinally <mohsinally@chromium.org>
diff --git a/server/cros/faft/firmware_test.py b/server/cros/faft/firmware_test.py
index 583b3c9..8951b62 100644
--- a/server/cros/faft/firmware_test.py
+++ b/server/cros/faft/firmware_test.py
@@ -171,12 +171,17 @@
self._setup_uart_capture()
self._setup_servo_log()
self._record_system_info()
+ self.fw_vboot2 = self.faft_client.system.get_fw_vboot2()
+ logging.info('vboot version: %d', 2 if self.fw_vboot2 else 1)
+ if self.fw_vboot2:
+ self.faft_client.system.set_fw_try_next('A')
+ if self.faft_client.system.get_crossystem_value('mainfw_act') == 'B':
+ logging.info('mainfw_act is B. rebooting to set it A')
+ self.reboot_warm()
self._setup_gbb_flags()
self._stop_service('update-engine')
self._create_faft_lockfile()
self._setup_ec_write_protect(ec_wp)
- self.fw_vboot2 = self.faft_client.system.get_fw_vboot2()
- logging.info('vboot version: %d', 2 if self.fw_vboot2 else 1)
# See chromium:239034 regarding needing this sync.
self.blocking_sync()
logging.info('FirmwareTest initialize done (id=%s)', self.run_id)