Hi all, This small series adds practical test coverage for the dmem cgroup controller.
The motivation came from following the recent dmem API discussion in thread [1]. That discussion considered changing the dmem API and adding a new knob. Currently there are no dedicated tests covering dmem behaviour, which makes such changes riskier. Adding selftests has an additional challenge: dmem charging paths are driver-driven today, so regression testing is harder unless a suitable driver is present in the test environment. This series addresses that by adding: - an out-of-tree dmem_selftest helper with alloc/free module parameters, - KB() definition next to existing MB()/GB() helpers - test_dmem for dmem.max enforcement and byte-accurate dmem.current The goal is to make dmem behavior easier to validate when evolving the API and implementation, while keeping tests deterministic and driver-independent. Thanks. [1] - https://lore.kernel.org/all/aZoHfloupKvF2oSu@fedora/ Signed-off-by: Albert Esteve <[email protected]> --- Changes in v6: - Drop virtme-ng wrappers - Build the helper out of tree, drop CONFIG_DMEM_SELFTEST - Rename charge/uncharge to alloc/free - Add KB() in cgroup_util.h - Use cg_read_key_long(), ARRAY_SIZE(), and KB()/MB() size literals - Drop test_dmem_min/low - Check dmem.current for exact equality - stat() the helper once in main() instead of per-subtest - Link to v5: https://lore.kernel.org/r/[email protected] Changes in v5: - Change parse_first_region() by find_selftest_region to scan dmem.capacity lines - Use exact equality for limit readback, not values_close() - Write VM tempfile to $SCRIPT_DIR - Fix KTAP by dropping outer framing in test_dmem - Use array for optional vng args to handle paths with spaces - Respect O=/KBUILD_OUTPUT= when building, per bpf/vmtest.sh convention - Link to v4: https://lore.kernel.org/r/[email protected] Changes in v4: - Fix charged_pool leak in dmem_selftest_init() - Replace ssh-based VM approach in vmtest-dmem.sh with vng --exec - Add main() wrapper to vmtest-dmem.sh - Other small fixes suggested by Sashiko - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - Set charged flag on unexpected over-limit charge success. - Add CONFIG_DMEM_SELFTEST=m to selftest config. - Simplify -v to a boolean; single -v was a no-op. - Unquote kernel_opt to avoid empty-string arg to vng. - Document -b in usage() output. - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Fix debugfs_create_dir() error check - Fix module teardown race: call dmem_selftest_remove() before uncharging so debugfs files are torn down - Use IS_ERR_OR_NULL() in selftest() sanity check - Add CONFIG_CGROUP_DMEM=y to the cgroup selftest config - Replace config-file parsing in check_guest_requirements() with a direct check of /sys/fs/cgroup/cgroup.controllers - Add new patch 4 (from Eric Chanudet): vmtest-dmem.sh -b flag to configure and build a local kernel tree - Link to v1: https://lore.kernel.org/r/[email protected] --- Albert Esteve (3): selftests: cgroup: Add dmem_selftest helper module selftests: cgroup: Add KB() helper selftests: cgroup: Add dmem selftest coverage tools/testing/selftests/cgroup/.gitignore | 1 + tools/testing/selftests/cgroup/Makefile | 3 + tools/testing/selftests/cgroup/config | 1 + .../selftests/cgroup/lib/include/cgroup_util.h | 1 + tools/testing/selftests/cgroup/test_dmem.c | 314 +++++++++++++++++++++ .../testing/selftests/cgroup/test_modules/Makefile | 17 ++ .../selftests/cgroup/test_modules/dmem_selftest.c | 146 ++++++++++ 7 files changed, 483 insertions(+) --- base-commit: cee9395acd8043be0644b25c34bfa86623f2b935 change-id: 20260318-kunit_cgroups-7fb0b9e64017 Best regards, -- Albert Esteve <[email protected]>

