From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
To: igt-dev@lists.freedesktop.org
Cc: siqueira@igalia.com,
"Thadeu Lima de Souza Cascardo" <cascardo@igalia.com>,
dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org,
"Christian Koenig" <christian.koenig@amd.com>,
maarten.lankhorst@linux.intel.com,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Kamil Konieczny" <kamil.konieczny@linux.intel.com>,
"Janusz Krzysztofik" <janusz.krzysztofik@linux.intel.com>,
"Vitaly Prosyak" <vitaly.prosyak@amd.com>,
"Natalie Vock" <natalie.vock@gmx.de>,
"Tvrtko Ursulin" <tvrtko.ursulin@igalia.com>,
kernel-dev@igalia.com
Subject: [PATCH i-g-t v6 0/9] add cgroup_dmem test
Date: Thu, 03 Sep 2026 19:00:22 -0300 [thread overview]
Message-ID: <20260903-dmem_max-v6-0-61dc62970fae@igalia.com> (raw)
v6 TLDR:
Change igt_dmem_driver API by moving handle array allocation out of it and
into the test itself and including dmem.max new behavior test.
This patchset is based on the work of Thomas Hellström at [1] and a
followup I have submitted at [2].
With this version, I reverted the order in which to apply the patchsets, as
this one adds the infrastructure and the drivers mechanisms, and a test for
dmem.current and its behavior around dmem.max that is currently supported
in the kernel.
As for the new dmem.max eviction behavior, introduced by [3], it has been
now included since it has been merged to Linux v7.3-rc1.
I have run the tests, including the ones that test dmem.max eviction
behavior on a system with a 1GiB VRAM amdgpu card. Rodrigo Siqueira helped
me run it on a Xe system. We have had applied the patchset at [3] on top of
then current linux origin/master [5], with a fixup for the amdgpu driver.
This latest version has not been tested on Xe, except for the dmem.current
behavior, which was tested with a 7.0 kernel.
Latest tests for amdgpu used v7.3-rc1.
Now, for the changes since v1 [2]:
- Changed the test name from drv_dmem_cgroups to dmem_cgroups.
- Have system includes before igt ones.
- Documented the current SUBTEST.
- Changed free_vram driver hook to only release a given BO. This allows for
the eviction trigger by a new allocation added by write_eviction_nonblock
subtest.
- Changed allocate_vram to keep more state necessary for releasing a single BO.
- Added a global free_vram helper to free all allocated VRAM.
Compared to v3 of [1]:
- I have kept wait_for_usage_drop as release can be lazy and we test for it
on test_current SUBTEST, but had USAGE_DROP_TIMEOUT_MS be a little
longer.
- Changed BO_SIZE and EVICT_STEP to allow for more than two eviction steps
on a 1GiB VRAM system.
- Reduced USAGE_SLACK to avoid false positives, but still allow for some
page table accounting.
Compared to v2 of this one [6]:
- Ignore -ENOMEM and -ENOSPC when trying to fill VRAM.
- When limiting max memory, allow for some slack, as there might be some
overhead.
- On Xe, allocate GEM object with no deferred backing, and skip binding.
Compared to v3 of this one [7]:
- Merge dmem_cgroups tests into cgroup_dmem and making cgroup_dmem original
test a subtest.
- Remove assertion when trying to verify allocations have failed as amdgpu
will fallback to GTT.
Compared to v4 of this one [8]:
- Removed the creation of vm in Xe, that was leading to extra bytes being
used and was no longer necessary.
- Removed the USAGE_SLACK that was necessary due to the extra bytes
allocated due to the use of vm in Xe.
Compared to v5 of this one [10]:
- Documented igt_dmem_driver structure.
- Simplified igt_dmem_driver API, such that handle array allocation is not
done, and handles are returned as part of allocation.
- Make get_region_name callback use the context, instead of fd, which
avoids repeating the vram region lookup for Xe.
- Moved handle array allocation into the test.
- init/deinit the igt_dmem_driver per driver, not per subtest.
[1] https://patchwork.freedesktop.org/series/163935/#rev3
[2] https://patchwork.freedesktop.org/series/166496/
[3] https://lore.kernel.org/dri-devel/20260611173301.17473-1-thomas.hellstrom@linux.intel.com/
[4] https://gitlab.freedesktop.org/cascardo/igt-gpu-tools/-/commits/dmem_max?ref_type=heads
[5] 502d801f0ab0 ("Merge tag 'erofs-for-7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs")
[6] https://lore.kernel.org/dri-devel/20260623174319.4138648-1-cascardo@igalia.com/
[7] https://lore.kernel.org/dri-devel/20260702130108.1397444-1-cascardo@igalia.com/
[8] https://lore.kernel.org/dri-devel/20260717120447.1837818-1-cascardo@igalia.com/
[9] https://lore.kernel.org/dri-devel/20260703130541.2686-1-thomas.hellstrom@linux.intel.com/
[10] https://lore.kernel.org/dri-devel/20260723194313.2748143-1-cascardo@igalia.com/
To: igt-dev@lists.freedesktop.org
Cc: siqueira@igalia.com
Cc: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Cc: dri-devel@lists.freedesktop.org
Cc: amd-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
Cc: Christian Koenig <christian.koenig@amd.com>
Cc: maarten.lankhorst@linux.intel.com
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Cc: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>
Cc: Natalie Vock <natalie.vock@gmx.de>
Cc: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: kernel-dev@igalia.com
--
2.47.3
---
Thadeu Lima de Souza Cascardo (4):
lib/xe: Introduce dmem driver and implement Xe support
lib/amdgpu: add amdgpu_cgroup_region_name
lib/amdgpu: add amdgpu support to igt_dmem_driver
tests/cgroup_dmem: add test for dmem.current
Thomas Hellström (5):
lib/igt_cgroup: add cgroup v2 and dmem controller helpers
tests/cgroup_dmem: add dmem cgroup controller test
lib/xe: add xe_cgroup_region_name() helper
tests/cgroup_dmem: add dmem cgroup eviction test
tests/cgroup_dmem: add write_eviction_nonblock subtest
lib/amdgpu/amd_dmem.c | 90 +++++++
lib/amdgpu/amd_memory.c | 25 ++
lib/amdgpu/amd_memory.h | 2 +
lib/igt.h | 1 +
lib/igt_cgroup.c | 638 ++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_cgroup.h | 56 +++++
lib/igt_dmem_driver.h | 35 +++
lib/meson.build | 3 +
lib/xe/xe_dmem.c | 97 ++++++++
lib/xe/xe_query.c | 32 +++
lib/xe/xe_query.h | 2 +
tests/cgroup_dmem.c | 524 +++++++++++++++++++++++++++++++++++++++
tests/meson.build | 1 +
13 files changed, 1506 insertions(+)
---
base-commit: aafc4bcf336167ad12356050b2e1da7e8c314555
change-id: 20260902-dmem_max-1a5e837347a8
Best regards,
--
Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
next reply other threads:[~2026-09-03 22:00 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 22:00 Thadeu Lima de Souza Cascardo [this message]
2026-09-03 22:00 ` [PATCH i-g-t v6 1/9] lib/igt_cgroup: add cgroup v2 and dmem controller helpers Thadeu Lima de Souza Cascardo
2026-09-03 22:00 ` [PATCH i-g-t v6 2/9] tests/cgroup_dmem: add dmem cgroup controller test Thadeu Lima de Souza Cascardo
2026-09-03 22:00 ` [PATCH i-g-t v6 3/9] lib/xe: add xe_cgroup_region_name() helper Thadeu Lima de Souza Cascardo
2026-09-03 22:00 ` [PATCH i-g-t v6 4/9] lib/xe: Introduce dmem driver and implement Xe support Thadeu Lima de Souza Cascardo
2026-09-04 10:02 ` Tvrtko Ursulin
2026-09-03 22:00 ` [PATCH i-g-t v6 5/9] lib/amdgpu: add amdgpu_cgroup_region_name Thadeu Lima de Souza Cascardo
2026-09-04 10:00 ` Tvrtko Ursulin
2026-09-03 22:00 ` [PATCH i-g-t v6 6/9] lib/amdgpu: add amdgpu support to igt_dmem_driver Thadeu Lima de Souza Cascardo
2026-09-04 10:11 ` Tvrtko Ursulin
2026-09-03 22:00 ` [PATCH i-g-t v6 7/9] tests/cgroup_dmem: add test for dmem.current Thadeu Lima de Souza Cascardo
2026-09-04 12:40 ` Tvrtko Ursulin
2026-09-03 22:00 ` [PATCH i-g-t v6 8/9] tests/cgroup_dmem: add dmem cgroup eviction test Thadeu Lima de Souza Cascardo
2026-09-04 14:48 ` Tvrtko Ursulin
2026-09-03 22:00 ` [PATCH i-g-t v6 9/9] tests/cgroup_dmem: add write_eviction_nonblock subtest Thadeu Lima de Souza Cascardo
2026-09-04 14:51 ` Tvrtko Ursulin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260903-dmem_max-v6-0-61dc62970fae@igalia.com \
--to=cascardo@igalia.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=igt-dev@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=janusz.krzysztofik@linux.intel.com \
--cc=kamil.konieczny@linux.intel.com \
--cc=kernel-dev@igalia.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=natalie.vock@gmx.de \
--cc=siqueira@igalia.com \
--cc=thomas.hellstrom@linux.intel.com \
--cc=tvrtko.ursulin@igalia.com \
--cc=vitaly.prosyak@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox