@@ -402,7 +402,7 @@ static void vfio_bar_fixup(struct vfio_dev *vdev)
mask = ~(pci_resource_len(pdev, bar) - 1);
else
mask = 0;
- lp = (u32 *)vdev->vconfig + PCI_BASE_ADDRESS_0 + 4*bar;
+ lp = (u32 *)(vdev->vconfig + PCI_BASE_ADDRESS_0 + 4*bar);
*lp &= (u32)mask;
if (pci_resource_flags(pdev, bar) & IORESOURCE_IO)
@@ -420,11 +420,12 @@ static void vfio_bar_fixup(struct vfio_dev *vdev)
}
}
- if (pci_resource_start(pdev, PCI_ROM_RESOURCE))
+ if (pci_resource_start(pdev, PCI_ROM_RESOURCE)) {
mask = ~(pci_resource_len(pdev, PCI_ROM_RESOURCE) - 1);
- else
+ mask |= PCI_ROM_ADDRESS_ENABLE;
+ } else
mask = 0;
- lp = (u32 *)vdev->vconfig + PCI_ROM_ADDRESS;
+ lp = (u32 *)(vdev->vconfig + PCI_ROM_ADDRESS);
*lp &= (u32)mask;
vdev->bardirty = 0;