On 4/4/2025 5:00 PM, Jeff Hugo wrote:
On 4/1/2025 9:57 AM, Maciej Falkowski wrote:
Use flush_work() instead of cancel_work_sync() for driver
workqueues to guarantee that remaining pending work
will be handled.
Fixes: bc3e5f48b7ee ("accel/ivpu: Use workqueue for IRQ handling")
Signed-off-by: Maciej Falkowski <maciej.falkow...@linux.intel.com>
The fixes tag suggests that this is a bug fix, but the commit text
doesn't really tell me why cancel_work_sync() is bad. Does it leave
the driver in some incomplete state that prevents later recovery?
Put another way, "why is it necessary for the pending work to be
handled?" appears unanswered.
You are right, thank you for pointing this out. FYI I will include the
following explanation in the patch message:
This will resolve two issues that were encountered where a driver was
left in an incomplete state as the bottom-half was canceled:
a) Cancelling context-abort of a job that is still executing and is
causing translation faults which is going to cause additional TDRs,
b) Cancelling bottom-half of a DCT (duty-cycle throttling) request which
will cause a device to not be adjusted to an external frequency request.
Best regards,
Maciej
With that
Reviewed-by: Jeff Hugo <jeff.h...@oss.qualcomm.com>