linux/drivers
Andreas Block 691cd0c2ee PCI: PCI devices get assigned redundant IRQs
I'm currently working on a port to a CPCI board with a MPC5200.  When
testing the PCI interrupt routing, I discovered the following: Even devices
which don't use interrupts (-> PCI Spec.: Interrupt Pin Register is zero),
get an interrupt assigned (this is at least true for most of the
PPC-targets I looked at).

The cause is pretty obvious in drivers/pci/setup-irq.c.  I guess at least
in an ideal world with correctly designed hardware, the code should rather
look as in the patch below.

Of course it doesn't hurt anybody to have an unuseable IRQ assigned to a
PCI-to-PCI-bridge (or something alike), but to me it seems a bit strange. 
Please correct me, if I'm mislead.

The patch below is tested on the above mentioned CPCI-MPC5200 board and is
compiler tested with the latest git-repository kernel on x86.

Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-02-16 15:30:10 -08:00
..
acorn [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
acpi [PATCH] clockevents: i386 drivers 2007-02-16 08:13:59 -08:00
amba
ata sata_vsc: use default cache line size if non-zero 2007-02-15 18:13:46 -05:00
atm [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
auxdisplay [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00
base [PATCH] Drop __get_zone_counts() 2007-02-11 10:51:18 -08:00
block [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
bluetooth [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
cdrom [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
char Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart 2007-02-16 08:17:04 -08:00
clocksource [PATCH] Allow early access to the power management timer 2007-02-16 08:13:58 -08:00
connector
cpufreq Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq 2007-02-16 08:16:01 -08:00
crypto [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
dio
dma
edac [PATCH] EDAC: Add Fully-Buffered DIMM APIs to core 2007-02-12 09:48:32 -08:00
eisa
fc4 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
firmware [PATCH] docbook: add edd firmware interfaces 2007-02-11 10:51:32 -08:00
hid [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
hwmon i2c/vt8231: Remove superfluous initialization 2007-02-13 22:08:58 +01:00
i2c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ide [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ieee1394 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
infiniband [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
input [PATCH] hrtimers: namespace and enum cleanup 2007-02-16 08:13:58 -08:00
isdn [PATCH] correct CONFIG_GIGASET_M101 Makefile entry 2007-02-16 08:13:56 -08:00
kvm [PATCH] i386: Convert i386 PDA code to use %fs 2007-02-13 13:26:20 +01:00
leds
macintosh [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
mca
md [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
media [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
message [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mfd
misc [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
mmc [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mtd [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2 2007-02-14 08:09:55 -08:00
net [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
nubus
oprofile [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
parisc [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
parport [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
pci PCI: PCI devices get assigned redundant IRQs 2007-02-16 15:30:10 -08:00
pcmcia [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
pnp [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
ps3 [PATCH] ps3: disable display flipping during mode changes 2007-02-12 09:48:44 -08:00
rapidio [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
rtc [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
s390 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sbus [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
scsi [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
serial [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sh
sn [PATCH] IOC3/IOC4: PCI mem space resources 2007-02-11 10:51:25 -08:00
spi [PATCH] SPI: atmel_spi driver 2007-02-14 08:09:53 -08:00
tc [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
telephony [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
usb [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
video [PATCH] s3c2410fb: fix un-initialised dev field 2007-02-16 08:14:01 -08:00
w1 [PATCH] w1: Use ARRAY_SIZE macro when appropriate 2007-02-12 09:48:28 -08:00
zorro [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
Kconfig [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00
Makefile [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00