On Tue, 5 Aug 2025 22:57:07 -0700 Davidlohr Bueso <d...@stgolabs.net> wrote:
> Update the CFMW restrictions to also permit Back-Invalidate > flows by default, which is aligned with the no-restrictions > policy. > > While at it, document the 'restrictions=' option. > > Signed-off-by: Davidlohr Bueso <d...@stgolabs.net> I sat on this the original restrictions patch without trying to upstream it on the basis that it's a horrible interface. Time to clean my mess up I guess then I'll fix this up on top. We probably want it to enable everything by default (other than the fixed device config one and then provide boolean properties to turn things off. For now I can't see a reason to have the fixed device config as a possibility. Jonathan > --- > hw/cxl/cxl-host.c | 2 +- > qapi/machine.json | 3 ++- > qemu-options.hx | 4 +++- > 3 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c > index def2cf75be61..0d17ea3e4c26 100644 > --- a/hw/cxl/cxl-host.c > +++ b/hw/cxl/cxl-host.c > @@ -64,7 +64,7 @@ static void > cxl_fixed_memory_window_config(CXLFixedMemoryWindowOptions *object, > if (object->has_restrictions) { > fw->restrictions = object->restrictions; > } else { > - fw->restrictions = 0xf; /* No restrictions */ > + fw->restrictions = 0x2f; /* No restrictions */ > } > > fw->targets = g_malloc0_n(fw->num_targets, sizeof(*fw->targets)); > diff --git a/qapi/machine.json b/qapi/machine.json > index ac258578e4ab..ea8ba71305b0 100644 > --- a/qapi/machine.json > +++ b/qapi/machine.json > @@ -589,7 +589,8 @@ > # BIT(2) - Volatile > # BIT(3) - Persistent > # BIT(4) - Fixed Device Config > -# Default is 0xF > +# BIT(5) - BI > +# Default is 0x2F > # > # @targets: Target root bridge IDs from -device ...,id=<ID> for each > # root bridge. > diff --git a/qemu-options.hx b/qemu-options.hx > index 1f862b19a676..ef6072bd8b59 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -142,7 +142,7 @@ SRST > -machine memory-backend=pc.ram > -m 512M > > - > ``cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]`` > + > ``cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity,restrictions=restrictions]`` > Define a CXL Fixed Memory Window (CFMW). > > Described in the CXL 2.0 ECN: CEDT CFMWS & QTG _DSM. > @@ -168,6 +168,8 @@ SRST > interleave. Default 256 (bytes). Only 256, 512, 1k, 2k, > 4k, 8k and 16k granularities supported. > > + ``restrictions=restrictions`` bitmask of restrictions of the CFMW. > + > Example: > > ::