diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2016-05-26 09:43:21 -0600 |
---|---|---|
committer | Alex Williamson <alex.williamson@redhat.com> | 2016-05-26 11:12:00 -0600 |
commit | 581406e0e349be99b6c08a7a1b492af5951f9a4e (patch) | |
tree | 7e256ccc5e2963be14a8cc1a0d0391dbed1bf8de /hw | |
parent | 182bca4592a8a6a57cdbd6889683cced78e85a03 (diff) | |
download | qemu-581406e0e349be99b6c08a7a1b492af5951f9a4e.zip qemu-581406e0e349be99b6c08a7a1b492af5951f9a4e.tar.gz qemu-581406e0e349be99b6c08a7a1b492af5951f9a4e.tar.bz2 |
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>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/vfio/pci.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index daf10b8..aa6fb7b 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, |