CXL Dynamic Capacity Device (DCD) support has continued to evolve in the upstream kernel since Ira's v5 posting [1]. The kernel side has settled on a uuid-driven claim model for sparse DAX devices: dax_resources carry the tag delivered with each extent, and userspace selects which ones to claim by writing a UUID to the dax device's sysfs 'uuid' attribute (or "0" to claim a single untagged resource). Size on a sparse region is determined by the claim, not requested up-front.
This series brings cxl-cli and daxctl in line with that model and extends cxl_test to exercise the new paths end-to-end. The corresponding kernel patchset is here: https://lore.kernel.org/linux-cxl/[email protected]/T/#t Picked up unchanged from v5 (Ira): libcxl: Add Dynamic RAM A partition mode support cxl/region: Add cxl-cli support for dynamic RAM A libcxl: Add extent functionality to DC regions cxl/region: Add extent output to region query New in v6: daxctl: Add --uuid option to create-device for DC DAX regions - Plumbs writes to the new dax 'uuid' sysfs attribute through a new daxctl_dev_set_uuid() helper (LIBDAXCTL_11). - --uuid is mutually exclusive with --size; pass "0" to claim a single untagged dax_resource. An unmatched UUID surfaces ENOENT from the kernel and leaves the device at size 0. - Documents the option in the man page. cxl/test: Add Dynamic Capacity tests (rewritten on top of Ira's original patch to track the post-redesign kernel) - Routes untagged claims via --uuid "0" so daxctl exercises the kernel uuid_store path; tagged claims use real UUID strings. - Asserts that for DC regions, size-grow returns -EOPNOTSUPP (real grow is --uuid only) and that tag reuse across More-chains is rejected by the cross-More uniqueness gate. - Adds coverage for the new validators: test_uuid_no_match, test_uuid_no_match_seed_intact, test_uuid_show, test_cross_more_uniqueness, test_alignment_rejection. - Sharable-partition coverage (test_shared_extent_inject, test_seq_integrity_gap) is routed at runtime to a dedicated mock memdev that tools/testing/cxl stamps with serial 0xDCDC, so a single cxl_test module load exercises both regimes. - Localizes positional-arg assignments in every helper so functions no longer clobber caller globals (the previous behavior leaked the sharable memdev into later tests). - test_reject_overlapping arithmetic now lands an actual overlap inside the DC region (the prior math landed past the end). Depends on the kernel DCD/sparse-DAX series; without it the new tests will skip and 'cxl list -r N -Nu' will simply report no extents. The branch is also available at: https://github.com/anisa-su993/anisa-ndctl/tree/dcd-2026-05-21 Based on pmem/pending commit: bbd403a test/cxl-sanitize: avoid sanitize submit/wait race [1] https://lore.kernel.org/nvdimm/[email protected]/ --- Changes in v6: - anisa: New patch — daxctl --uuid option + daxctl_dev_set_uuid() helper - anisa: Rewrite cxl/test DCD tests against the post-redesign kernel (uuid sysfs claim, tag-group atomic release, cross-More uniqueness, alignment rejection, DC size-grow refusal) - anisa: Rebase onto bbd403a (pmem/pending) - Link to v5: https://lore.kernel.org/nvdimm/[email protected]/ Changes in v5: - iweiny: Adjust all code to view only the dynamic RAM A partition - Alison: s/tag/uuid/ in region query extent output - Link to v4: https://patch.msgid.link/[email protected] Anisa Su (1): daxctl: Add --uuid option to create-device for DC regions Ira Weiny (6): ndctl: Dynamic Capacity additions for cxl-cli libcxl: Add Dynamic RAM A partition mode support cxl/region: Add cxl-cli support for dynamic RAM A libcxl: Add extent functionality to DC regions cxl/region: Add extent output to region query cxl/test: Add Dynamic Capacity tests Documentation/cxl/cxl-list.txt | 29 + Documentation/cxl/lib/libcxl.txt | 33 +- Documentation/daxctl/daxctl-create-device.txt | 12 + cxl/filter.h | 3 + cxl/json.c | 67 + cxl/json.h | 3 + cxl/lib/libcxl.c | 181 +++ cxl/lib/libcxl.sym | 9 + cxl/lib/private.h | 14 + cxl/libcxl.h | 21 +- cxl/list.c | 3 + cxl/memdev.c | 4 +- cxl/region.c | 27 +- daxctl/device.c | 72 +- daxctl/lib/libdaxctl.c | 44 + daxctl/lib/libdaxctl.sym | 5 + daxctl/libdaxctl.h | 1 + test/cxl-dcd.sh | 1267 +++++++++++++++++ test/meson.build | 2 + util/json.h | 1 + 20 files changed, 1771 insertions(+), 27 deletions(-) create mode 100644 test/cxl-dcd.sh base-commit: bbd403a03fa2a1551c1a10bbf78f32027c718758 -- 2.43.0

