deployment: Disable dev mode only when we know new firmware is bootable

BUG=None
TEST=None

Change-Id: I13add9f41137491d4ed4a4b77c9a84c8030f1179
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2504889
Reviewed-by: Otabek Kasimov <otabek@google.com>
Commit-Queue: Garry Wang <xianuowang@chromium.org>
Tested-by: Garry Wang <xianuowang@chromium.org>
diff --git a/site_utils/deployment/prepare/dut.py b/site_utils/deployment/prepare/dut.py
index 5e8e3f3..42c4481 100644
--- a/site_utils/deployment/prepare/dut.py
+++ b/site_utils/deployment/prepare/dut.py
@@ -379,8 +379,15 @@
     _wait_firmware_update_process(host, pid)
     _check_firmware_update_result(host, fw_update_log)
 
-    # Get us out of dev-mode and clear GBB flags.  GBB flags are
-    # non-zero because boot from USB was enabled.
+    try:
+        host.reboot()
+    except Exception as e:
+        logging.debug('Failed to reboot the DUT after update firmware; %s', e)
+        try_reset_by_servo(host)
+
+    # Once we confirmed DUT can boot from new firmware, get us out of
+    # dev-mode and clear GBB flags.  GBB flags are non-zero because
+    # boot from USB was enabled.
     logging.info("Resting gbb flags and disable dev mode.")
     host.run('/usr/share/vboot/bin/set_gbb_flags.sh 0',
              ignore_status=True)
@@ -391,9 +398,10 @@
     try:
         host.reboot()
     except Exception as e:
-        logging.debug('Failed to reboot from host side; %s', e)
+        logging.debug(
+                'Failed to reboot the DUT after switch to'
+                ' non-dev mode; %s', e)
         try_reset_by_servo(host)
-
     logging.info("Install firmware completed successfully.")