soc/amd/psp_verstage: Reboot on verstage_soc_early_init fail

Calling reboot_into_recovery with NULL context fails. Initializing ctx
early also fails because the cmos is not ready until after
verstage_soc_early_init. So just reboot and hope for the best.

BUG=None
TEST=Boot guybrush, suspend/resume guybrush
BRANCH=None

Change-Id: I7267a14ab048781b8998d3a6f4220de10e7df250
Signed-off-by: Rob Barnes <robbarnes@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/59017
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
Reviewed-by: Kangheui Won <khwon@chromium.org>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
This commit is contained in:
Rob Barnes 2021-11-08 06:43:07 -07:00 committed by Paul Fagerburg
parent 999f9e3487
commit c30a1fade8
2 changed files with 9 additions and 2 deletions

View File

@ -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

View File

@ -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");