>-----Original Message-----
>From: Daniel P. Berrangé <[email protected]>
>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 <[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