summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/ap_ro_integrity_check.c8
-rw-r--r--extra/usb_updater/gsctool.c6
-rw-r--r--include/ap_ro_integrity_check.h4
3 files changed, 14 insertions, 4 deletions
diff --git a/common/ap_ro_integrity_check.c b/common/ap_ro_integrity_check.c
index 8c12e851a4..44d7145b4f 100644
--- a/common/ap_ro_integrity_check.c
+++ b/common/ap_ro_integrity_check.c
@@ -497,7 +497,8 @@ static int verify_keyblock(const struct kb_container *kbc,
/* Clear validate_ap_ro_boot state. */
void ap_ro_device_reset(void)
{
- if (apro_result == AP_RO_NOT_RUN || ec_rst_override())
+ if (apro_result == AP_RO_NOT_RUN || apro_result == AP_RO_IN_PROGRESS ||
+ ec_rst_override())
return;
CPRINTS("%s: clear apro result", __func__);
apro_result = AP_RO_NOT_RUN;
@@ -1419,6 +1420,7 @@ static uint8_t do_ap_ro_check(void)
enum ap_ro_check_vc_errors support_status;
bool v1_record_found;
+ apro_result = AP_RO_IN_PROGRESS;
support_status = ap_ro_check_unsupported(true);
if ((support_status == ARCVE_BOARD_ID_BLOCKED) ||
(support_status == ARCVE_FLASH_READ_FAILED)) {
@@ -1483,9 +1485,9 @@ static uint8_t do_ap_ro_check(void)
return EC_ERROR_UNIMPLEMENTED;
}
- apro_result = AP_RO_PASS;
+ apro_result = AP_RO_PASS_UNVERIFIED_GBB;
ap_ro_add_flash_event(APROF_CHECK_SUCCEEDED);
- CPRINTS("AP RO verification SUCCEEDED!");
+ CPRINTS("AP RO PASS!");
release_ec_reset_override();
return EC_SUCCESS;
diff --git a/extra/usb_updater/gsctool.c b/extra/usb_updater/gsctool.c
index 64a7853d31..04432462eb 100644
--- a/extra/usb_updater/gsctool.c
+++ b/extra/usb_updater/gsctool.c
@@ -2358,6 +2358,9 @@ static int process_get_apro_boot_status(struct transfer_descriptor *td)
case AP_RO_PASS:
printf("pass\n");
break;
+ case AP_RO_PASS_UNVERIFIED_GBB:
+ printf("pass - unverified gbb!\n");
+ break;
case AP_RO_FAIL:
printf("FAIL\n");
break;
@@ -2370,6 +2373,9 @@ static int process_get_apro_boot_status(struct transfer_descriptor *td)
case AP_RO_UNSUPPORTED_NOT_TRIGGERED:
printf("not supported\ntriggered: no\n");
break;
+ case AP_RO_IN_PROGRESS:
+ printf("in progress.");
+ break;
default:
fprintf(stderr, "unknown status\n");
return update_error;
diff --git a/include/ap_ro_integrity_check.h b/include/ap_ro_integrity_check.h
index 38e4c57ff4..cb01017dcc 100644
--- a/include/ap_ro_integrity_check.h
+++ b/include/ap_ro_integrity_check.h
@@ -10,11 +10,13 @@
enum ap_ro_status {
AP_RO_NOT_RUN = 0,
- AP_RO_PASS,
+ AP_RO_PASS_UNVERIFIED_GBB,
AP_RO_FAIL,
AP_RO_UNSUPPORTED_UNKNOWN, /* Deprecated */
AP_RO_UNSUPPORTED_NOT_TRIGGERED,
AP_RO_UNSUPPORTED_TRIGGERED,
+ AP_RO_PASS,
+ AP_RO_IN_PROGRESS,
};
/*
* validate_ap_ro: based on information saved in an H1 RO flash page verify