[igt-dev] [PATCH i-g-t v6 3/4] lib/xe/xe_spin: Handle spinner timer for Xe as well

Jouni Högander jouni.hogander at intel.com
Thu Jun 22 05:45:42 UTC 2023


Current spinner implementation for Xe doesn't support setting
timeout. Fix this by handling timers same way as for i915 as well.

Cc: Sai Gowtham Ch <sai.gowtham.ch at intel.com>

Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
---
 lib/xe/xe_spin.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/xe/xe_spin.c b/lib/xe/xe_spin.c
index 9f511e14f..d8c665f39 100644
--- a/lib/xe/xe_spin.c
+++ b/lib/xe/xe_spin.c
@@ -115,6 +115,7 @@ xe_spin_create(int fd, const struct igt_spin_factory *opt)
 	spin->syncobj = syncobj_create(fd, 0);
 	spin->vm = opt->vm;
 	spin->engine = opt->engine;
+	spin->timerfd = -1;
 
 	if (!spin->vm)
 		spin->vm = xe_vm_create(fd, 0, 0);
@@ -163,6 +164,13 @@ void xe_spin_sync_wait(int fd, struct igt_spin *spin)
 void xe_spin_free(int fd, struct igt_spin *spin)
 {
 	igt_assert(spin->driver == INTEL_DRIVER_XE);
+
+	if (spin->timerfd >= 0) {
+		pthread_cancel(spin->timer_thread);
+		igt_assert(pthread_join(spin->timer_thread, NULL) == 0);
+		close(spin->timerfd);
+	}
+
 	xe_spin_end(spin->xe_spin);
 	xe_spin_sync_wait(fd, spin);
 	xe_vm_unbind_sync(fd, spin->vm, 0, spin->address, spin->bo_size);
-- 
2.34.1



More information about the igt-dev mailing list