[PATCH 3/4] hw/cxl: Allow BI by default in Window restrictions

Davidlohr Bueso posted 4 patches 4 months, 1 week ago
There is a newer version of this series
[PATCH 3/4] hw/cxl: Allow BI by default in Window restrictions
Posted by Davidlohr Bueso 4 months, 1 week ago
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 <dave@stgolabs.net>
---
 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:
 
         ::
-- 
2.39.5
Re: [PATCH 3/4] hw/cxl: Allow BI by default in Window restrictions
Posted by Jonathan Cameron via 4 months, 1 week ago
On Tue,  5 Aug 2025 22:57:07 -0700
Davidlohr Bueso <dave@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 <dave@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:
>  
>          ::
Re: [PATCH 3/4] hw/cxl: Allow BI by default in Window restrictions
Posted by Davidlohr Bueso 4 months, 1 week ago
On Tue, 05 Aug 2025, Davidlohr Bueso wrote:

>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.

hmm so there is a doc build error I missed:

qemu-options.hx:212:Block quote ends without a blank line; unexpected unindent.

------

diff --git a/qemu-options.hx b/qemu-options.hx
index ef6072bd8b59..da642642eafc 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -168,7 +168,7 @@ SRST
          interleave. Default 256 (bytes). Only 256, 512, 1k, 2k,
          4k, 8k and 16k granularities supported.
  
-	``restrictions=restrictions`` bitmask of restrictions of the CFMW.
+        ``restrictions=restrictions`` bitmask of the restrictions of the CFMW.
  
          Example:
  














>+
>         Example:
>
>         ::
>-- 
>2.39.5
>