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