[igt-dev] [PATCH i-g-t v11 1/2] lib/igt_ioctl_wrappers: Add igt_has_drm_cap ioctl wrapper

Karthik B S karthik.b.s at intel.com
Wed Sep 30 06:18:07 UTC 2020



On 9/29/2020 10:07 PM, Ville Syrjälä wrote:
> On Tue, Sep 29, 2020 at 03:16:56PM +0530, Karthik B S wrote:
>>
>>
>> On 9/25/2020 8:38 PM, Ville Syrjälä wrote:
>>> On Fri, Sep 25, 2020 at 09:56:12AM +0530, Karthik B S wrote:
>>>> Add a generic helper for DRM_IOCTL_GET_CAP ioctl.
>>>>
>>>> v10: -No changes.
>>>>
>>>> v11: -Pass cap ID instead of the whole structure. (Ville)
>>>>        -Fix the patch ordering. (Ville)
>>>>
>>>> Signed-off-by: Karthik B S <karthik.b.s at intel.com>
>>>> ---
>>>>    lib/ioctl_wrappers.c | 17 +++++++++++++++++
>>>>    lib/ioctl_wrappers.h |  1 +
>>>>    2 files changed, 18 insertions(+)
>>>>
>>>> diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
>>>> index 3781286d..3f35609a 100644
>>>> --- a/lib/ioctl_wrappers.c
>>>> +++ b/lib/ioctl_wrappers.c
>>>> @@ -1318,3 +1318,20 @@ int __kms_addfb(int fd, uint32_t handle,
>>>>    
>>>>    	return ret < 0 ? -errno : ret;
>>>>    }
>>>> +
>>>> +/**
>>>> + * igt_has_drm_cap:
>>>> + * @fd: Open DRM file descriptor.
>>>> + * @cap: drm_get_cap structure.
>>>> + *
>>>> + * This helper verifies if the passed cap is supported by the kernel
>>>> + *
>>>> + * Returns: Whether the cap is supported or not.
>>>> + */
>>>> +bool igt_has_drm_cap(int fd, uint64_t flag)
>>>
>>> The docs and code here don't match. I fixed that up and
>>> s/flag/capability/ for clarity.
>>>
>>> There was also an int vs. pointer compiler warning in the
>>> othr patch  which I fixed.
>>>
>>> Series pushed to master. Thanks.
>>>
>>
>> Thanks for the merge.
> 
> CI is not very happy with these. Pls investigate.
> 

I went through the results for kms_async_flips on CI.
Other than alternate-sync-async-flip subtest on SKL which is giving warn 
in dmesg "Atomic update on pipe (A) took 325 us, max time under evasion 
is 250 us", all the other failures are sporadic and failing due to one 
of the async flips in between taking longer time.

Two things are coming to my mind to handle this.
1. Reduce the MIN_FLIPS_PER_FRAME to 5 may be and check if this can 
handle the error across all platforms.

(Or)

2. Remove the assert where we check the flip interval of each async flip.

For subtest async-flip-with-page-flip-events, anyway we're having a FPS 
check at the end which measures the overall flip rate.

For subtest alternate-sync-async-flip, may be I add a buffer to allow a 
couple of flips to take longer than the threshold before actually 
failing the test.

Which approach would you suggest? or any other way you would suggest to 
handle this better?

Also looks like some of the HW are faster than others.
For Ex, we're not seeing any failures on ICL, whereas many failures are 
seen on KBL. Would you suggest we have MIN_FLIPS_PER_FRAME at a platform 
level?

I will also try to find out what is causing the dmesg warn only for SKL 
in case of alternate async and sync flips.
Any thing that you could point to, that should be changed for SKL in 
particular to take care of the dmesg warning?

Thanks,
Karthik.B.S
>>
>> Thanks,
>> Karthik.B.S
>>>> +{
>>>> +	struct drm_get_cap cap = { .capability = flag };
>>>> +
>>>> +	igt_assert(drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap) == 0);
>>>> +	return cap.value;
>>>> +}
>>>> diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
>>>> index 870ac8b7..e0ec203d 100644
>>>> --- a/lib/ioctl_wrappers.h
>>>> +++ b/lib/ioctl_wrappers.h
>>>> @@ -196,6 +196,7 @@ struct local_drm_mode_fb_cmd2 {
>>>>    
>>>>    bool igt_has_fb_modifiers(int fd);
>>>>    void igt_require_fb_modifiers(int fd);
>>>> +bool igt_has_drm_cap(int fd, uint64_t flag);
>>>>    
>>>>    /**
>>>>     * __kms_addfb:
>>>> -- 
>>>> 2.22.0
>>>
> 


More information about the igt-dev mailing list