vfio-pci: Mask INTx if a device is not capabable of enabling it
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Thu, 7 Dec 2017 01:56:54 +0000 (12:56 +1100)
committerAlex Williamson <alex.williamson@redhat.com>
Wed, 20 Dec 2017 16:53:52 +0000 (09:53 -0700)
At the moment VFIO rightfully assumes that INTx is supported if
the interrupt pin is not set to zero in the device config space.
However if that is not the case (the pin is not zero but pdev->irq is),
vfio_intx_enable() fails.

In order to prevent the userspace from trying to enable INTx when we know
that it cannot work, let's mask the PCI_INTERRUPT_PIN register.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci.c

index f041b1a6cf665e6410917d3608de5fe0ac557476..a98681dca1d3a55a3ea60db8d6856c5a08da1538 100644 (file)
@@ -207,6 +207,9 @@ static bool vfio_pci_nointx(struct pci_dev *pdev)
                }
        }
 
+       if (!pdev->irq)
+               return true;
+
        return false;
 }