From: Thomas Hellström <[email protected]>

The hwsp_gtt object is used for sub-allocation and could therefore
be shared by many contexts causing unnecessary contention during
concurrent context pinning.
However since we're currently locking it only for pinning, it remains
resident until we unpin it, and therefore it's safe to drop the
lock early, allowing for concurrent thread access.

Signed-off-by: Thomas Hellström <[email protected]>
---
 drivers/gpu/drm/i915/gt/intel_context.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_context.c 
b/drivers/gpu/drm/i915/gt/intel_context.c
index 61b05cd4c47a..65e956ba19e1 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -271,6 +271,13 @@ int __intel_context_do_pin_ww(struct intel_context *ce,
        i915_active_release(&ce->active);
 err_ctx_unpin:
        intel_context_post_unpin(ce);
+
+       /*
+        * Unlock the hwsp_ggtt object since it's shared. This is fine for now
+        * since the lock has been used for pinning only, not fencing.
+        */
+       i915_gem_ww_unlock_single(ce->timeline->hwsp_ggtt->obj);
+
        return err;
 }
 
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to