From 5eaf85d19b0d5bf19c3be576ad7d665dc2ce1671 Mon Sep 17 00:00:00 2001 From: Sean Rhodes Date: Sat, 29 Nov 2025 20:43:22 +0000 Subject: [PATCH] soc/intel/skylake: Use CSE reset status for reset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit send_global_reset() now returns cse_tx_rx_status, and skips the CF9 reset only when CSE reports CSE_TX_RX_SUCCESS. Test=Disable and enable the Intel ME on labtop_kbl and verify the system actually resets, rather than hanging. Change-Id: I5003ea9486a383ee7a4cace20ce6a54b0f94a166 Signed-off-by: Sean Rhodes Reviewed-on: https://review.coreboot.org/c/coreboot/+/90274 Reviewed-by: Matt DeVillier Tested-by: build bot (Jenkins) Reviewed-by: Jérémy Compostella --- src/soc/intel/skylake/include/soc/me.h | 4 +++- src/soc/intel/skylake/me.c | 4 ++-- src/soc/intel/skylake/reset.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/soc/intel/skylake/include/soc/me.h b/src/soc/intel/skylake/include/soc/me.h index ffeb2f055a..2e16a322c5 100644 --- a/src/soc/intel/skylake/include/soc/me.h +++ b/src/soc/intel/skylake/include/soc/me.h @@ -3,6 +3,8 @@ #ifndef _SKYLAKE_ME_H_ #define _SKYLAKE_ME_H_ +#include + /* * Management Engine PCI registers */ @@ -189,6 +191,6 @@ union me_hfsts6 { }; void intel_me_status(void); -int send_global_reset(void); +enum cse_tx_rx_status send_global_reset(void); #endif diff --git a/src/soc/intel/skylake/me.c b/src/soc/intel/skylake/me.c index 89491f89c3..e91719f00c 100644 --- a/src/soc/intel/skylake/me.c +++ b/src/soc/intel/skylake/me.c @@ -338,9 +338,9 @@ void intel_me_status(void) } } -int send_global_reset(void) +enum cse_tx_rx_status send_global_reset(void) { - int status = 0; + enum cse_tx_rx_status status = CSE_TX_ERR_CSE_NOT_READY; union me_hfsts1 hfs1; if (!is_cse_enabled()) diff --git a/src/soc/intel/skylake/reset.c b/src/soc/intel/skylake/reset.c index 8bf9db5830..3ef5f09354 100644 --- a/src/soc/intel/skylake/reset.c +++ b/src/soc/intel/skylake/reset.c @@ -22,7 +22,7 @@ static void do_force_global_reset(void) void do_global_reset(void) { - if (!send_global_reset()) { + if (send_global_reset() != CSE_TX_RX_SUCCESS) { /* If ME unable to reset platform then * force global reset using PMC CF9GR register*/ do_force_global_reset();