summaryrefslogtreecommitdiffstats
path: root/core/hmi.c
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/hmi.c
parent115c9f9f66200a01829a084ac163e3436baac8d2 (diff)
downloadblackbird-skiboot-376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f.tar.gz
blackbird-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/hmi.c')
-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