summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>2018-04-23 11:45:28 +0530
committerStewart Smith <stewart@linux.ibm.com>2018-04-24 00:11:50 -0500
commit376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f (patch)
tree9cb9b15b69dfc188aa69f6c26cabbd8d696f0ae7 /core
parent115c9f9f66200a01829a084ac163e3436baac8d2 (diff)
downloadtalos-skiboot-376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f.tar.gz
talos-skiboot-376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f.zip
opal/hmi: Generate one event per core for processor recovery.
Processor recovery is per core error. All threads on that core receive HMI. All threads don't need to generate HMI event for same error. Let thread 0 only generate the event. Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'core')
-rw-r--r--core/hmi.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/hmi.c b/core/hmi.c
index 70ccc23f..bd0fc13b 100644
--- a/core/hmi.c
+++ b/core/hmi.c
@@ -1212,7 +1212,7 @@ static int handle_hmi_exception(uint64_t hmer, struct OpalHMIEvent *hmi_evt,
}
handled |= SPR_HMER_PROC_RECV_DONE;
- if (hmi_evt) {
+ if (cpu_is_thread0(cpu) && hmi_evt) {
hmi_evt->severity = OpalHMI_SEV_NO_ERROR;
hmi_evt->type = OpalHMI_ERROR_PROC_RECOV_DONE;
queue_hmi_event(hmi_evt, recover, out_flags);
@@ -1220,7 +1220,7 @@ static int handle_hmi_exception(uint64_t hmer, struct OpalHMIEvent *hmi_evt,
}
if (hmer & SPR_HMER_PROC_RECV_ERROR_MASKED) {
handled |= SPR_HMER_PROC_RECV_ERROR_MASKED;
- if (hmi_evt) {
+ if (cpu_is_thread0(cpu) && hmi_evt) {
hmi_evt->severity = OpalHMI_SEV_NO_ERROR;
hmi_evt->type = OpalHMI_ERROR_PROC_RECOV_MASKED;
queue_hmi_event(hmi_evt, recover, out_flags);
@@ -1229,7 +1229,7 @@ static int handle_hmi_exception(uint64_t hmer, struct OpalHMIEvent *hmi_evt,
}
if (hmer & SPR_HMER_PROC_RECV_AGAIN) {
handled |= SPR_HMER_PROC_RECV_AGAIN;
- if (hmi_evt) {
+ if (cpu_is_thread0(cpu) && hmi_evt) {
hmi_evt->severity = OpalHMI_SEV_NO_ERROR;
hmi_evt->type = OpalHMI_ERROR_PROC_RECOV_DONE_AGAIN;
queue_hmi_event(hmi_evt, recover, out_flags);
OpenPOWER on IntegriCloud