PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+
authorNoa Osherovich <noaos@mellanox.com>
Tue, 15 Nov 2016 08:00:00 +0000 (10:00 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 23 Nov 2016 18:33:32 +0000 (12:33 -0600)
commit1600f62534b7b3da7978b43b52231a54c24df287
treeaf660f696e213326d9715f0053d3b5bb7255306e
parentd76d2fe05fd93673d184af77255bbbc63780f4ea
PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+

Mellanox devices were marked as having INTx masking ability broken.  As a
result, the VFIO driver fails to start when more than one device function
is passed-through to a VM if both have the same INTx pin.

Prior to Connect-IB, Mellanox devices exposed to the operating system one
PCI function per all ports.  Starting from Connect-IB, the devices are
function-per-port.  When passing the second function to a VM, VFIO will
fail to start.

Exclude ConnectX-4, ConnectX4-Lx and Connect-IB from the list of Mellanox
devices marked as having broken INTx masking:

- ConnectX-4 and ConnectX4-LX firmware version is checked. If INTx
  masking is supported, we unmark the broken INTx masking.
- Connect-IB does not support INTx currently so will not cause any
  problem.

[bhelgaas: call pci_disable_device() always, after iounmap()]
Fixes: 11e42532ada3 ("PCI: Assume all Mellanox devices have broken INTx masking")
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
drivers/pci/quirks.c