[Intel-gfx] [PATCH] drm/i915/selftest: If reconfigure_sseu is busy, try again

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Tue Nov 26 17:08:05 UTC 2019


On 26/11/2019 17:05, Chris Wilson wrote:
> Quoting Tvrtko Ursulin (2019-11-26 17:00:53)
>>
>> On 26/11/2019 16:47, Chris Wilson wrote:
>>> Following 58b4c1a07ada ("drm/i915: Reduce nested prepare_remote_context()
>>> to a trylock"), we punt to the caller if the local intel_context
>>> happens to be busy as we try to rewrite the sseu (due to retiring in
>>> another thread). As the interlude should be short, spin until the lock
>>> is available.
>>>
>>> The regret for using mutex_trylock() and not an atomic insertion of the
>>> barrier is growing...
>>>
>>> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>>> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>>> ---
>>>    drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c | 5 ++++-
>>>    1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
>>> index 2ea4790f3721..571cc996577c 100644
>>> --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
>>> +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
>>> @@ -1197,7 +1197,10 @@ __sseu_test(const char *name,
>>>        if (ret)
>>>                goto out_pm;
>>>    
>>> -     ret = intel_context_reconfigure_sseu(ce, sseu);
>>> +     do {
>>> +             ret = intel_context_reconfigure_sseu(ce, sseu);
>>> +             cond_resched();
>>> +     } while (ret == -EAGAIN);
>>>        if (ret)
>>>                goto out_spin;
>>>    
>>>
>>
>> Hm I looked at the selftests, saw error is correctly propagated, and
>> concluded it will be fine. I missed the problem selftests will not
>> actually retry. But wait, can we even count that userspace will if all
>> of a sudden ctx.set_param starts returning -EAGAIN sporadically? Feels
>> like we may need to revert.
> 
> We invoke the principle of drmIoctl() catches -EAGAIN.

I'm not comfortable with that. :( Not least how we are saying not to use 
libdrm. man 2 ioctl does not mention -EAGAIN. :(

Regards,

Tvrtko


More information about the Intel-gfx mailing list