summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/amd/common/psp_verstage/include/psp_verstage.h1
-rw-r--r--src/soc/amd/common/psp_verstage/psp_verstage.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/src/soc/amd/common/psp_verstage/include/psp_verstage.h b/src/soc/amd/common/psp_verstage/include/psp_verstage.h
index 7687ac6da0..f5890d4286 100644
--- a/src/soc/amd/common/psp_verstage/include/psp_verstage.h
+++ b/src/soc/amd/common/psp_verstage/include/psp_verstage.h
@@ -35,6 +35,7 @@
#define POSTCODE_FMAP_REGION_MISSING 0xC8
#define POSTCODE_AMD_FW_MISSING 0xC9
#define POSTCODE_CMOS_RECOVERY 0xCA
+#define POSTCODE_EARLY_INIT_ERROR 0xCB
#define POSTCODE_UNMAP_SPI_ROM 0xF0
#define POSTCODE_UNMAP_FCH_DEVICES 0xF1
diff --git a/src/soc/amd/common/psp_verstage/psp_verstage.c b/src/soc/amd/common/psp_verstage/psp_verstage.c
index 9f27159d69..3bfa3e9984 100644
--- a/src/soc/amd/common/psp_verstage/psp_verstage.c
+++ b/src/soc/amd/common/psp_verstage/psp_verstage.c
@@ -224,8 +224,14 @@ void Main(void)
svc_write_postcode(POSTCODE_EARLY_INIT);
retval = verstage_soc_early_init();
if (retval) {
- svc_debug_print("verstage_soc_early_init failed\n");
- reboot_into_recovery(NULL, retval);
+ /*
+ * If verstage_soc_early_init fails, cmos is probably not
+ * accessible, so rebooting into recovery is not an option.
+ * Just reboot and hope for the best.
+ */
+ svc_write_postcode(POSTCODE_EARLY_INIT_ERROR);
+ svc_debug_print("verstage_soc_early_init failed! -- rebooting\n");
+ vboot_reboot();
}
svc_debug_print("calling verstage_mainboard_early_init\n");