[igt-dev] [PATCH i-g-t] gem_exec_reloc & gem_shrink: Added gem_require_mappable_ggtt to check mappable aperture
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Mon Nov 30 12:09:10 UTC 2020
On 30/11/2020 10:12, Chris Wilson wrote:
> Quoting Tvrtko Ursulin (2020-11-30 10:04:17)
>> On 30/11/2020 02:03, Arjun Melkaveri wrote:
>>> Added gem_require_mappable_ggtt to check mappable aperture.
>>> This is to avoid any test crash that might happen
>>> if mappable aperture is not avilable.
>>>
>>> Cc: Chris Wilson <chris at chris-wilson.co.uk>
>>> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>>> Signed-off-by: Arjun Melkaveri <arjun.melkaveri at intel.com>
>>> ---
>>> tests/i915/gem_exec_reloc.c | 3 +++
>>> tests/i915/gem_shrink.c | 2 ++
>>> 2 files changed, 5 insertions(+)
>>>
>>> diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
>>> index 8dcb24a6..596b1157 100644
>>> --- a/tests/i915/gem_exec_reloc.c
>>> +++ b/tests/i915/gem_exec_reloc.c
>>> @@ -1217,6 +1217,7 @@ igt_main
>>> if (!(f->flags & NORELOC)) {
>>> igt_subtest_f("%srange%s",
>>> f->basic ? "basic-" : "", f->name) {
>>> + gem_require_mappable_ggtt(fd);
>>
>> From the code and commit message it is not immediately obvious to me
>> why basic_range needs the aperture, Chris? Answer to that will drive the
>> solution.
>
> It does not.
Okay, so the plan for this one should be to stop probing aperture size
and instead probe the size of the address space in use. This will be
ggtt on old gens and ppgtt on new ones. And to keep object count in
check with regards to available backing store, if required (not sure
right now).
>>
>>> igt_while_interruptible(f->flags & INTERRUPTIBLE)
>>> basic_range(fd, f->flags);
>>> }
>>> @@ -1264,6 +1265,7 @@ igt_main
>>> }
>>>
>>> igt_subtest_with_dynamic("basic-spin") {
>>> +
>>
>> !
>>
>>> __for_each_physical_engine(fd, e) {
>>> igt_dynamic_f("%s", e->name)
>>> active_spin(fd, e->flags);
>>> @@ -1278,6 +1280,7 @@ igt_main
>>> }
>>>
>>> igt_subtest_with_dynamic("basic-many-active") {
>>> + gem_require_mappable_ggtt(fd);
>>> __for_each_physical_engine(fd, e) {
>>> igt_dynamic_f("%s", e->name)
>>> many_active(fd, e->flags);
>>
>> Same for many_active - maybe tests should use ggtt size and not
>> aperture, with some tweaks to make size/runtime sane?
>
> It does not. This is somebody hacking over a major kernel bug.
Okay so same as above, don't probe aperture but address space size.
>
>>> diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c
>>> index dba62c8f..094975af 100644
>>> --- a/tests/i915/gem_shrink.c
>>> +++ b/tests/i915/gem_shrink.c
>>> @@ -432,6 +432,8 @@ igt_main
>>> fd = drm_open_driver(DRIVER_INTEL);
>>> igt_require_gem(fd);
>>>
>>> + gem_require_mappable_ggtt(fd);
>>> +
>>> /*
>>> * Spawn enough processes to use all memory, but each only
>>> * uses half the available mappable aperture ~128MiB.
>>>
>>
>> And for this one the same I think. Apart from the subtests using
>> mmap-gtt other ones could probably be made work by calculating the
>> working set in a different way. Possibly just use the ggtt size and skip
>> tests which need aperture if no aperture. Chris would that be acceptable
>> or there is a special reason to have N clients with each using an
>> aperture sized amount of memory, to total RAM size?
>
> shrink is system memory limits.
Yes, I was ignoring that aspect for now and focusing on the aperture
size misuse. But yes, making gem_shrink falsely pass on dg1 is not what
we really want. Probably make it explicitly use system memory objects
once that API is available.
Regards,
Tvrtko
More information about the igt-dev
mailing list