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 pushed to a branch at [4]. If preferred, I can submit the two patches independently. I have run the tests, including the ones that test dmem.max eviction behavior on a system with a 1GiB VRAM amdgpu card. I have not been able to run it on a Xe system so far. I would appreciate if people can do it. I have applied the patchset at [3] on top of current linux origin/master [5], with a fixup for the amdgpu driver. 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. [1] https://patchwork.freedesktop.org/series/163935/#rev3 [2] https://patchwork.freedesktop.org/series/166496/ [3] https://lore.kernel.org/dri-devel/[email protected]/ [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") 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/dmem_cgroups: add test for dmem.current Thomas Hellström (3): 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 lib/amdgpu/amd_dmem.c | 99 +++++++ 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 | 25 ++ lib/meson.build | 3 + lib/xe/xe_dmem.c | 159 ++++++++++ lib/xe/xe_query.c | 32 ++ lib/xe/xe_query.h | 2 + tests/cgroup_dmem.c | 92 ++++++ tests/dmem_cgroups.c | 241 +++++++++++++++ tests/meson.build | 2 + 14 files changed, 1377 insertions(+) create mode 100644 lib/amdgpu/amd_dmem.c create mode 100644 lib/igt_cgroup.c create mode 100644 lib/igt_cgroup.h create mode 100644 lib/igt_dmem_driver.h create mode 100644 lib/xe/xe_dmem.c create mode 100644 tests/cgroup_dmem.c create mode 100644 tests/dmem_cgroups.c -- 2.47.3
