Re: [PATCH] powerpc/rtas: Introduce rtas_get_sensor_nonblocking() for pci hotplug driver.
flat view
From: Mahesh J Salgaonkar <mahesh@linux.ibm.com>
Date: 2021-12-03 13:43:32
On 2021-11-29 22:53:41 Mon, Nathan Lynch wrote:
Mahesh Salgaonkar [off-list ref] writes:quoted
When certain PHB HW failure causes phyp to recover PHB, it marks the PE state as temporarily unavailable until recovery is complete. This also triggers an EEH handler in Linux which needs to notify drivers, and perform recovery. But before notifying the driver about the pci error it uses get_adapter_state()->get-sesnor-state() operation of the hotplug_slot to determine if the slot contains a device or not. if the slot is empty, the recovery is skipped entirely. However on certain PHB failures, the rtas call get-sesnor-state() returns extended busy error (9902) until PHB is recovered by phyp. Once PHB is recovered, the get-sensor-state() returns success with correct presence status. The rtas call interface rtas_get_sensor() loops over the rtas call on extended delay return code (9902) until the return value is either success (0) or error (-1). This causes the EEH handler to get stuck for ~6 seconds before it could notify that the pci error has been detected and stop any active operations.I am curious whether you see any difference with "powerpc/rtas: rtas_busy_delay() improvements" which was recently applied. It will cause the the calling task to sleep in response to a 990x status instead of immediately retrying: https://git.kernel.org/powerpc/c/38f7b7067dae0c101be573106018e8af22a90fdf If that commit helps then maybe this change isn't needed.
I tried with above commit but it didn't help.
Maybe it would be better to have rpaphp_get_sensor_state() invoke
rtas_call("get-sensor-state", ...) directly and code whatever special
behavior is needed there, instead of introducing a new exported API. ThePosted v3 with above approach. https://lists.ozlabs.org/pipermail/linuxppc-dev/2021-December/237538.html Thanks for your review. -Mahesh. -- Mahesh J Salgaonkar