[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
- [Qemu-devel] [PULL for-1.7 00/11] Miscellaneous -rc patches, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 01/11] sun4m: Add FCode ROM for TCX framebuffer, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 02/11] configure: Explicitly set ARFLAGS so we can build with GNU Make 4.0, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 04/11] atomic.h: Fix build with clang, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 06/11] target-i386: Fix build by providing stub kvm_arch_get_supported_cpuid(), Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 05/11] vfio-pci: Fix multifunction=on,
Paolo Bonzini <=
- [Qemu-devel] [PULL 08/11] rng-egd: offset the point when repeatedly read from the buffer, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 09/11] target-i386: yield to another VCPU on PAUSE, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 07/11] rng-egd: remove redundant free, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 10/11] mips jazz: do not raise data bus exception when accessing invalid addresses, Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 11/11] qga: Fix compiler warnings (missing format attribute, wrong format strings), Paolo Bonzini, 2013/11/21
- [Qemu-devel] [PULL 03/11] pc: get rid of builtin pvpanic for "-M pc-1.5", Paolo Bonzini, 2013/11/21
- Re: [Qemu-devel] [PULL for-1.7 00/11] Miscellaneous -rc patches, Paolo Bonzini, 2013/11/25