From: Alan Cox <alan@lxorguk.ukuu.org.uk>
Date: Tue, 26 Sep 2006 16:35:32 +0000 (+0100)
Subject: [PATCH] libata: refuse to register IRQless ports
X-Git-Tag: firefly_0821_release~32413^2~20
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=02f076aaa1478a91762de522ecb029efbc279690;p=firefly-linux-kernel-4.4.55.git

[PATCH] libata: refuse to register IRQless ports

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

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 753b0152afd1..b4abd6850367 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -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);