Browse Source

xen/pciback: Don't setup an fake IRQ handler for SR-IOV devices.

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>
Konrad Rzeszutek Wilk 14 years ago
parent
commit
e17ab35f05
1 changed files with 7 additions and 0 deletions
  1. 7 0
      drivers/xen/xen-pciback/pciback_ops.c

+ 7 - 0
drivers/xen/xen-pciback/pciback_ops.c

@@ -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,