[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
caller.

Thanks,
-Mahesh.

> 
> 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 mailing list