diff options
-rw-r--r-- | core/opal.c | 14 | ||||
-rw-r--r-- | hw/fsp/fsp.c | 17 |
2 files changed, 17 insertions, 14 deletions
diff --git a/core/opal.c b/core/opal.c index 3a2fbb9..6508116 100644 --- a/core/opal.c +++ b/core/opal.c @@ -53,12 +53,6 @@ static uint64_t opal_dynamic_events; extern uint32_t attn_trigger; extern uint32_t hir_trigger; -/* We make this look like a Surveillance error, even though it really - * isn't one. - */ -DEFINE_LOG_ENTRY(OPAL_INJECTED_HIR, OPAL_MISC_ERR_EVT, OPAL_SURVEILLANCE, - OPAL_SURVEILLANCE_ERR, OPAL_PREDICTIVE_ERR_GENERAL, - OPAL_MISCELLANEOUS_INFO_ONLY); void opal_table_init(void) { @@ -637,14 +631,6 @@ static int64_t opal_poll_events(__be64 *outstanding_event_mask) assert(false); } - /* Test the host initiated reset */ - if (hir_trigger == 0xdeadbeef) { - uint32_t plid = log_simple_error(&e_info(OPAL_INJECTED_HIR), - "SURV: Injected HIR, initiating FSP R/R\n"); - fsp_trigger_reset(plid); - hir_trigger = 0; - } - opal_run_pollers(); if (outstanding_event_mask) diff --git a/hw/fsp/fsp.c b/hw/fsp/fsp.c index aa393c7..4415ab5 100644 --- a/hw/fsp/fsp.c +++ b/hw/fsp/fsp.c @@ -38,6 +38,8 @@ #include <opal-msg.h> #include <ccan/list/list.h> +extern uint32_t hir_trigger; + DEFINE_LOG_ENTRY(OPAL_RC_FSP_POLL_TIMEOUT, OPAL_PLATFORM_ERR_EVT, OPAL_FSP, OPAL_PLATFORM_FIRMWARE, OPAL_RECOVERED_ERR_GENERAL, OPAL_NA); @@ -47,6 +49,13 @@ DEFINE_LOG_ENTRY(OPAL_RC_FSP_MBOX_ERR, OPAL_PLATFORM_ERR_EVT, OPAL_FSP, DEFINE_LOG_ENTRY(OPAL_RC_FSP_DISR_HIR_MASK, OPAL_PLATFORM_ERR_EVT, OPAL_FSP, OPAL_PLATFORM_FIRMWARE, OPAL_RECOVERED_ERR_GENERAL, OPAL_NA); +/* We make this look like a Surveillance error, even though it really + * isn't one. + */ +DEFINE_LOG_ENTRY(OPAL_INJECTED_HIR, OPAL_MISC_ERR_EVT, OPAL_SURVEILLANCE, + OPAL_SURVEILLANCE_ERR, OPAL_PREDICTIVE_ERR_GENERAL, + OPAL_MISCELLANEOUS_INFO_ONLY); + #define FSP_TRACE_MSG #define FSP_TRACE_EVENT @@ -2026,6 +2035,14 @@ static void fsp_create_fsp(struct dt_node *fsp_node) static void fsp_opal_poll(void *data __unused) { + /* Test the host initiated reset */ + if (hir_trigger == 0xdeadbeef) { + uint32_t plid = log_simple_error(&e_info(OPAL_INJECTED_HIR), + "SURV: Injected HIR, initiating FSP R/R\n"); + fsp_trigger_reset(plid); + hir_trigger = 0; + } + if (try_lock(&fsp_lock)) { __fsp_poll(false); unlock(&fsp_lock); |