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 <[email protected]>
> ---
>  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 :|


Reply via email to