qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PULL 05/11] vfio-pci: Fix multifunction=on


From: Paolo Bonzini
Subject: [Qemu-devel] [PULL 05/11] vfio-pci: Fix multifunction=on
Date: Thu, 21 Nov 2013 17:49:32 +0100

From: Alex Williamson <address@hidden>

When an assigned device is initialized it copies the device config
space into the emulated config space.  Unfortunately multifunction is
setup prior to the device initfn and gets clobbered.  We need to
restore it just like pci-assign does.

Cc: address@hidden
Signed-off-by: Alex Williamson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
 hw/misc/vfio.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
index fe95e03..f7f8a19 100644
--- a/hw/misc/vfio.c
+++ b/hw/misc/vfio.c
@@ -3568,6 +3568,13 @@ static int vfio_initfn(PCIDevice *pdev)
     vdev->emulated_config_bits[PCI_HEADER_TYPE] =
                                               PCI_HEADER_TYPE_MULTI_FUNCTION;
 
+    /* Restore or clear multifunction, this is always controlled by QEMU */
+    if (vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
+        vdev->pdev.config[PCI_HEADER_TYPE] |= PCI_HEADER_TYPE_MULTI_FUNCTION;
+    } else {
+        vdev->pdev.config[PCI_HEADER_TYPE] &= ~PCI_HEADER_TYPE_MULTI_FUNCTION;
+    }
+
     /*
      * Clear host resource mapping info.  If we choose not to register a
      * BAR, such as might be the case with the option ROM, we can get
-- 
1.8.3.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]