diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-02-16 15:43:25 -0500 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-07-19 20:58:34 -0400 |
commit | e17ab35f05cb8b3d19c70454a41ea67207caf484 (patch) | |
tree | 36c82312a06223afa4a1ce6afc9d1f92f3aaa547 | |
parent | a0b2fa8ef8fee0493f6c1e2ac08b9e50a629a7c2 (diff) |
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>
-rw-r--r-- | drivers/xen/xen-pciback/pciback_ops.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/xen/xen-pciback/pciback_ops.c b/drivers/xen/xen-pciback/pciback_ops.c index 6c398fde7a83..28a2a5584831 100644 --- a/drivers/xen/xen-pciback/pciback_ops.c +++ b/drivers/xen/xen-pciback/pciback_ops.c | |||
@@ -48,6 +48,13 @@ void pciback_control_isr(struct pci_dev *dev, int reset) | |||
48 | if (enable) | 48 | if (enable) |
49 | dev_data->irq = dev->irq; | 49 | dev_data->irq = dev->irq; |
50 | 50 | ||
51 | /* | ||
52 | * SR-IOV devices in all use MSI-X and have no legacy | ||
53 | * interrupts, so inhibit creating a fake IRQ handler for them. | ||
54 | */ | ||
55 | if (dev_data->irq == 0) | ||
56 | goto out; | ||
57 | |||
51 | dev_dbg(&dev->dev, "%s: #%d %s %s%s %s-> %s\n", | 58 | dev_dbg(&dev->dev, "%s: #%d %s %s%s %s-> %s\n", |
52 | dev_data->irq_name, | 59 | dev_data->irq_name, |
53 | dev_data->irq, | 60 | dev_data->irq, |