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


Reply via email to