]> www.infradead.org Git - users/jedix/linux-maple.git/commit
accel/ivpu: Flush pending jobs of device's workqueues
authorMaciej Falkowski <maciej.falkowski@linux.intel.com>
Tue, 1 Apr 2025 15:57:55 +0000 (17:57 +0200)
committerJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Fri, 11 Apr 2025 09:42:55 +0000 (11:42 +0200)
commit683e9fa1c885a0cffbc10b459a7eee9df92af1c1
tree9317e12d77b84be0c39ed93f8847627df4e8e1eb
parentdcdae6e92d4e062da29235fe88980604595e3f0f
accel/ivpu: Flush pending jobs of device's workqueues

Use flush_work() instead of cancel_work_sync() for driver IRQ
workqueues to guarantee that remaining pending work
will be handled.

This resolves two issues that were encountered where a driver was left
in an incorrect state as the bottom-half was canceled:

1. Cancelling context-abort of a job that is still executing and
   is causing translation faults which is going to cause additional TDRs

2. Cancelling bottom-half of a DCT (duty-cycle throttling) request
   which will cause a device to not be adjusted to an external frequency
   request.

Fixes: bc3e5f48b7ee ("accel/ivpu: Use workqueue for IRQ handling")
Signed-off-by: Maciej Falkowski <maciej.falkowski@linux.intel.com>
Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Link: https://lore.kernel.org/r/20250401155755.4049156-1-maciej.falkowski@linux.intel.com
drivers/accel/ivpu/ivpu_drv.c