diff options
author | Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> | 2018-04-23 11:45:28 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.ibm.com> | 2018-04-24 00:11:50 -0500 |
commit | 376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f (patch) | |
tree | 9cb9b15b69dfc188aa69f6c26cabbd8d696f0ae7 | |
parent | 115c9f9f66200a01829a084ac163e3436baac8d2 (diff) | |
download | skiboot-376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f.zip skiboot-376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f.tar.gz skiboot-376b5e3b26e05f78ac4ed1a59c5b9f3d9e66716f.tar.bz2 |
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>
-rw-r--r-- | core/hmi.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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); |