On Thu, Apr 24, 2025 at 11:42:59AM +0100, Jonathan Cameron wrote:
> On Mon, 17 Mar 2025 16:31:30 +0000
> anisa.su...@gmail.com wrote:
> 
> > From: Anisa Su <anisa...@samsung.com>
> > 
> > Add dsmas_flags field to DC Region struct in preparation for next
> > command, which returns the dsmas flags in the response.
> > 
> > Signed-off-by: Anisa Su <anisa...@samsung.com>
> > ---
> >  hw/mem/cxl_type3.c          | 2 ++
> >  include/hw/cxl/cxl_device.h | 1 +
> >  2 files changed, 3 insertions(+)
> > 
> > diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c
> > index 731497ebda..452a0c101a 100644
> > --- a/hw/mem/cxl_type3.c
> > +++ b/hw/mem/cxl_type3.c
> > @@ -237,6 +237,8 @@ static int ct3_build_cdat_table(CDATSubHeader 
> > ***cdat_table, void *priv)
> >                                            ct3d->dc.regions[i].len,
> >                                            false, true, region_base);
> >              ct3d->dc.regions[i].dsmadhandle = dsmad_handle - 1;
> > +            CDATDsmas *dsmas = (CDATDsmas *) table[cur_ent + 
> > CT3_CDAT_DSMAS];
> > +            ct3d->dc.regions[i].dsmas_flags = dsmas->flags;
> 
Hi Jonathan,
Thanks for the feedback.
> This is relying to much on the ordering of creating fields in
> ct3_build_cdat_entries_for_mr().
I am not sure whether I understand this clearly.
In current qemu implemtation, each mr (ram,pmem or dc region) will have the
whole set of cdat table entries (dsmas, dslbis0-3, etc), so as long as we point
to the right table entry, we can get the table correctly.
What do you mean "the ordering of creating fields"?
> 
> I'd rather you just stored the information flags is built from in CXLDCRegion
> and then built the field that is wonderfully called 'Note' in the DC region
This sentence is kind of broken for me, not totally clear what you are
suggesting :-(. Can you explain more?
Are you suggesting not directly take dsmas->flags as dsmas_flags, but
use bit op to generate the value used in Table 7-66 in cxl spec 3.2?
> configuration in 6.2 spec.   I've sent a mail to see if we can clean that
6.2 spec???
> 'what is the field called' question for future spec releases.
> 
> Whilst the flag definitions cross refer the CDAT spec, the actual locations
> of those flags matches, but doesn't cross refer so maybe in the future
> we will have other flags in here and locations might not match.
For the flags stored in dsmas table, do we expect there can be more than those
defined in Table 7-66 in spec 3.2?

Fan

> 
> >  
> >              cur_ent += CT3_CDAT_NUM_ENTRIES;
> >              region_base += ct3d->dc.regions[i].len;
> > diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h
> > index bebed04085..81b826f570 100644
> > --- a/include/hw/cxl/cxl_device.h
> > +++ b/include/hw/cxl/cxl_device.h
> > @@ -609,6 +609,7 @@ typedef struct CXLDCRegion {
> >      uint8_t flags;
> >      unsigned long *blk_bitmap;
> >      uint64_t supported_blk_size_bitmask;
> > +    uint8_t dsmas_flags;
> >  } CXLDCRegion;
> >  
> >  typedef struct CXLSetFeatureInfo {
> 

Reply via email to