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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
---
 drivers/vfio/pci/vfio_pci.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

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
-- 
2.11.0




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux