]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
PCI/IOV: Skip INTx config reads for VFs
authorKarimAllah Ahmed <karahmed@amazon.de>
Wed, 17 Jan 2018 18:30:29 +0000 (19:30 +0100)
committerBjorn Helgaas <helgaas@kernel.org>
Mon, 5 Mar 2018 14:10:14 +0000 (08:10 -0600)
Per PCIe r4.0, sec 9.2.1.4, VFs can not implement INTX, and their Interrupt
Line and Interrupt Pin registers must be RO Zero.  Some devices have
thousands of VFs, so skip reading the registers as an optimization.

Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de>
Signed-off-by: Jan H. Schönherr <jschoenh@amazon.de>
[bhelgaas: changelog, comment]
Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
drivers/pci/probe.c

index 489660d0d384dc93bc841932f1d2ca0d6ecf3192..a1cddca37793d10213e1988e6a562d1f34ac09fe 100644 (file)
@@ -1230,6 +1230,13 @@ static void pci_read_irq(struct pci_dev *dev)
 {
        unsigned char irq;
 
+       /* VFs are not allowed to use INTx, so skip the config reads */
+       if (dev->is_virtfn) {
+               dev->pin = 0;
+               dev->irq = 0;
+               return;
+       }
+
        pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
        dev->pin = irq;
        if (irq)