On Thu, May 08, 2025 at 12:00:59AM +0000, anisa.su...@gmail.com wrote:
> From: Anisa Su <anisa...@samsung.com>
> 
> 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

s/next command/mailbox command 0x5601h/, otherwise
Reviewed-by: Fan Ni <fan...@samsung.com>

> response.
> 
> Signed-off-by: Anisa Su <anisa...@samsung.com>


> ---
>  hw/mem/cxl_type3.c          |  8 +++++++-
>  include/hw/cxl/cxl_device.h | 15 +++++++++++++++
>  2 files changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c
> index 7129da0940..05d4c861f1 100644
> --- a/hw/mem/cxl_type3.c
> +++ b/hw/mem/cxl_type3.c
> @@ -232,10 +232,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;
> diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h
> index bebed04085..cbcc1bc9f5 100644
> --- a/include/hw/cxl/cxl_device.h
> +++ b/include/hw/cxl/cxl_device.h
> @@ -177,6 +177,15 @@ typedef enum {
>      MAX_LOG_TYPE
>  } CXLLogType;
>  
> +/* 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;
> @@ -609,6 +618,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 {
> -- 
> 2.47.2
> 

-- 
Fan Ni

Reply via email to