[PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties

Zhenzhong Duan posted 1 patch 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260309092027.404489-1-zhenzhong.duan@intel.com
Maintainers: Yi Liu <yi.l.liu@intel.com>, Eric Auger <eric.auger@redhat.com>, Zhenzhong Duan <zhenzhong.duan@intel.com>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>, "Clément Mathieu--Drif" <clement.mathieu--drif@bull.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, Fabiano Rosas <farosas@suse.de>, Laurent Vivier <lvivier@redhat.com>
docs/devel/vfio-iommufd.rst    | 10 +++++-----
hw/i386/intel_iommu.c          |  8 ++++----
hw/i386/intel_iommu_accel.c    |  4 ++--
tests/qtest/intel-iommu-test.c |  2 +-
4 files changed, 12 insertions(+), 12 deletions(-)
[PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Zhenzhong Duan 1 month ago
We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
year, it's fine to remove 'x-' now.

This is a prerequisite to enable intel_iommu's scalable mode and first stage
translation support in libvirt.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
---
 docs/devel/vfio-iommufd.rst    | 10 +++++-----
 hw/i386/intel_iommu.c          |  8 ++++----
 hw/i386/intel_iommu_accel.c    |  4 ++--
 tests/qtest/intel-iommu-test.c |  2 +-
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
index 78bcdffac7..5755532443 100644
--- a/docs/devel/vfio-iommufd.rst
+++ b/docs/devel/vfio-iommufd.rst
@@ -153,22 +153,22 @@ RAM discarding for mdev.
 ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
 devices are always mdev and RAM discarding is force enabled.
 
-Usage with intel_iommu featuring x-flts=on
+Usage with intel_iommu featuring flts=on
 ------------------------------------------
 
 Only IOMMUFD backed VFIO device is supported when intel_iommu is configured
-with x-flts=on, for legacy container backed VFIO device, below error shows:
+with flts=on, for legacy container backed VFIO device, below error shows:
 
 .. code-block:: none
 
-    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
+    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
 
 VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
 otherwise below error shows:
 
 .. code-block:: none
 
-    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-flts=on
+    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when flts=on
 
 If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=on,sm_off"
 is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
@@ -177,4 +177,4 @@ below if it's not needed by guest:
 
 .. code-block:: bash
 
-    -device intel-iommu,x-scalable-mode=off
+    -device intel-iommu,scalable-mode=off
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index d24ba989bf..001847ad37 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
     DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
                       VTD_HOST_ADDRESS_WIDTH),
     DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE),
-    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
-    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
+    DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
+    DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE),
     DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),
     DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
     DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
@@ -5564,7 +5564,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
     }
 
     if (!s->scalable_mode && s->fsts) {
-        error_setg(errp, "x-flts is only available in scalable mode");
+        error_setg(errp, "flts is only available in scalable mode");
         return false;
     }
 
@@ -5577,7 +5577,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
     }
 
     if (s->fsts && s->aw_bits != VTD_HOST_AW_48BIT) {
-        error_setg(errp, "Scalable mode(x-flts=on): supported value for "
+        error_setg(errp, "Scalable mode(flts=on): supported value for "
                    "aw-bits is: %d", VTD_HOST_AW_48BIT);
         return false;
     }
diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c
index 67d54849f2..b28d5eb9fa 100644
--- a/hw/i386/intel_iommu_accel.c
+++ b/hw/i386/intel_iommu_accel.c
@@ -26,7 +26,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
     PCIDevice *pdev = bus->devices[vtd_hiod->devfn];
 
     if (!object_dynamic_cast(OBJECT(hiod), TYPE_HOST_IOMMU_DEVICE_IOMMUFD)) {
-        error_setg(errp, "Need IOMMUFD backend when x-flts=on");
+        error_setg(errp, "Need IOMMUFD backend when flts=on");
         return false;
     }
 
@@ -44,7 +44,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
 
     if (pci_device_get_iommu_bus_devfn(pdev, &bus, NULL, NULL)) {
         error_setg(errp, "Host device downstream to a PCI bridge is "
-                   "unsupported when x-flts=on");
+                   "unsupported when flts=on");
         return false;
     }
 
diff --git a/tests/qtest/intel-iommu-test.c b/tests/qtest/intel-iommu-test.c
index e5cc6acaf0..4f12c56260 100644
--- a/tests/qtest/intel-iommu-test.c
+++ b/tests/qtest/intel-iommu-test.c
@@ -29,7 +29,7 @@ static void test_intel_iommu_stage_1(void)
     uint64_t cap, ecap, tmp;
     QTestState *s;
 
-    s = qtest_init("-M q35 -device intel-iommu,x-scalable-mode=on,x-flts=on");
+    s = qtest_init("-M q35 -device intel-iommu,scalable-mode=on,flts=on");
 
     cap = vtd_reg_readq(s, DMAR_CAP_REG);
     g_assert((cap & CAP_STAGE_1_FIXED1) == CAP_STAGE_1_FIXED1);
-- 
2.47.3
Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Daniel P. Berrangé 1 month ago
On Mon, Mar 09, 2026 at 05:20:27AM -0400, Zhenzhong Duan wrote:
> We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
> year, it's fine to remove 'x-' now.

I tried to look at history to understand why we used an 'x-' prefix to
begin with. There doesn't seem to have been a very compelling reason,
just a suggestion from Peter (cc'd)

   https://lists.nongnu.org/archive/html/qemu-devel/2019-02/msg02847.html

If we assume these features are needed for

> This is a prerequisite to enable intel_iommu's scalable mode and first stage
> translation support in libvirt.

Yep, libvirt will not support any setting with an 'x-' prefix,
until it is graduated to supportable by QEMU


What's the typical use case where a user needs to set these
two properties ?

Presuming we'll need to support those use cases indefinitely,
and we have no better QEMU design available, then dropping the
'x-' prefix makes sense.

> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
> ---
>  docs/devel/vfio-iommufd.rst    | 10 +++++-----
>  hw/i386/intel_iommu.c          |  8 ++++----
>  hw/i386/intel_iommu_accel.c    |  4 ++--
>  tests/qtest/intel-iommu-test.c |  2 +-
>  4 files changed, 12 insertions(+), 12 deletions(-)



> 
> diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
> index 78bcdffac7..5755532443 100644
> --- a/docs/devel/vfio-iommufd.rst
> +++ b/docs/devel/vfio-iommufd.rst
> @@ -153,22 +153,22 @@ RAM discarding for mdev.
>  ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
>  devices are always mdev and RAM discarding is force enabled.
>  
> -Usage with intel_iommu featuring x-flts=on
> +Usage with intel_iommu featuring flts=on
>  ------------------------------------------
>  
>  Only IOMMUFD backed VFIO device is supported when intel_iommu is configured
> -with x-flts=on, for legacy container backed VFIO device, below error shows:
> +with flts=on, for legacy container backed VFIO device, below error shows:
>  
>  .. code-block:: none
>  
> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
>  
>  VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
>  otherwise below error shows:
>  
>  .. code-block:: none
>  
> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-flts=on
> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when flts=on
>  
>  If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=on,sm_off"
>  is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
> @@ -177,4 +177,4 @@ below if it's not needed by guest:
>  
>  .. code-block:: bash
>  
> -    -device intel-iommu,x-scalable-mode=off
> +    -device intel-iommu,scalable-mode=off
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index d24ba989bf..001847ad37 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
>      DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
>                        VTD_HOST_ADDRESS_WIDTH),
>      DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE),
> -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
> -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
> +    DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
> +    DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE),
>      DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),
>      DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
>      DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
> @@ -5564,7 +5564,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
>      }
>  
>      if (!s->scalable_mode && s->fsts) {
> -        error_setg(errp, "x-flts is only available in scalable mode");
> +        error_setg(errp, "flts is only available in scalable mode");
>          return false;
>      }
>  
> @@ -5577,7 +5577,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
>      }
>  
>      if (s->fsts && s->aw_bits != VTD_HOST_AW_48BIT) {
> -        error_setg(errp, "Scalable mode(x-flts=on): supported value for "
> +        error_setg(errp, "Scalable mode(flts=on): supported value for "
>                     "aw-bits is: %d", VTD_HOST_AW_48BIT);
>          return false;
>      }
> diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c
> index 67d54849f2..b28d5eb9fa 100644
> --- a/hw/i386/intel_iommu_accel.c
> +++ b/hw/i386/intel_iommu_accel.c
> @@ -26,7 +26,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
>      PCIDevice *pdev = bus->devices[vtd_hiod->devfn];
>  
>      if (!object_dynamic_cast(OBJECT(hiod), TYPE_HOST_IOMMU_DEVICE_IOMMUFD)) {
> -        error_setg(errp, "Need IOMMUFD backend when x-flts=on");
> +        error_setg(errp, "Need IOMMUFD backend when flts=on");
>          return false;
>      }
>  
> @@ -44,7 +44,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
>  
>      if (pci_device_get_iommu_bus_devfn(pdev, &bus, NULL, NULL)) {
>          error_setg(errp, "Host device downstream to a PCI bridge is "
> -                   "unsupported when x-flts=on");
> +                   "unsupported when flts=on");
>          return false;
>      }
>  
> diff --git a/tests/qtest/intel-iommu-test.c b/tests/qtest/intel-iommu-test.c
> index e5cc6acaf0..4f12c56260 100644
> --- a/tests/qtest/intel-iommu-test.c
> +++ b/tests/qtest/intel-iommu-test.c
> @@ -29,7 +29,7 @@ static void test_intel_iommu_stage_1(void)
>      uint64_t cap, ecap, tmp;
>      QTestState *s;
>  
> -    s = qtest_init("-M q35 -device intel-iommu,x-scalable-mode=on,x-flts=on");
> +    s = qtest_init("-M q35 -device intel-iommu,scalable-mode=on,flts=on");
>  
>      cap = vtd_reg_readq(s, DMAR_CAP_REG);
>      g_assert((cap & CAP_STAGE_1_FIXED1) == CAP_STAGE_1_FIXED1);
> -- 
> 2.47.3
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|
RE: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Duan, Zhenzhong 1 month ago

>-----Original Message-----
>From: Daniel P. Berrangé <berrange@redhat.com>
>Subject: Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and
>'x-flts' properties
>
>On Mon, Mar 09, 2026 at 05:20:27AM -0400, Zhenzhong Duan wrote:
>> We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
>> year, it's fine to remove 'x-' now.
>
>I tried to look at history to understand why we used an 'x-' prefix to
>begin with. There doesn't seem to have been a very compelling reason,
>just a suggestion from Peter (cc'd)
>
>   https://lists.nongnu.org/archive/html/qemu-devel/2019-02/msg02847.html
>
>If we assume these features are needed for
>
>> This is a prerequisite to enable intel_iommu's scalable mode and first stage
>> translation support in libvirt.
>
>Yep, libvirt will not support any setting with an 'x-' prefix,
>until it is graduated to supportable by QEMU
>
>
>What's the typical use case where a user needs to set these
>two properties ?

Any scenario that legacy mode and second stage translation can't support.
E.g., user want to use SVM feature, user want pasid support, etc.

BRs,
Zhenzhong

>
>Presuming we'll need to support those use cases indefinitely,
>and we have no better QEMU design available, then dropping the
>'x-' prefix makes sense.
>
>> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>> ---
>>  docs/devel/vfio-iommufd.rst    | 10 +++++-----
>>  hw/i386/intel_iommu.c          |  8 ++++----
>>  hw/i386/intel_iommu_accel.c    |  4 ++--
>>  tests/qtest/intel-iommu-test.c |  2 +-
>>  4 files changed, 12 insertions(+), 12 deletions(-)
>
>
>
>>
>> diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
>> index 78bcdffac7..5755532443 100644
>> --- a/docs/devel/vfio-iommufd.rst
>> +++ b/docs/devel/vfio-iommufd.rst
>> @@ -153,22 +153,22 @@ RAM discarding for mdev.
>>  ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
>>  devices are always mdev and RAM discarding is force enabled.
>>
>> -Usage with intel_iommu featuring x-flts=on
>> +Usage with intel_iommu featuring flts=on
>>  ------------------------------------------
>>
>>  Only IOMMUFD backed VFIO device is supported when intel_iommu is
>configured
>> -with x-flts=on, for legacy container backed VFIO device, below error shows:
>> +with flts=on, for legacy container backed VFIO device, below error shows:
>>
>>  .. code-block:: none
>>
>> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0:
>Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
>> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0:
>Failed to set vIOMMU: Need IOMMUFD backend when flts=on
>>
>>  VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
>>  otherwise below error shows:
>>
>>  .. code-block:: none
>>
>> -    qemu-system-x86_64: -device vfio-
>pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
>to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-
>flts=on
>> +    qemu-system-x86_64: -device vfio-
>pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
>to set vIOMMU: Host device downstream to a PCI bridge is unsupported when
>flts=on
>>
>>  If host IOMMU has ERRATA_772415_SPR17, running guest with
>"intel_iommu=on,sm_off"
>>  is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
>> @@ -177,4 +177,4 @@ below if it's not needed by guest:
>>
>>  .. code-block:: bash
>>
>> -    -device intel-iommu,x-scalable-mode=off
>> +    -device intel-iommu,scalable-mode=off
>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>> index d24ba989bf..001847ad37 100644
>> --- a/hw/i386/intel_iommu.c
>> +++ b/hw/i386/intel_iommu.c
>> @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
>>      DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
>>                        VTD_HOST_ADDRESS_WIDTH),
>>      DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode,
>FALSE),
>> -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode,
>FALSE),
>> -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
>> +    DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode,
>FALSE),
>> +    DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE),
>>      DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control,
>false),
>>      DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
>>      DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
>> @@ -5564,7 +5564,7 @@ static bool vtd_decide_config(IntelIOMMUState *s,
>Error **errp)
>>      }
>>
>>      if (!s->scalable_mode && s->fsts) {
>> -        error_setg(errp, "x-flts is only available in scalable mode");
>> +        error_setg(errp, "flts is only available in scalable mode");
>>          return false;
>>      }
>>
>> @@ -5577,7 +5577,7 @@ static bool vtd_decide_config(IntelIOMMUState *s,
>Error **errp)
>>      }
>>
>>      if (s->fsts && s->aw_bits != VTD_HOST_AW_48BIT) {
>> -        error_setg(errp, "Scalable mode(x-flts=on): supported value for "
>> +        error_setg(errp, "Scalable mode(flts=on): supported value for "
>>                     "aw-bits is: %d", VTD_HOST_AW_48BIT);
>>          return false;
>>      }
>> diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c
>> index 67d54849f2..b28d5eb9fa 100644
>> --- a/hw/i386/intel_iommu_accel.c
>> +++ b/hw/i386/intel_iommu_accel.c
>> @@ -26,7 +26,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s,
>VTDHostIOMMUDevice *vtd_hiod,
>>      PCIDevice *pdev = bus->devices[vtd_hiod->devfn];
>>
>>      if (!object_dynamic_cast(OBJECT(hiod),
>TYPE_HOST_IOMMU_DEVICE_IOMMUFD)) {
>> -        error_setg(errp, "Need IOMMUFD backend when x-flts=on");
>> +        error_setg(errp, "Need IOMMUFD backend when flts=on");
>>          return false;
>>      }
>>
>> @@ -44,7 +44,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s,
>VTDHostIOMMUDevice *vtd_hiod,
>>
>>      if (pci_device_get_iommu_bus_devfn(pdev, &bus, NULL, NULL)) {
>>          error_setg(errp, "Host device downstream to a PCI bridge is "
>> -                   "unsupported when x-flts=on");
>> +                   "unsupported when flts=on");
>>          return false;
>>      }
>>
>> diff --git a/tests/qtest/intel-iommu-test.c b/tests/qtest/intel-iommu-test.c
>> index e5cc6acaf0..4f12c56260 100644
>> --- a/tests/qtest/intel-iommu-test.c
>> +++ b/tests/qtest/intel-iommu-test.c
>> @@ -29,7 +29,7 @@ static void test_intel_iommu_stage_1(void)
>>      uint64_t cap, ecap, tmp;
>>      QTestState *s;
>>
>> -    s = qtest_init("-M q35 -device intel-iommu,x-scalable-mode=on,x-flts=on");
>> +    s = qtest_init("-M q35 -device intel-iommu,scalable-mode=on,flts=on");
>>
>>      cap = vtd_reg_readq(s, DMAR_CAP_REG);
>>      g_assert((cap & CAP_STAGE_1_FIXED1) == CAP_STAGE_1_FIXED1);
>> --
>> 2.47.3
>>
>
>With regards,
>Daniel
>--
>|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
>|: https://libvirt.org          ~~          https://entangle-photo.org :|
>|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|

Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Peter Xu 1 month ago
On Mon, Mar 09, 2026 at 01:49:11PM +0000, Daniel P. Berrangé wrote:
> On Mon, Mar 09, 2026 at 05:20:27AM -0400, Zhenzhong Duan wrote:
> > We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
> > year, it's fine to remove 'x-' now.
> 
> I tried to look at history to understand why we used an 'x-' prefix to
> begin with. There doesn't seem to have been a very compelling reason,
> just a suggestion from Peter (cc'd)
> 
>    https://lists.nongnu.org/archive/html/qemu-devel/2019-02/msg02847.html

Yes, at that time scalable mode is at very early stage, and the ABI may be
prone to change, hence the suggestion.  I do have the gut feeling it's
getting much more stable on the interface so it makes sense to remove x-.

Thanks,

-- 
Peter Xu


Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Philippe Mathieu-Daudé 1 month ago
Hi,

On 9/3/26 10:20, Zhenzhong Duan wrote:
> We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
> year, it's fine to remove 'x-' now.
> 
> This is a prerequisite to enable intel_iommu's scalable mode and first stage
> translation support in libvirt.
> 
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
> ---
>   docs/devel/vfio-iommufd.rst    | 10 +++++-----
>   hw/i386/intel_iommu.c          |  8 ++++----
>   hw/i386/intel_iommu_accel.c    |  4 ++--
>   tests/qtest/intel-iommu-test.c |  2 +-
>   4 files changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
> index 78bcdffac7..5755532443 100644
> --- a/docs/devel/vfio-iommufd.rst
> +++ b/docs/devel/vfio-iommufd.rst
> @@ -153,22 +153,22 @@ RAM discarding for mdev.
>   ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
>   devices are always mdev and RAM discarding is force enabled.
>   
> -Usage with intel_iommu featuring x-flts=on
> +Usage with intel_iommu featuring flts=on
>   ------------------------------------------
>   
>   Only IOMMUFD backed VFIO device is supported when intel_iommu is configured
> -with x-flts=on, for legacy container backed VFIO device, below error shows:
> +with flts=on, for legacy container backed VFIO device, below error shows:
>   
>   .. code-block:: none
>   
> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
>   
>   VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
>   otherwise below error shows:
>   
>   .. code-block:: none
>   
> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-flts=on
> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when flts=on
>   
>   If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=on,sm_off"
>   is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
> @@ -177,4 +177,4 @@ below if it's not needed by guest:
>   
>   .. code-block:: bash
>   
> -    -device intel-iommu,x-scalable-mode=off
> +    -device intel-iommu,scalable-mode=off
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index d24ba989bf..001847ad37 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
>       DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
>                         VTD_HOST_ADDRESS_WIDTH),
>       DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE),
> -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
> -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),

IMHO safer would be to officially deprecate these in
docs/about/deprecated.rst and keeping them aliased until deprecation
period expires. Other changes LGTM.

> +    DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
> +    DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE),
>       DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),
>       DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
>       DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Daniel P. Berrangé 1 month ago
On Mon, Mar 09, 2026 at 01:44:15PM +0100, Philippe Mathieu-Daudé wrote:
> Hi,
> 
> On 9/3/26 10:20, Zhenzhong Duan wrote:
> > We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
> > year, it's fine to remove 'x-' now.
> > 
> > This is a prerequisite to enable intel_iommu's scalable mode and first stage
> > translation support in libvirt.
> > 
> > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
> > ---
> >   docs/devel/vfio-iommufd.rst    | 10 +++++-----
> >   hw/i386/intel_iommu.c          |  8 ++++----
> >   hw/i386/intel_iommu_accel.c    |  4 ++--
> >   tests/qtest/intel-iommu-test.c |  2 +-
> >   4 files changed, 12 insertions(+), 12 deletions(-)
> > 
> > diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
> > index 78bcdffac7..5755532443 100644
> > --- a/docs/devel/vfio-iommufd.rst
> > +++ b/docs/devel/vfio-iommufd.rst
> > @@ -153,22 +153,22 @@ RAM discarding for mdev.
> >   ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
> >   devices are always mdev and RAM discarding is force enabled.
> > -Usage with intel_iommu featuring x-flts=on
> > +Usage with intel_iommu featuring flts=on
> >   ------------------------------------------
> >   Only IOMMUFD backed VFIO device is supported when intel_iommu is configured
> > -with x-flts=on, for legacy container backed VFIO device, below error shows:
> > +with flts=on, for legacy container backed VFIO device, below error shows:
> >   .. code-block:: none
> > -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
> > +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
> >   VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
> >   otherwise below error shows:
> >   .. code-block:: none
> > -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-flts=on
> > +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when flts=on
> >   If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=on,sm_off"
> >   is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
> > @@ -177,4 +177,4 @@ below if it's not needed by guest:
> >   .. code-block:: bash
> > -    -device intel-iommu,x-scalable-mode=off
> > +    -device intel-iommu,scalable-mode=off
> > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > index d24ba989bf..001847ad37 100644
> > --- a/hw/i386/intel_iommu.c
> > +++ b/hw/i386/intel_iommu.c
> > @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
> >       DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
> >                         VTD_HOST_ADDRESS_WIDTH),
> >       DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE),
> > -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
> > -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
> 
> IMHO safer would be to officially deprecate these in
> docs/about/deprecated.rst and keeping them aliased until deprecation
> period expires. Other changes LGTM.

The purpose of using an 'x-' prefix for properties in QEMU is to declare
that they are subject to change with no warning, so we are free to change
them without any deprecation IMHO.

> > +    DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
> > +    DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE),
> >       DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),
> >       DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
> >       DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|


RE: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Duan, Zhenzhong 1 month ago

>-----Original Message-----
>From: Daniel P. Berrangé <berrange@redhat.com>
>Subject: Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and
>'x-flts' properties
>
>On Mon, Mar 09, 2026 at 01:44:15PM +0100, Philippe Mathieu-Daudé wrote:
>> Hi,
>>
>> On 9/3/26 10:20, Zhenzhong Duan wrote:
>> > We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
>> > year, it's fine to remove 'x-' now.
>> >
>> > This is a prerequisite to enable intel_iommu's scalable mode and first stage
>> > translation support in libvirt.
>> >
>> > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>> > ---
>> >   docs/devel/vfio-iommufd.rst    | 10 +++++-----
>> >   hw/i386/intel_iommu.c          |  8 ++++----
>> >   hw/i386/intel_iommu_accel.c    |  4 ++--
>> >   tests/qtest/intel-iommu-test.c |  2 +-
>> >   4 files changed, 12 insertions(+), 12 deletions(-)
>> >
>> > diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
>> > index 78bcdffac7..5755532443 100644
>> > --- a/docs/devel/vfio-iommufd.rst
>> > +++ b/docs/devel/vfio-iommufd.rst
>> > @@ -153,22 +153,22 @@ RAM discarding for mdev.
>> >   ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
>> >   devices are always mdev and RAM discarding is force enabled.
>> > -Usage with intel_iommu featuring x-flts=on
>> > +Usage with intel_iommu featuring flts=on
>> >   ------------------------------------------
>> >   Only IOMMUFD backed VFIO device is supported when intel_iommu is
>configured
>> > -with x-flts=on, for legacy container backed VFIO device, below error shows:
>> > +with flts=on, for legacy container backed VFIO device, below error shows:
>> >   .. code-block:: none
>> > -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio
>0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
>> > +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio
>0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
>> >   VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
>> >   otherwise below error shows:
>> >   .. code-block:: none
>> > -    qemu-system-x86_64: -device vfio-
>pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
>to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-
>flts=on
>> > +    qemu-system-x86_64: -device vfio-
>pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
>to set vIOMMU: Host device downstream to a PCI bridge is unsupported when
>flts=on
>> >   If host IOMMU has ERRATA_772415_SPR17, running guest with
>"intel_iommu=on,sm_off"
>> >   is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
>> > @@ -177,4 +177,4 @@ below if it's not needed by guest:
>> >   .. code-block:: bash
>> > -    -device intel-iommu,x-scalable-mode=off
>> > +    -device intel-iommu,scalable-mode=off
>> > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>> > index d24ba989bf..001847ad37 100644
>> > --- a/hw/i386/intel_iommu.c
>> > +++ b/hw/i386/intel_iommu.c
>> > @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
>> >       DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
>> >                         VTD_HOST_ADDRESS_WIDTH),
>> >       DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode,
>FALSE),
>> > -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState,
>scalable_mode, FALSE),
>> > -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
>>
>> IMHO safer would be to officially deprecate these in
>> docs/about/deprecated.rst and keeping them aliased until deprecation
>> period expires. Other changes LGTM.
>
>The purpose of using an 'x-' prefix for properties in QEMU is to declare
>that they are subject to change with no warning, so we are free to change
>them without any deprecation IMHO.

Does that mean I can add another patch to s/flts/fsts opportunistically?
flts(first level translation support) is a naming based on old version vtd spec,
in new spec, it changed to use fsts(first stage translation support) naming.

Thanks
Zhenzhong
Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by CLEMENT MATHIEU--DRIF 1 month ago
On Tue, 2026-03-10 at 03:16 +0000, Duan, Zhenzhong wrote:
> 
> 
> 
> > -----Original Message-----
> > From: Daniel P. Berrangé <[berrange@redhat.com](mailto:berrange@redhat.com)>
> > Subject: Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and
> > 'x-flts' properties
> > 
> > On Mon, Mar 09, 2026 at 01:44:15PM +0100, Philippe Mathieu-Daudé wrote:
> > 
> > > Hi,
> > > 
> > > On 9/3/26 10:20, Zhenzhong Duan wrote:
> > > 
> > > > We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
> > > > year, it's fine to remove 'x-' now.
> > > > 
> > > > This is a prerequisite to enable intel_iommu's scalable mode and first stage
> > > > translation support in libvirt.
> > > > 
> > > > Signed-off-by: Zhenzhong Duan <[zhenzhong.duan@intel.com](mailto:zhenzhong.duan@intel.com)>
> > > > ---
> > > >   docs/devel/vfio-iommufd.rst    | 10 +++++-----
> > > >   hw/i386/intel_iommu.c          |  8 ++++----
> > > >   hw/i386/intel_iommu_accel.c    |  4 ++--
> > > >   tests/qtest/intel-iommu-test.c |  2 +-
> > > >   4 files changed, 12 insertions(+), 12 deletions(-)
> > > > 
> > > > diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
> > > > index 78bcdffac7..5755532443 100644
> > > > --- a/docs/devel/vfio-iommufd.rst
> > > > +++ b/docs/devel/vfio-iommufd.rst
> > > > @@ -153,22 +153,22 @@ RAM discarding for mdev.
> > > >   ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
> > > >   devices are always mdev and RAM discarding is force enabled.
> > > > -Usage with intel_iommu featuring x-flts=on
> > > > +Usage with intel_iommu featuring flts=on
> > > >   ------------------------------------------
> > > >   Only IOMMUFD backed VFIO device is supported when intel_iommu is
> > > 
> > 
> > configured
> > 
> > > 
> > > > -with x-flts=on, for legacy container backed VFIO device, below error shows:
> > > > +with flts=on, for legacy container backed VFIO device, below error shows:
> > > >   .. code-block:: none
> > > > -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio
> > > 
> > 
> > 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
> > 
> > > 
> > > > +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio
> > > 
> > 
> > 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
> > 
> > > 
> > > >   VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
> > > >   otherwise below error shows:
> > > >   .. code-block:: none
> > > > -    qemu-system-x86_64: -device vfio-
> > > 
> > 
> > pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
> > to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-
> > flts=on
> > 
> > > 
> > > > +    qemu-system-x86_64: -device vfio-
> > > 
> > 
> > pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
> > to set vIOMMU: Host device downstream to a PCI bridge is unsupported when
> > flts=on
> > 
> > > 
> > > >   If host IOMMU has ERRATA_772415_SPR17, running guest with
> > > 
> > 
> > "intel_iommu=on,sm_off"
> > 
> > > 
> > > >   is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
> > > > @@ -177,4 +177,4 @@ below if it's not needed by guest:
> > > >   .. code-block:: bash
> > > > -    -device intel-iommu,x-scalable-mode=off
> > > > +    -device intel-iommu,scalable-mode=off
> > > > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > > > index d24ba989bf..001847ad37 100644
> > > > --- a/hw/i386/intel_iommu.c
> > > > +++ b/hw/i386/intel_iommu.c
> > > > @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
> > > >       DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
> > > >                         VTD_HOST_ADDRESS_WIDTH),
> > > >       DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode,
> > > 
> > 
> > FALSE),
> > 
> > > 
> > > > -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState,
> > > 
> > 
> > scalable_mode, FALSE),
> > 
> > > 
> > > > -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
> > > 
> > > 
> > > IMHO safer would be to officially deprecate these in
> > > docs/about/deprecated.rst and keeping them aliased until deprecation
> > > period expires. Other changes LGTM.
> > 
> > 
> > The purpose of using an 'x-' prefix for properties in QEMU is to declare
> > that they are subject to change with no warning, so we are free to change
> > them without any deprecation IMHO.
> 
> 
> Does that mean I can add another patch to s/flts/fsts opportunistically?  
> flts(first level translation support) is a naming based on old version vtd spec,  
> in new spec, it changed to use fsts(first stage translation support) naming.

Hi,

Indeed, this would be nice if we could.

> 
> Thanks  
> Zhenzhong
Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Philippe Mathieu-Daudé 1 month ago
On 10/3/26 04:16, Duan, Zhenzhong wrote:
> 
> 
>> -----Original Message-----
>> From: Daniel P. Berrangé <berrange@redhat.com>
>> Subject: Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and
>> 'x-flts' properties
>>
>> On Mon, Mar 09, 2026 at 01:44:15PM +0100, Philippe Mathieu-Daudé wrote:
>>> Hi,
>>>
>>> On 9/3/26 10:20, Zhenzhong Duan wrote:
>>>> We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
>>>> year, it's fine to remove 'x-' now.
>>>>
>>>> This is a prerequisite to enable intel_iommu's scalable mode and first stage
>>>> translation support in libvirt.
>>>>
>>>> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>>>> ---
>>>>    docs/devel/vfio-iommufd.rst    | 10 +++++-----
>>>>    hw/i386/intel_iommu.c          |  8 ++++----
>>>>    hw/i386/intel_iommu_accel.c    |  4 ++--
>>>>    tests/qtest/intel-iommu-test.c |  2 +-
>>>>    4 files changed, 12 insertions(+), 12 deletions(-)
>>>>
>>>> diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
>>>> index 78bcdffac7..5755532443 100644
>>>> --- a/docs/devel/vfio-iommufd.rst
>>>> +++ b/docs/devel/vfio-iommufd.rst
>>>> @@ -153,22 +153,22 @@ RAM discarding for mdev.
>>>>    ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
>>>>    devices are always mdev and RAM discarding is force enabled.
>>>> -Usage with intel_iommu featuring x-flts=on
>>>> +Usage with intel_iommu featuring flts=on
>>>>    ------------------------------------------
>>>>    Only IOMMUFD backed VFIO device is supported when intel_iommu is
>> configured
>>>> -with x-flts=on, for legacy container backed VFIO device, below error shows:
>>>> +with flts=on, for legacy container backed VFIO device, below error shows:
>>>>    .. code-block:: none
>>>> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio
>> 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
>>>> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio
>> 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
>>>>    VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
>>>>    otherwise below error shows:
>>>>    .. code-block:: none
>>>> -    qemu-system-x86_64: -device vfio-
>> pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
>> to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-
>> flts=on
>>>> +    qemu-system-x86_64: -device vfio-
>> pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed
>> to set vIOMMU: Host device downstream to a PCI bridge is unsupported when
>> flts=on
>>>>    If host IOMMU has ERRATA_772415_SPR17, running guest with
>> "intel_iommu=on,sm_off"
>>>>    is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
>>>> @@ -177,4 +177,4 @@ below if it's not needed by guest:
>>>>    .. code-block:: bash
>>>> -    -device intel-iommu,x-scalable-mode=off
>>>> +    -device intel-iommu,scalable-mode=off
>>>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>>>> index d24ba989bf..001847ad37 100644
>>>> --- a/hw/i386/intel_iommu.c
>>>> +++ b/hw/i386/intel_iommu.c
>>>> @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
>>>>        DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
>>>>                          VTD_HOST_ADDRESS_WIDTH),
>>>>        DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode,
>> FALSE),
>>>> -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState,
>> scalable_mode, FALSE),
>>>> -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
>>>
>>> IMHO safer would be to officially deprecate these in
>>> docs/about/deprecated.rst and keeping them aliased until deprecation
>>> period expires. Other changes LGTM.
>>
>> The purpose of using an 'x-' prefix for properties in QEMU is to declare
>> that they are subject to change with no warning, so we are free to change
>> them without any deprecation IMHO.
> 
> Does that mean I can add another patch to s/flts/fsts opportunistically?
> flts(first level translation support) is a naming based on old version vtd spec,
> in new spec, it changed to use fsts(first stage translation support) naming.

Apparently :) You should post a v2 with that change included.

Re: [PATCH] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties
Posted by Philippe Mathieu-Daudé 1 month ago
On 9/3/26 13:57, Daniel P. Berrangé wrote:
> On Mon, Mar 09, 2026 at 01:44:15PM +0100, Philippe Mathieu-Daudé wrote:
>> Hi,
>>
>> On 9/3/26 10:20, Zhenzhong Duan wrote:
>>> We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1
>>> year, it's fine to remove 'x-' now.
>>>
>>> This is a prerequisite to enable intel_iommu's scalable mode and first stage
>>> translation support in libvirt.
>>>
>>> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>>> ---
>>>    docs/devel/vfio-iommufd.rst    | 10 +++++-----
>>>    hw/i386/intel_iommu.c          |  8 ++++----
>>>    hw/i386/intel_iommu_accel.c    |  4 ++--
>>>    tests/qtest/intel-iommu-test.c |  2 +-
>>>    4 files changed, 12 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
>>> index 78bcdffac7..5755532443 100644
>>> --- a/docs/devel/vfio-iommufd.rst
>>> +++ b/docs/devel/vfio-iommufd.rst
>>> @@ -153,22 +153,22 @@ RAM discarding for mdev.
>>>    ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend
>>>    devices are always mdev and RAM discarding is force enabled.
>>> -Usage with intel_iommu featuring x-flts=on
>>> +Usage with intel_iommu featuring flts=on
>>>    ------------------------------------------
>>>    Only IOMMUFD backed VFIO device is supported when intel_iommu is configured
>>> -with x-flts=on, for legacy container backed VFIO device, below error shows:
>>> +with flts=on, for legacy container backed VFIO device, below error shows:
>>>    .. code-block:: none
>>> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=on
>>> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0: vfio 0000:02:00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=on
>>>    VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary,
>>>    otherwise below error shows:
>>>    .. code-block:: none
>>> -    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when x-flts=on
>>> +    qemu-system-x86_64: -device vfio-pci,host=0000:02:00.0,bus=bridge1,iommufd=iommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device downstream to a PCI bridge is unsupported when flts=on
>>>    If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=on,sm_off"
>>>    is unsupported, kexec or reboot guest from "intel_iommu=on,sm_on" to
>>> @@ -177,4 +177,4 @@ below if it's not needed by guest:
>>>    .. code-block:: bash
>>> -    -device intel-iommu,x-scalable-mode=off
>>> +    -device intel-iommu,scalable-mode=off
>>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>>> index d24ba989bf..001847ad37 100644
>>> --- a/hw/i386/intel_iommu.c
>>> +++ b/hw/i386/intel_iommu.c
>>> @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] = {
>>>        DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits,
>>>                          VTD_HOST_ADDRESS_WIDTH),
>>>        DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE),
>>> -    DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
>>> -    DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
>>
>> IMHO safer would be to officially deprecate these in
>> docs/about/deprecated.rst and keeping them aliased until deprecation
>> period expires. Other changes LGTM.
> 
> The purpose of using an 'x-' prefix for properties in QEMU is to declare
> that they are subject to change with no warning, so we are free to change
> them without any deprecation IMHO.

OK, good to know, thanks.

> 
>>> +    DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALSE),
>>> +    DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE),
>>>        DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),
>>>        DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
>>>        DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
>>
> 
> With regards,
> Daniel