[Intel-gfx] [RFC PATCH 53/97] drm/i915/guc: Disable semaphores when using GuC scheduling
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed May 26 09:25:13 UTC 2021
On 25/05/2021 18:01, Matthew Brost wrote:
> On Tue, May 25, 2021 at 10:52:01AM +0100, Tvrtko Ursulin wrote:
>>
>> On 06/05/2021 20:14, Matthew Brost wrote:
>>> Disable semaphores when using GuC scheduling as semaphores are broken in
>>> the current GuC firmware.
>>
>> What is "current"? Given that the patch itself is like year and a half old.
>>
>
> Stale comment. Semaphore work with the firmware we just haven't enabled
> them in the i915 with GuC submission as this an optimization and not
> required for functionality.
How will the updated commit message look in terms of remaining reasons
why semaphores won't/can't be enabled?
They were a nice performance win on some media workloads although
granted a lot of tweaking was required to find a good balance on when to
use them and when not to.
Regards,
Tvrtko
> Matt
>
>> Regards,
>>
>> Tvrtko
>>
>>> Cc: John Harrison <john.c.harrison at intel.com>
>>> Signed-off-by: Matthew Brost <matthew.brost at intel.com>
>>> ---
>>> drivers/gpu/drm/i915/gem/i915_gem_context.c | 6 ++++--
>>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>> index 993faa213b41..d30260ffe2a7 100644
>>> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>> @@ -230,7 +230,8 @@ static void intel_context_set_gem(struct intel_context *ce,
>>> ce->timeline = intel_timeline_get(ctx->timeline);
>>> if (ctx->sched.priority >= I915_PRIORITY_NORMAL &&
>>> - intel_engine_has_timeslices(ce->engine))
>>> + intel_engine_has_timeslices(ce->engine) &&
>>> + intel_engine_has_semaphores(ce->engine))
>>> __set_bit(CONTEXT_USE_SEMAPHORES, &ce->flags);
>>> intel_context_set_watchdog_us(ce, ctx->watchdog.timeout_us);
>>> @@ -1939,7 +1940,8 @@ static int __apply_priority(struct intel_context *ce, void *arg)
>>> if (!intel_engine_has_timeslices(ce->engine))
>>> return 0;
>>> - if (ctx->sched.priority >= I915_PRIORITY_NORMAL)
>>> + if (ctx->sched.priority >= I915_PRIORITY_NORMAL &&
>>> + intel_engine_has_semaphores(ce->engine))
>>> intel_context_set_use_semaphores(ce);
>>> else
>>> intel_context_clear_use_semaphores(ce);
>>>
More information about the Intel-gfx
mailing list