[PATCH 3/6] accel/ivpu: Fix missing MMU events if file_priv is unbound
Jacek Lawrynowicz
jacek.lawrynowicz at linux.intel.com
Wed Jan 29 12:56:33 UTC 2025
From: Karol Wachowski <karol.wachowski at intel.com>
Move the ivpu_mmu_discard_events() function to the common portion of
the abort work function. This ensures it is called only once, even if
there are no faulty contexts in context_xa, to guarantee that MMU events
are discarded and new events are not missed.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz at linux.intel.com>
Signed-off-by: Karol Wachowski <karol.wachowski at intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz at linux.intel.com>
---
drivers/accel/ivpu/ivpu_job.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c
index 3c162ac41a1dc..c1013f511efa6 100644
--- a/drivers/accel/ivpu/ivpu_job.c
+++ b/drivers/accel/ivpu/ivpu_job.c
@@ -375,7 +375,6 @@ void ivpu_context_abort_locked(struct ivpu_file_priv *file_priv)
ivpu_jsm_context_release(vdev, file_priv->ctx.id);
ivpu_mmu_disable_ssid_events(vdev, file_priv->ctx.id);
- ivpu_mmu_discard_events(vdev);
file_priv->aborted = true;
}
@@ -980,6 +979,13 @@ void ivpu_context_abort_work_fn(struct work_struct *work)
}
mutex_unlock(&vdev->context_list_lock);
+ /*
+ * We will not receive new MMU event interrupts until existing events are discarded
+ * however, we want to discard these events only after aborting the faulty context
+ * to avoid generating new faults from that context
+ */
+ ivpu_mmu_discard_events(vdev);
+
if (vdev->fw->sched_mode != VPU_SCHEDULING_MODE_HW)
return;
--
2.45.1
More information about the dri-devel
mailing list