Skip to content

Commit

Permalink
drm/i915: Unlock the shared hwsp_gtt object after pinning
Browse files Browse the repository at this point in the history
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 <thomas.hellstrom@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
  • Loading branch information
Thomas Hellström authored and Joonas Lahtinen committed Sep 7, 2020
1 parent f4b3c39 commit e0ee152
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions drivers/gpu/drm/i915/gt/intel_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,15 @@ 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.
* In principle we can unlock all the global state locked above
* since it's pinned and doesn't need fencing, and will
* thus remain resident until it is explicitly unpinned.
*/
i915_gem_ww_unlock_single(ce->timeline->hwsp_ggtt->obj);

return err;
}

Expand Down

0 comments on commit e0ee152

Please sign in to comment.