accel/ivpu: Stop job_done_thread on suspend
authorStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Sat, 28 Oct 2023 15:59:31 +0000 (17:59 +0200)
committerStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Tue, 31 Oct 2023 15:14:17 +0000 (16:14 +0100)
commit57c7e3e4800ad65048a7044b03723cd85d9595af
tree82e870cd80b7deba2134c5a7677962db251a30cf
parenta06eb9be49a66e16e0c7819c630c1267c25b36dc
accel/ivpu: Stop job_done_thread on suspend

Stop job_done thread when going to suspend. Use kthread_park() instead
of kthread_stop() to avoid memory allocation and potential failure
on resume.

Use separate function as thread wake up condition. Use spin lock to assure
rx_msg_list is properly protected against concurrent access. This avoid
race condition when the rx_msg_list list is modified and read in
ivpu_ipc_recive() at the same time.

Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231028155936.1183342-4-stanislaw.gruszka@linux.intel.com
drivers/accel/ivpu/ivpu_drv.c
drivers/accel/ivpu/ivpu_ipc.c
drivers/accel/ivpu/ivpu_job.c
drivers/accel/ivpu/ivpu_job.h