3c4f941ac7
The patches were selected from the recent "Patch Round-up for stable 7.2.1" [0]. Those that should be relevant for our supported use-cases (and the upcoming nvme use-case) were picked. Most of the patches added now have not been submitted to qemu-stable before. The follow-up for the virtio-rng-pci migration fix will break migration between versions with the fix and without the fix when a virtio-pci-rng(-non)-transitional device is used. Luckily Proxmox VE only uses the virtio-pci-rng device, and this was fixed by 0006-virtio-rng-pci-fix-migration-compat-for-vectors.patch which was applied before any public version of Proxmox VE's QEMU 7.2 package was released. [0]: https://lists.nongnu.org/archive/html/qemu-stable/2023-03/msg00010.html [1]: https://bugzilla.redhat.com/show_bug.cgi?id=2162569 Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
51 lines
2.1 KiB
Diff
51 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jason Wang <jasowang@redhat.com>
|
|
Date: Thu, 23 Feb 2023 14:59:21 +0800
|
|
Subject: [PATCH] intel-iommu: fail DEVIOTLB_UNMAP without dt mode
|
|
|
|
Without dt mode, device IOTLB notifier won't work since guest won't
|
|
send device IOTLB invalidation descriptor in this case. Let's fail
|
|
early instead of misbehaving silently.
|
|
|
|
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
|
|
Tested-by: Laurent Vivier <lvivier@redhat.com>
|
|
Tested-by: Viktor Prutyanov <viktor@daynix.com>
|
|
Buglink: https://bugzilla.redhat.com/2156876
|
|
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
Message-Id: <20230223065924.42503-3-jasowang@redhat.com>
|
|
Reviewed-by: Peter Xu <peterx@redhat.com>
|
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
|
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
|
(cherry-picked from commit 09adb0e021207b60a0c51a68939b4539d98d3ef3)
|
|
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
|
---
|
|
hw/i386/intel_iommu.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
|
|
index 9143376677..d025ef2873 100644
|
|
--- a/hw/i386/intel_iommu.c
|
|
+++ b/hw/i386/intel_iommu.c
|
|
@@ -3179,6 +3179,7 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu,
|
|
{
|
|
VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu);
|
|
IntelIOMMUState *s = vtd_as->iommu_state;
|
|
+ X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s);
|
|
|
|
/* TODO: add support for VFIO and vhost users */
|
|
if (s->snoop_control) {
|
|
@@ -3193,6 +3194,13 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu,
|
|
PCI_FUNC(vtd_as->devfn));
|
|
return -ENOTSUP;
|
|
}
|
|
+ if (!x86_iommu->dt_supported && (new & IOMMU_NOTIFIER_DEVIOTLB_UNMAP)) {
|
|
+ error_setg_errno(errp, ENOTSUP,
|
|
+ "device %02x.%02x.%x requires device IOTLB mode",
|
|
+ pci_bus_num(vtd_as->bus), PCI_SLOT(vtd_as->devfn),
|
|
+ PCI_FUNC(vtd_as->devfn));
|
|
+ return -ENOTSUP;
|
|
+ }
|
|
|
|
/* Update per-address-space notifier flags */
|
|
vtd_as->notifier_flags = new;
|