[Intel-gfx] [PATCH] drm/i915: Unlock the shared hwsp_gtt object after pinning
Thomas Hellström (Intel)
thomas_os at shipmail.org
Thu Sep 3 14:18:29 UTC 2020
On 9/3/20 4:01 PM, Chris Wilson wrote:
> Quoting Mika Kuoppala (2020-09-03 14:31:44)
>> From: Thomas Hellström <thomas.hellstrom at intel.com>
>>
>> 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 at intel.com>
>> ---
>> 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);
> The timeline is not special here, the same rules for locking/unlock can
> equally be applied to all the global state. You may even go as far as
> putting a local acquire context here, which would then have avoided the
> cross driver pollution.
>
> Anyway, if it works for the timeline, there is no reason to keep the
> other globals locked. They are pinned and on completely different usage
> cycles to the user objects.
Agreed. In principle everything we want to perma-pin we can unlock
early, Keeping it under the same acquire context makes it possible to do
this as part of a bigger ww transaction. Although initially this
solution was discarded in favour of removing the suballocation to be
able to ditch the perma-pinning in the future.
But is this acceptable to address the pi-isolated issue until we have
something more thought-through in place? Or is there somethin specific
you want me to change for a R-B?
Thanks,
Thomas
More information about the Intel-gfx
mailing list