summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Williamson2016-05-26 17:43:21 +0200
committerAlex Williamson2016-05-26 19:12:00 +0200
commit581406e0e349be99b6c08a7a1b492af5951f9a4e (patch)
tree7e256ccc5e2963be14a8cc1a0d0391dbed1bf8de
parentvfio/pci: Consolidate VGA setup (diff)
downloadqemu-581406e0e349be99b6c08a7a1b492af5951f9a4e.tar.gz
qemu-581406e0e349be99b6c08a7a1b492af5951f9a4e.tar.xz
qemu-581406e0e349be99b6c08a7a1b492af5951f9a4e.zip
vfio/pci: Setup BAR quirks after capabilities probing
Capability probing modifies wmask, which quirks may be interested in changing themselves. Apply our BAR quirks after the capability scan to make this possible. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> Tested-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r--hw/vfio/pci.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index daf10b8dd3..aa6fb7bd6f 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -1440,8 +1440,6 @@ static void vfio_bar_setup(VFIOPCIDevice *vdev, int nr)
vdev->vbasedev.name, nr);
}
- vfio_bar_quirk_setup(vdev, nr);
-
pci_register_bar(&vdev->pdev, nr, type, bar->region.mem);
}
@@ -2394,7 +2392,7 @@ static int vfio_initfn(PCIDevice *pdev)
ssize_t len;
struct stat st;
int groupid;
- int ret;
+ int i, ret;
if (!vdev->vbasedev.sysfsdev) {
vdev->vbasedev.sysfsdev =
@@ -2560,6 +2558,10 @@ static int vfio_initfn(PCIDevice *pdev)
vfio_vga_quirk_setup(vdev);
}
+ for (i = 0; i < PCI_ROM_SLOT; i++) {
+ vfio_bar_quirk_setup(vdev, i);
+ }
+
/* QEMU emulates all of MSI & MSIX */
if (pdev->cap_present & QEMU_PCI_CAP_MSIX) {
memset(vdev->emulated_config_bits + pdev->msix_cap, 0xff,