soc/intel/xeon_sp: Enable FSP_ERROR_INFO_HOB handling
After calling FSP MemoryInit API, if there is an error, some FSPs (such as SPR-SP FSP) is capable of generating FSP_ERROR_INFO_HOB. Check existence of such a HOB and handle it accordingly. Change-Id: Icb5c31daa223ba6b06ba1b2de4f8808e0b27899e Signed-off-by: Tim Chu <Tim.Chu@quantatw.com> Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/72505 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
This commit is contained in:
parent
65b7219bd3
commit
d5bd8d54a3
|
@ -10,5 +10,6 @@ void mainboard_memory_init_params(FSPM_UPD * mupd);
|
|||
void mainboard_rtc_failed(void);
|
||||
void save_dimm_info(void);
|
||||
void mainboard_ewl_check(void);
|
||||
void mainboard_fsp_error_handle(void);
|
||||
|
||||
#endif /* _SOC_ROMSTAGE_H_ */
|
||||
|
|
|
@ -17,6 +17,13 @@ void mainboard_romstage_entry(void)
|
|||
printk(BIOS_DEBUG, "coreboot fsp_memory_init finished...\n");
|
||||
mainboard_ewl_check();
|
||||
|
||||
if (CONFIG(ENABLE_FSP_ERROR_INFO)) {
|
||||
if (fsp_display_error_info()) {
|
||||
mainboard_fsp_error_handle();
|
||||
die("ERROR: FSP reported an error(s) after running!");
|
||||
}
|
||||
}
|
||||
|
||||
unlock_pam_regions();
|
||||
|
||||
save_dimm_info();
|
||||
|
@ -33,3 +40,6 @@ __weak void mainboard_rtc_failed(void)
|
|||
}
|
||||
__weak void save_dimm_info(void) { }
|
||||
__weak void mainboard_ewl_check(void) { }
|
||||
|
||||
/* mainboard can override this function for their own handling, such as writing a BMC SEL. */
|
||||
__weak void mainboard_fsp_error_handle(void) { }
|
||||
|
|
|
@ -29,8 +29,4 @@ const EWL_PRIVATE_DATA *get_ewl_hob(void);
|
|||
uint32_t get_ubox_busno(uint32_t socket, uint8_t offset);
|
||||
uint32_t get_socket_ubox_busno(uint32_t socket);
|
||||
|
||||
void check_fsp_error(void);
|
||||
|
||||
void mainboard_fsp_error_handle(void);
|
||||
|
||||
#endif /* _SOC_UTIL_H_ */
|
||||
|
|
|
@ -312,8 +312,3 @@ void save_dimm_info(void)
|
|||
mem_info->dimm_cnt = index; /* Number of DIMM slots found */
|
||||
printk(BIOS_DEBUG, "%d Installed DIMMs found\n", dimm_num);
|
||||
}
|
||||
|
||||
void fsp_check_for_error(void)
|
||||
{
|
||||
check_fsp_error();
|
||||
}
|
||||
|
|
|
@ -153,20 +153,6 @@ uint32_t get_socket_ubox_busno(uint32_t socket)
|
|||
return get_ubox_busno(socket, UNCORE_BUS_1);
|
||||
}
|
||||
|
||||
/* mainboard can override this function for their own handling, such as write a BMC SEL. */
|
||||
void __weak mainboard_fsp_error_handle(void)
|
||||
{
|
||||
die("ERROR: FSP reported an error(s) after running!");
|
||||
}
|
||||
|
||||
void check_fsp_error(void)
|
||||
{
|
||||
bool fsp_found_error = fsp_find_error_info();
|
||||
|
||||
if (fsp_found_error)
|
||||
mainboard_fsp_error_handle();
|
||||
}
|
||||
|
||||
void bios_done_msr(void *unused)
|
||||
{
|
||||
msr_t msr = rdmsr(MSR_BIOS_DONE);
|
||||
|
|
Loading…
Reference in New Issue