vfio/pci: Probe and store ability to support dynamic MSI-X
Not all MSI-X devices support dynamic MSI-X allocation. Whether a device supports dynamic MSI-X should be queried using pci_msix_can_alloc_dyn(). Instead of scattering code with pci_msix_can_alloc_dyn(), probe this ability once and store it as a property of the virtual device. Suggested-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Link: https://lore.kernel.org/r/f1ae022c060ecb7e527f4f53c8ccafe80768da47.1683740667.git.reinette.chatre@intel.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
9cd0f6d5cb
commit
dd27a70700
|
@ -530,8 +530,11 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *vdev)
|
|||
vdev->msix_bar = table & PCI_MSIX_TABLE_BIR;
|
||||
vdev->msix_offset = table & PCI_MSIX_TABLE_OFFSET;
|
||||
vdev->msix_size = ((flags & PCI_MSIX_FLAGS_QSIZE) + 1) * 16;
|
||||
} else
|
||||
vdev->has_dyn_msix = pci_msix_can_alloc_dyn(pdev);
|
||||
} else {
|
||||
vdev->msix_bar = 0xFF;
|
||||
vdev->has_dyn_msix = false;
|
||||
}
|
||||
|
||||
if (!vfio_vga_disabled() && vfio_pci_is_vga(pdev))
|
||||
vdev->has_vga = true;
|
||||
|
|
|
@ -68,6 +68,7 @@ struct vfio_pci_core_device {
|
|||
u16 msix_size;
|
||||
u32 msix_offset;
|
||||
u32 rbar[7];
|
||||
bool has_dyn_msix:1;
|
||||
bool pci_2_3:1;
|
||||
bool virq_disabled:1;
|
||||
bool reset_works:1;
|
||||
|
|
Loading…
Reference in New Issue