Fan Ni wrote: > On Sun, Apr 13, 2025 at 05:52:10PM -0500, Ira Weiny wrote: > > Devices which optionally support Dynamic Capacity (DC) are configured > > via mailbox commands. CXL 3.2 section 9.13.3 requires the host to issue > > the Get DC Configuration command in order to properly configure DCDs. > > Without the Get DC Configuration command DCD can't be supported. > > > > Implement the DC mailbox commands as specified in CXL 3.2 section > > 8.2.10.9.9 (opcodes 48XXh) to read and store the DCD configuration > > information. Disable DCD if an invalid configuration is found. > > > > Linux has no support for more than one dynamic capacity partition. Read > > and validate all the partitions but configure only the first partition > > as 'dynamic ram A'. Additional partitions can be added in the future if > > such a device ever materializes. Additionally is it anticipated that no > > skips will be present from the end of the pmem partition. Check for an > > disallow this configuration as well. > > > > Linux has no use for the trailing fields of the Get Dynamic Capacity > > Configuration Output Payload (Total number of supported extents, number > > of available extents, total number of supported tags, and number of > > available tags). Avoid defining those fields to use the more useful > > dynamic C array. > > > > Based on an original patch by Navneet Singh. > > > > Signed-off-by: Ira Weiny <ira.we...@intel.com> > > > > --- > > Changes: > > [iweiny: rebase] > > [iweiny: Update spec references to 3.2] > > [djbw: Limit to 1 partition] > > [djbw: Avoid inter-partition skipping] > > [djbw: s/region/partition/] > > [djbw: remove cxl_dc_region[partition]_info->name] > > [iweiny: adjust to lack of dcd_cmds in mds] > > [iweiny: remove extra 'region' from names] > > [iweiny: remove unused CXL_DYNAMIC_CAPACITY_SANITIZE_ON_RELEASE_FLAG] > > --- > > drivers/cxl/core/hdm.c | 2 + > > drivers/cxl/core/mbox.c | 179 > > ++++++++++++++++++++++++++++++++++++++++++++++++ > > drivers/cxl/cxl.h | 1 + > > drivers/cxl/cxlmem.h | 54 ++++++++++++++- > > drivers/cxl/pci.c | 3 + > > 5 files changed, 238 insertions(+), 1 deletion(-) > ... > > /* Set Timestamp CXL 3.0 Spec 8.2.9.4.2 */ > > struct cxl_mbox_set_timestamp_in { > > __le64 timestamp; > > @@ -845,9 +871,24 @@ enum { > > int cxl_internal_send_cmd(struct cxl_mailbox *cxl_mbox, > > struct cxl_mbox_cmd *cmd); > > int cxl_dev_state_identify(struct cxl_memdev_state *mds); > > + > > +struct cxl_mem_dev_info { > > + u64 total_bytes; > > + u64 volatile_bytes; > > + u64 persistent_bytes; > > +}; > > Defined, but never used.
Shoot... That was from a previous version of work on type2... Thanks for the catch! Ira [snip]