[igt-dev] [PATCH i-g-t] lib/i915: Return actual submission method from gem_submission_method

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Tue Oct 19 08:39:20 UTC 2021


On 19/10/2021 08:16, John Harrison wrote:
> On 10/18/2021 17:12, Dixit, Ashutosh wrote:
>> On Mon, 18 Oct 2021 16:59:43 -0700, Dixit, Ashutosh wrote:
>>> On Mon, 18 Oct 2021 16:39:40 -0700, John Harrison wrote:
>>>> On 10/15/2021 17:23, Ashutosh Dixit wrote:
>>>>> gem_submission_method() purports to return the currently used 
>>>>> submission
>>>>> method by the driver, as evidenced by its callers. Therefore remove 
>>>>> the
>>>>> GEM_SUBMISSION_EXECLISTS flag when GuC submission is detected.
>>>>>
>>>>> This also fixes gem_has_execlists() to match its description, 
>>>>> previously
>>>>> gem_has_execlists() would return true even if GuC submission was 
>>>>> actually
>>>>> being used in the driver.
>>>>>
>>>>> Reported-by: John Harrison <john.c.harrison at intel.com>
>>>>> Cc: Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com>
>>>>> Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
>>>>> ---
>>>>>    lib/i915/gem_submission.c | 2 +-
>>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/lib/i915/gem_submission.c b/lib/i915/gem_submission.c
>>>>> index 2627b802cfb..b037d04cc4a 100644
>>>>> --- a/lib/i915/gem_submission.c
>>>>> +++ b/lib/i915/gem_submission.c
>>>>> @@ -86,7 +86,7 @@ unsigned gem_submission_method(int fd)
>>>>>         return 0;
>>>>>         if (igt_sysfs_get_u32(dir, "enable_guc") & 1) {
>>>>> -        flags |= GEM_SUBMISSION_GUC | GEM_SUBMISSION_EXECLISTS;
>>>>> +        flags |= GEM_SUBMISSION_GUC;
>>>>>         goto out;
>>>>>     }
>>>>>
>>>> Looks good to me, but as per the comments in the other thread, this 
>>>> might
>>>> have unintended side effects. Have you gone through all instances of 
>>>> the
>>>> submission query usages to check how it is used and whether this 
>>>> will break
>>>> something? E.g. if something is explicitly testing for execlist 
>>>> support to
>>>> mean 'something better than ring buffer' then it would now fail.
>>> There are at present just these two instances of gem_has_execlists:
>>>
>>> *** tests/i915/gem_ctx_shared.c:
>>> disjoint_timelines[162]        igt_require(gem_has_execlists(i915));
>>>
>>> *** tests/i915/gem_watchdog.c:
>>> virtual[225]                   igt_require(gem_has_execlists(i915));
>>>
>>> I'll try to see if I can figure out if they will be affected in any
>>> way.
>> Actually, earlier these tests were running for both execlists and guc
>> submission. If they are meant to run even for guc then they will now skip
>> in the guc case after this patch.
>>
>> Therefore I am thinking the exact equivalent of what was going on earlier
>> is this condition:
>>     igt_require(gem_has_execlists() | gem_has_guc_submission());
>>
>> So that's all that is needed now correct? But what I am not sure of 
>> yet is
>> whether they were meant to run for guc too or just execlists.
> Not sure what the ctx_shared one is about. Possibly that should be some 
> kind of 'has_contexts()' test (although I thought ring submission did 
> have context support post Gen6?). The watchdog one I would guess should 
> be 'has_watchdog()' unless this is some more specific subtest? In 
> general, it sounds like the 'has_execlists() || has_guc()' test is 
> really 'has_scheduler()', but it really is test specific I think.

Yes, gem_watchdog should keep running both with execlists and GuC. 
Perhaps most correct would be to make it skip if set_load_balance fails 
with an errno which indicates creating virtual engines is not supported?

Gem_ctx_shared/disjoint-timlines could perhaps use gem_uses_ppgtt() (for 
create vm) and gem_scheduler_enabled() for context re-ordering.

Regards,

Tvrtko





More information about the igt-dev mailing list