Эх сурвалжийг харах

drm/i915/userptr: Only flush the workqueue if required

To avoid waiting for work from other invalidate-range threads where
not required, only wait on the userptr cancel workqueue if we have added
some work to it.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170307205851.32578-2-chris@chris-wilson.co.uk
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Chris Wilson 8 жил өмнө
parent
commit
d151e9ce98

+ 2 - 1
drivers/gpu/drm/i915/i915_gem_userptr.c

@@ -145,7 +145,8 @@ static void i915_gem_userptr_mn_invalidate_range_start(struct mmu_notifier *_mn,
 		del_object(mo);
 		del_object(mo);
 	spin_unlock(&mn->lock);
 	spin_unlock(&mn->lock);
 
 
-	flush_workqueue(mn->wq);
+	if (!list_empty(&cancelled))
+		flush_workqueue(mn->wq);
 }
 }
 
 
 static const struct mmu_notifier_ops i915_gem_userptr_notifier = {
 static const struct mmu_notifier_ops i915_gem_userptr_notifier = {