[PATCH 3/3] hmm

Chris Wilson chris at chris-wilson.co.uk
Mon Oct 22 11:45:43 UTC 2018


---
 drivers/gpu/drm/i915/i915_gem_userptr.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
index ca9452fb348a..dacccfca5aa9 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -148,7 +148,19 @@ static int i915_gem_userptr_mn_invalidate_range_start(struct mmu_notifier *_mn,
 	switch (mutex_trylock_recursive(&mn->mm->i915->drm.struct_mutex)) {
 	case MUTEX_TRYLOCK_FAILED:
 	default:
-		return -EAGAIN;
+		unlock = false;
+		preempt_disable();
+		do {
+			cpu_relax();
+			if (mutex_trylock(&mn->mm->i915->drm.struct_mutex)) {
+				unlock = true;
+				break;
+			}
+		} while (!need_resched());
+		preempt_enable();
+		if (!unlock)
+			return -EAGAIN;
+		break;
 
 	case MUTEX_TRYLOCK_RECURSIVE:
 		unlock = false;
-- 
2.19.1



More information about the Intel-gfx-trybot mailing list