- vdpa: Fix bug where vdpa appliance migration does not resume after rollback - block: Parse filenames only when explicitly requested (CVE-2024-4467) - block: introduce bdrv_open_file_child() helper - iotests/270: Don't store data-file with json: prefix in image (CVE-2024-4467) - iotests/244: Don't store data-file with protocol in image (CVE-2024-4467) - qcow2: Don't open data_file with BDRV_O_NO_IO (CVE-2024-4467) - qcow2: Do not reopen data_file in invalidate_cache - hw/intc/arm_gic: Fix deactivation of SPI lines chery-pick from 7175a562f157d39725ab396e39c1e8e410d206b3 - vhost-user: Skip unnecessary duplicated VHOST_USER_SET_LOG_BASE requests - target/ppc: Split off common embedded TLB init cheery-pick from 581eea5d656b73c6532109f4ced4c73fd4e5fd47` - vdpa: fix vdpa device migrate rollback wrong when suspend device failed 1. - hw/virtio/virtio-pci:Support shadow device for virtio-net/blk/scsi devices Signed-off-by: Jiabo Feng <fengjiabo1@huawei.com> (cherry picked from commit ad45062d44e901468eeb8c4ac0729587daaa1e1f)
65 lines
2.0 KiB
Diff
65 lines
2.0 KiB
Diff
From 38c0538c8d847a2e39a9bae19f5b204abcf46b3b Mon Sep 17 00:00:00 2001
|
|
From: Yanan Wang <wangyanan55@huawei.com>
|
|
Date: Mon, 17 Jun 2024 20:42:22 +0800
|
|
Subject: [PATCH] hw/virtio/virtio-pci:Support shadow device for
|
|
virtio-net/blk/scsi devices
|
|
|
|
Currently we only support shadow device for "virtio-net", now let's
|
|
extend this feature to support "virtio-blk" and "virtio-scsi" devices.
|
|
|
|
Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
|
|
---
|
|
hw/virtio/virtio-pci.c | 15 ++++++++++++---
|
|
1 file changed, 12 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
|
|
index 389a8db0ec..d675526016 100644
|
|
--- a/hw/virtio/virtio-pci.c
|
|
+++ b/hw/virtio/virtio-pci.c
|
|
@@ -886,6 +886,15 @@ int __attribute__((weak)) kvm_delete_shadow_device(PCIDevice *dev)
|
|
}
|
|
#endif
|
|
|
|
+#ifdef __aarch64__
|
|
+static bool shadow_device_supported(VirtIODevice *vdev)
|
|
+{
|
|
+ return !strcmp(vdev->name, "virtio-net") ||
|
|
+ !strcmp(vdev->name, "virtio-blk") ||
|
|
+ !strcmp(vdev->name, "virtio-scsi");
|
|
+}
|
|
+#endif
|
|
+
|
|
static int kvm_virtio_pci_vector_vq_use(VirtIOPCIProxy *proxy, int nvqs)
|
|
{
|
|
int queue_no;
|
|
@@ -893,7 +902,7 @@ static int kvm_virtio_pci_vector_vq_use(VirtIOPCIProxy *proxy, int nvqs)
|
|
VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
|
|
|
|
#ifdef __aarch64__
|
|
- if (!strcmp(vdev->name, "virtio-net")) {
|
|
+ if (shadow_device_supported(vdev)) {
|
|
kvm_create_shadow_device(&proxy->pci_dev);
|
|
}
|
|
#endif
|
|
@@ -906,7 +915,7 @@ static int kvm_virtio_pci_vector_vq_use(VirtIOPCIProxy *proxy, int nvqs)
|
|
}
|
|
|
|
#ifdef __aarch64__
|
|
- if (!strcmp(vdev->name, "virtio-net") && ret != 0) {
|
|
+ if (shadow_device_supported(vdev) && ret != 0) {
|
|
kvm_delete_shadow_device(&proxy->pci_dev);
|
|
}
|
|
#endif
|
|
@@ -955,7 +964,7 @@ static void kvm_virtio_pci_vector_vq_release(VirtIOPCIProxy *proxy, int nvqs)
|
|
}
|
|
|
|
#ifdef __aarch64__
|
|
- if (!strcmp(vdev->name, "virtio-net")) {
|
|
+ if (shadow_device_supported(vdev)) {
|
|
kvm_delete_shadow_device(&proxy->pci_dev);
|
|
}
|
|
#endif
|
|
--
|
|
2.41.0.windows.1
|
|
|