[PATCH] libata: refuse to register IRQless ports
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Tue, 26 Sep 2006 16:35:32 +0000 (17:35 +0100)
committerJeff Garzik <jeff@garzik.org>
Tue, 26 Sep 2006 17:34:26 +0000 (13:34 -0400)
We don't currently support pure polled operation so when we meet a BIOS
which forgot to assign an IRQ to a PCI device it all goes a little pear
shaped. Trap this case properly.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-core.c

index 753b0152afd16f15dd655bafacff32d1dc5dd473..b4abd6850367d219e2cb1d59218bf7773b147879 100644 (file)
@@ -5453,6 +5453,11 @@ int ata_device_add(const struct ata_probe_ent *ent)
        int rc;
 
        DPRINTK("ENTER\n");
+       
+       if (ent->irq == 0) {
+               dev_printk(KERN_ERR, dev, "is not available: No interrupt assigned.\n");
+               return 0;
+       }
        /* alloc a container for our list of ATA ports (buses) */
        host = kzalloc(sizeof(struct ata_host) +
                       (ent->n_ports * sizeof(void *)), GFP_KERNEL);