[Intel-gfx] [PATCH i-g-t] gem_ppgtt: Test VMA leak on context destruction

Thomas Wood thomas.wood at intel.com
Wed Sep 23 09:16:09 PDT 2015


On 23 September 2015 at 13:36, Tvrtko Ursulin
<tvrtko.ursulin at linux.intel.com> wrote:
>
> Hi,
>
> On 09/18/2015 12:17 PM, Thomas Wood wrote:
>>
>> On 11 September 2015 at 15:31, Tvrtko Ursulin
>> <tvrtko.ursulin at linux.intel.com> wrote:
>>>
>>> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>>>
>>> Test that VMAs associated with a context are cleaned up when
>>> contexts are destroyed.
>>>
>>> In practice this emulates the leak seen between fbcon and X server.
>>> Every time the X server exits we gain one VMA on the fbcon frame
>>> buffer object as externally visible via for example
>>> /sys/kernel/debug/dri/0/i915_gem_gtt.
>>>
>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>>> ---
>>>   tests/gem_ppgtt.c | 80
>>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>   1 file changed, 80 insertions(+)
>>>
>>> diff --git a/tests/gem_ppgtt.c b/tests/gem_ppgtt.c
>>> index 4f6df063214a..363f9d701585 100644
>>> --- a/tests/gem_ppgtt.c
>>> +++ b/tests/gem_ppgtt.c
>>> @@ -265,6 +265,83 @@ static void flink_and_close(void)
>>>          close(fd2);
>>>   }
>>>
>>> +static int grep_name(char *match, int to_match)
>>
>>
>> This could be added to igt_debugfs.c, as it might be useful for other
>> tests.
>
>
> I couldn't force myself to do it.

I've sent a follow up patch to move the function into the library and
use it in gem_ppgtt and gem_tiled_swapping.

>
>>
>>> +{
>>> +       int fdd, ret, matched;
>>> +
>>> +       fdd = open("/sys/kernel/debug/dri/0/i915_gem_gtt", O_RDONLY);
>>
>>
>> igt_debugfs_open would be more robust here, as it checks various
>> locations for the debugfs and also attempts to mount it if it can't be
>> found.
>
>
> Done.
>
>>
>>
>>> +       igt_assert(fdd >= 0);
>>> +
>>> +       matched = 0;
>>> +       do {
>>> +               char ch;
>>> +
>>> +               ret = read(fdd, &ch, 1);
>>> +               if (ret == 0)
>>> +                       break;
>>> +               igt_assert(ret == 1);
>>> +
>>> +               if (ch == match[matched])
>>> +                       matched++;
>>> +               else
>>> +                       matched = 0;
>>> +       } while (matched < to_match);
>>
>>
>> igt_debugfs_fopen is also available, which would allow the use of
>> getline and strstr here instead, as a slightly simpler implementation.
>
>
> Also done. Ah not via fopen but open+fdopen... drat..

The follow up patch I've sent addresses this and a few other minor issues.


>
> You want v3 or you can live with v2?

Unfortunately another version will be needed, as drm_open_any has been
replaced by drm_open_driver.


>
> Regards,
>
> Tvrtko
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list