soc/intel: Don't send CSE EOP if CSME is disabled

CSE EOP will fail if the CSE is disabled (CB:52800)

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Change-Id: Ic00fdb0d97fefac977c0878d1d5893d07d4481ea
Reviewed-on: https://review.coreboot.org/c/coreboot/+/57149
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
Sean Rhodes 2021-08-25 21:47:00 +01:00 committed by Patrick Georgi
parent 8d5b674739
commit b5b22a74a6
1 changed files with 12 additions and 0 deletions

View File

@ -18,6 +18,7 @@ enum cse_eop_result {
CSE_EOP_RESULT_GLOBAL_RESET_REQUESTED, CSE_EOP_RESULT_GLOBAL_RESET_REQUESTED,
CSE_EOP_RESULT_SUCCESS, CSE_EOP_RESULT_SUCCESS,
CSE_EOP_RESULT_ERROR, CSE_EOP_RESULT_ERROR,
CSE_EOP_RESULT_DISABLED,
}; };
static bool cse_disable_mei_bus(void) static bool cse_disable_mei_bus(void)
@ -100,6 +101,14 @@ static enum cse_eop_result cse_send_eop(void)
* 2) HFSTS1 COM is Normal * 2) HFSTS1 COM is Normal
* 3) Only sent after DID (accomplished by compiling this into ramstage) * 3) Only sent after DID (accomplished by compiling this into ramstage)
*/ */
if (cse_is_hfs1_com_soft_temp_disable()) {
printk(BIOS_ERR, "HECI: Prerequisites not met for sending EOP\n");
if (CONFIG(SOC_INTEL_CSE_LITE_SKU))
return CSE_EOP_RESULT_ERROR;
return CSE_EOP_RESULT_DISABLED;
}
if (!cse_is_hfs1_cws_normal() || !cse_is_hfs1_com_normal()) { if (!cse_is_hfs1_cws_normal() || !cse_is_hfs1_com_normal()) {
printk(BIOS_ERR, "HECI: Prerequisites not met for sending EOP\n"); printk(BIOS_ERR, "HECI: Prerequisites not met for sending EOP\n");
return CSE_EOP_RESULT_ERROR; return CSE_EOP_RESULT_ERROR;
@ -158,6 +167,9 @@ static void handle_cse_eop_result(enum cse_eop_result result)
case CSE_EOP_RESULT_SUCCESS: case CSE_EOP_RESULT_SUCCESS:
printk(BIOS_INFO, "CSE EOP successful, continuing boot\n"); printk(BIOS_INFO, "CSE EOP successful, continuing boot\n");
break; break;
case CSE_EOP_RESULT_DISABLED:
printk(BIOS_INFO, "CSE is disabled, continuing boot\n");
break;
case CSE_EOP_RESULT_ERROR: /* fallthrough */ case CSE_EOP_RESULT_ERROR: /* fallthrough */
default: default:
printk(BIOS_ERR, "ERROR: Failed to send EOP to CSE, %d\n", result); printk(BIOS_ERR, "ERROR: Failed to send EOP to CSE, %d\n", result);