diff mbox

[kernel] vfio: Print message about masking INTx only when it is known to be broken

Message ID 20180309011736.41300-1-aik@ozlabs.ru (mailing list archive)
State New, archived
Headers show

Commit Message

Alexey Kardashevskiy March 9, 2018, 1:17 a.m. UTC
Commit 2170dd04316e ("vfio-pci: Mask INTx if a device is not capabable
of enabling it") is causing 'Masking broken INTx support' messages
every time when a PCI without INTx support is enabled. This message is
intended to appear when a device known for broken INTx is being enabled.
However the message also appears on IOV virtual functions where INTx
cannot possibly be enabled so saying that the "broken" support is masked
is not correct.

This changes the message to only appear when the device advertises INTx
(via PCI_INTERRUPT_PIN != 0) but does not implement PCI 2.3 INTx masking.

Fixes: 2170dd04316e ("vfio-pci: Mask INTx if a device is not capabable of enabling it")
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 drivers/vfio/pci/vfio_pci.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
index b0f7594..7f2ec47 100644
--- a/drivers/vfio/pci/vfio_pci.c
+++ b/drivers/vfio/pci/vfio_pci.c
@@ -245,7 +245,13 @@  static int vfio_pci_enable(struct vfio_pci_device *vdev)
 
 	if (likely(!nointxmask)) {
 		if (vfio_pci_nointx(pdev)) {
-			dev_info(&pdev->dev, "Masking broken INTx support\n");
+			u8 pin = 0;
+
+			pci_read_config_byte(vdev->pdev, PCI_INTERRUPT_PIN,
+					     &pin);
+			if (pin)
+				dev_info(&pdev->dev,
+					 "Masking broken INTx support\n");
 			vdev->nointx = true;
 			pci_intx(pdev, 0);
 		} else