[Skiboot] [PATCH 2/2] core/hmi: Do not call find_core_checkstop_reason() unconditionally
Mahesh Jagannath Salgaonkar
mahesh at linux.vnet.ibm.com
Fri Dec 1 19:05:44 AEDT 2017
On 11/30/2017 06:20 PM, Balbir Singh wrote:
> We tend to call find_core_checkstop_reason() even if the NPU/NX/CAPI
> HMI handling paths found and accepted the reason for the local checkstop.
Yes, this is because there is a possibility of cascading checkstops
where bits from multiple FIRs (NPU/NX/CAPI/CORE) may get fired at once.
Hence we need to make sure that we detect reasons from all FIRs
including core FIR.
> We also trash hmi_evt in the call.
Every find_*_checkstop*() caller fills and queues up the hmi_evt to be
sent to kernel. Once it is queued, the hmi_evt is free to use by next
> Signed-off-by: Balbir Singh <bsingharora at gmail.com>
> core/hmi.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
> diff --git a/core/hmi.c b/core/hmi.c
> index bb144512..62a916ba 100644
> --- a/core/hmi.c
> +++ b/core/hmi.c
> @@ -697,7 +697,8 @@ static void decode_malfunction(struct OpalHMIEvent *hmi_evt)
> - find_core_checkstop_reason(hmi_evt, &event_generated);
> + if (!event_generated)
> + find_core_checkstop_reason(hmi_evt, &event_generated);
> * If we fail to find checkstop reason, send an unknown HMI event.
More information about the Skiboot