aboutsummaryrefslogtreecommitdiff
path: root/drivers/accel/ivpu/ivpu_job.c
diff options
context:
space:
mode:
authorGravatar Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> 2023-10-28 17:59:32 +0200
committerGravatar Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> 2023-10-31 16:25:03 +0100
commitba6b035daac8c4fa5da1f14f262d97e0ffa45a6d (patch)
treefa11c215ab8d3b6927753d6ac0a6da9f7c8cf961 /drivers/accel/ivpu/ivpu_job.c
parentaccel/ivpu: Stop job_done_thread on suspend (diff)
downloadlinux-ba6b035daac8c4fa5da1f14f262d97e0ffa45a6d.tar.gz
linux-ba6b035daac8c4fa5da1f14f262d97e0ffa45a6d.tar.bz2
linux-ba6b035daac8c4fa5da1f14f262d97e0ffa45a6d.zip
accel/ivpu: Abort pending rx ipc on reset
Waking up process, which wait for particular condition, will go to sleep again on wake_up() if the condition is not met. Add abort flag to wake up IPC receivers, which will finish with -ECANCELED error. This is only needed for reset, run time power management prevent to suspend VPU when there is pending IPC processing or pending job. 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-5-stanislaw.gruszka@linux.intel.com
Diffstat (limited to 'drivers/accel/ivpu/ivpu_job.c')
-rw-r--r--drivers/accel/ivpu/ivpu_job.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c
index a245b2d44db7..15a408fad494 100644
--- a/drivers/accel/ivpu/ivpu_job.c
+++ b/drivers/accel/ivpu/ivpu_job.c
@@ -578,6 +578,7 @@ static int ivpu_job_done_thread(void *arg)
ivpu_ipc_consumer_add(vdev, &cons, VPU_IPC_CHAN_JOB_RET);
while (!kthread_should_stop()) {
+ cons.aborted = false;
timeout = ivpu_tdr_timeout_ms ? ivpu_tdr_timeout_ms : vdev->timeout.tdr;
jobs_submitted = !xa_empty(&vdev->submitted_jobs_xa);
ret = ivpu_ipc_receive(vdev, &cons, NULL, &jsm_msg, timeout);