From e38d523fd0932a5d4ef2865360d8828efcf05392 Mon Sep 17 00:00:00 2001
From: Ben Dooks <ben-linux@fluff.org>
Date: Fri, 8 Aug 2008 21:22:35 +0100
Subject: [PATCH] [ARM] CATS: Do not try and map bad PCI IRQ numbers

The cats_map_irq() function in the Simtec CATS support
code is mapping IRQ 255 (invalid IRQ) into what is a
supposedly valid interrupt numner which can cause problems
with other devices then seeing an interrupt they cannot
claim.

If the IRQ number if >= 255, then return -1 as this is not
something we can map.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
---
 arch/arm/mach-footbridge/cats-pci.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/mach-footbridge/cats-pci.c b/arch/arm/mach-footbridge/cats-pci.c
index 35eb232a649a2..ae3e1c8c75832 100644
--- a/arch/arm/mach-footbridge/cats-pci.c
+++ b/arch/arm/mach-footbridge/cats-pci.c
@@ -18,6 +18,9 @@ static int irqmap_cats[] __initdata = { IRQ_PCI, IRQ_IN0, IRQ_IN1, IRQ_IN3 };
 
 static int __init cats_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
 {
+	if (dev->irq >= 255)
+		return -1;	/* not a valid interrupt. */
+
 	if (dev->irq >= 128)
 		return dev->irq & 0x1f;
 
-- 
GitLab