xen/pciback: Don't setup an fake IRQ handler for SR-IOV devices.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 16 Feb 2011 20:43:25 +0000 (15:43 -0500)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 20 Jul 2011 00:58:34 +0000 (20:58 -0400)
If we try to setup an fake IRQ handler for legacy interrupts
for devices that only have MSI-X (most if not all SR-IOV cards),
we will fail with this:

pciback[0000:01:10.0]: failed to install fake IRQ handler for IRQ 0! (rc:-38)

Since those cards don't have anything in dev->irq.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/xen/xen-pciback/pciback_ops.c

index 6c398fd..28a2a55 100644 (file)
@@ -48,6 +48,13 @@ void pciback_control_isr(struct pci_dev *dev, int reset)
        if (enable)
                dev_data->irq = dev->irq;
 
+       /*
+        * SR-IOV devices in all use MSI-X and have no legacy
+        * interrupts, so inhibit creating a fake IRQ handler for them.
+        */
+       if (dev_data->irq == 0)
+               goto out;
+
        dev_dbg(&dev->dev, "%s: #%d %s %s%s %s-> %s\n",
                dev_data->irq_name,
                dev_data->irq,