hw/mem: cxl_type3: Add dsmas_flags to CXLDCRegion struct

Add booleans to DC Region struct to represent dsmas flags (defined in CDAT) in
preparation for the next command, which returns the flags in the next mailbox
command 0x5601.

Reviewed-by: Fan Ni <fan.ni@samsung.com>
Signed-off-by: Anisa Su <anisa.su@samsung.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Message-Id: <20250714174509.1984430-4-Jonathan.Cameron@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Anisa Su 2025-07-14 18:44:59 +01:00 committed by Michael S. Tsirkin
parent 9fde6eb39d
commit 3d1607cc29
2 changed files with 22 additions and 1 deletions

View file

@ -226,10 +226,16 @@ static int ct3_build_cdat_table(CDATSubHeader ***cdat_table, void *priv)
* future.
*/
for (i = 0; i < ct3d->dc.num_regions; i++) {
ct3d->dc.regions[i].nonvolatile = false;
ct3d->dc.regions[i].sharable = false;
ct3d->dc.regions[i].hw_managed_coherency = false;
ct3d->dc.regions[i].ic_specific_dc_management = false;
ct3d->dc.regions[i].rdonly = false;
ct3_build_cdat_entries_for_mr(&(table[cur_ent]),
dsmad_handle++,
ct3d->dc.regions[i].len,
false, true, region_base);
ct3d->dc.regions[i].nonvolatile,
true, region_base);
ct3d->dc.regions[i].dsmadhandle = dsmad_handle - 1;
cur_ent += CT3_CDAT_NUM_ENTRIES;

View file

@ -133,6 +133,15 @@ typedef enum {
CXL_MBOX_MAX = 0x20
} CXLRetCode;
/* r3.2 Section 7.6.7.6.2: Table 7-66: DSMAS Flags Bits */
typedef enum {
CXL_DSMAS_FLAGS_NONVOLATILE = 2,
CXL_DSMAS_FLAGS_SHARABLE = 3,
CXL_DSMAS_FLAGS_HW_MANAGED_COHERENCY = 4,
CXL_DSMAS_FLAGS_IC_SPECIFIC_DC_MANAGEMENT = 5,
CXL_DSMAS_FLAGS_RDONLY = 6,
} CXLDSMASFlags;
typedef struct CXLCCI CXLCCI;
typedef struct cxl_device_state CXLDeviceState;
struct cxl_cmd;
@ -531,6 +540,12 @@ typedef struct CXLDCRegion {
uint8_t flags;
unsigned long *blk_bitmap;
uint64_t supported_blk_size_bitmask;
/* Following bools make up dsmas flags, as defined in the CDAT */
bool nonvolatile;
bool sharable;
bool hw_managed_coherency;
bool ic_specific_dc_management;
bool rdonly;
} CXLDCRegion;
typedef struct CXLSetFeatureInfo {