Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v6 0/9] add cgroup_dmem test
@ 2026-09-03 22:00 Thadeu Lima de Souza Cascardo
  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
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2026-09-03 22:00 UTC (permalink / raw)
  To: igt-dev
  Cc: siqueira, Thadeu Lima de Souza Cascardo, dri-devel, amd-gfx,
	intel-xe, Christian Koenig, maarten.lankhorst,
	Thomas Hellström, Kamil Konieczny, Janusz Krzysztofik,
	Vitaly Prosyak, Natalie Vock, Tvrtko Ursulin, kernel-dev

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>


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2026-09-04 14:51 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03 22:00 [PATCH i-g-t v6 0/9] add cgroup_dmem test Thadeu Lima de Souza Cascardo
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox