vfio/pci: Mask buggy SR-IOV VF INTx support
authorAlex Williamson <alex.williamson@redhat.com>
Tue, 25 Sep 2018 19:01:27 +0000 (13:01 -0600)
committerAlex Williamson <alex.williamson@redhat.com>
Tue, 25 Sep 2018 19:01:27 +0000 (13:01 -0600)
commitdb04264fe9bc0f2b62e036629f9afb530324b693
tree6b80e98b183c9c3c36ff2ae3dcf2c41e906766e1
parent30ea32ab1951c80c6113f300fce2c70cd12659e4
vfio/pci: Mask buggy SR-IOV VF INTx support

The SR-IOV spec requires that VFs must report zero for the INTx pin
register as VFs are precluded from INTx support.  It's much easier for
the host kernel to understand whether a device is a VF and therefore
whether a non-zero pin register value is bogus than it is to do the
same in userspace.  Override the INTx count for such devices and
virtualize the pin register to provide a consistent view of the device
to the user.

As this is clearly a spec violation, warn about it to support hardware
validation, but also provide a known whitelist as it doesn't do much
good to continue complaining if the hardware vendor doesn't plan to
fix it.

Known devices with this issue: 8086:270c

Tested-by: Gage Eads <gage.eads@intel.com>
Reviewed-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci.c
drivers/vfio/pci/vfio_pci_config.c