linux/drivers
Bjorn Helgaas de82ff783b PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors
The Extended Interrupt descriptor has a producer/consumer bit, but
it's not clear what that would mean, and existing BIOSes use the bit
inconsistently.  This patch makes Linux PNPACPI ignore the bit.

The ACPI spec contains examples of PCI Interrupt Link devices marked
as ResourceProducers, but many BIOSes mark them as ResourceConsumers.

I also checked with a Windows contact, who said:

    Windows uses only "resource consumer" when dealing with
    interrupts.  There's no useful way of looking at a resource
    producer of interrupts.

    ... NT-based Windows largely infers the producer/consumer stuff
    from the device type and ignores the bits in the namespace.  This
    was necessary because Windows 98 ignored them and early namespaces
    contained random junk.

The reason I want to change this is because if PNPACPI devices exclude
ResourceProducer IRQ resources, we can't write PNP drivers for those
devices.

For example, on machines such as the the HP rx7620, rx7640, rx8620,
rx8640, and Superdome, HPET interrupts are ResourceProducers.  The
HPET driver currently has to use acpi_bus_register_driver() and do its
own _CRS parsing, even though it requires absolutely no ACPI-specific
functionality.

It would be better if the HPET driver were a PNP driver and took
advantage of the _CRS parsing built into PNPACPI.

This producer/consumer check was originally added here:
    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=2b8de5f50e4a302b83ebcd5b0120621336d50bd6

to fix this bug:
    http://bugzilla.kernel.org/show_bug.cgi?id=6292

However, the bug was related only to memory and I/O port resources,
where the distinction is sensible and important to Linux.  Given that
the distinction is muddled for IRQ resources, I think it was a mistake
to add the check there.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
2008-08-25 12:04:44 +02:00
..
accessibility
acpi Remove newline from the description of module parameters 2008-08-01 12:46:41 -07:00
amba
ata avr32: Use <mach/foo.h> instead of <asm/arch/foo.h> 2008-08-05 14:36:57 +02:00
atm atm: fix direct casts of pointers to u32 in the InterPhase driver 2008-07-30 16:33:05 -07:00
auxdisplay auxdisplay: small cleanups 2008-07-24 10:47:41 -07:00
base Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-08-01 11:52:39 -07:00
block xen-blkfront.c: make blkif_ioctl() static 2008-08-06 12:30:04 +02:00
bluetooth [Bluetooth] Add full quirk implementation for btusb driver 2008-08-07 22:26:56 +02:00
cdrom cdrom: don't check CDC_PLAY_AUDIO in cdrom_count_tracks() 2008-08-05 18:17:02 +02:00
char crypto: padlock - fix VIA PadLock instruction usage with irq_ts_save/restore() 2008-08-13 22:02:26 +10:00
clocksource
connector
cpufreq [CPUFREQ] Fix -Wshadow warning in conservative governor. 2008-08-08 16:00:48 -04:00
cpuidle cpuidle: make sysfs attributes sysdev class attributes 2008-08-12 16:07:28 -07:00
crypto crypto: padlock - fix VIA PadLock instruction usage with irq_ts_save/restore() 2008-08-13 22:02:26 +10:00
dca Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2008-07-23 12:03:18 -07:00
dio dio: use dio_match_device() in dio_bus_match() 2008-07-20 17:24:40 -07:00
dma Merge branch 'for-linus-merged' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-08-08 11:38:42 -07:00
edac edac: mpc85xx fix pci ofdev 2nd pass 2008-07-25 10:53:49 -07:00
eisa driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2008-08-06 12:03:43 -07:00
firmware firmware/memmap: cleanup 2008-08-12 16:07:31 -07:00
gpio gpio: max732x driver 2008-07-25 10:53:30 -07:00
gpu Remove newline from the description of module parameters 2008-08-01 12:46:41 -07:00
hid Merge branches 'upstream' and 'upstream-fixes' into for-linus 2008-07-23 15:26:10 +02:00
hwmon hwmon: (lm75) Drop legacy i2c driver 2008-08-10 22:56:16 +02:00
i2c USB: isp1301: fix compilation 2008-08-13 17:32:56 -07:00
ide [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ieee1394 PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
infiniband Merge branches 'ehca' and 'ipoib' into for-linus 2008-08-12 13:52:54 -07:00
input Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2008-08-13 20:48:25 -07:00
isdn Add DIP switch readout for HFC-4S IOB4ST 2008-08-02 16:40:37 +02:00
leds [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
lguest lguest: use get_user_pages_fast() instead of get_user_pages() 2008-08-12 17:52:53 +10:00
macintosh remove unnecessary <linux/hdreg.h> includes 2008-08-05 18:16:58 +02:00
mca driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
md Merge branch 'for-linus' of git://neil.brown.name/md 2008-08-01 11:56:07 -07:00
media Merge Linus' latest into master 2008-08-08 19:18:18 +01:00
memstick memstick: use fully asynchronous request processing 2008-07-26 12:00:04 -07:00
message Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-07-27 10:04:52 -07:00
mfd mfd: tc6393 cleanup and update 2008-08-10 23:32:07 +02:00
misc GRU: fix preprocessor symbol for sparse 2008-08-12 16:07:29 -07:00
mmc mfd: have TMIO drivers and subdevices depend on ARM 2008-08-10 23:30:34 +02:00
mtd mfd: have TMIO drivers and subdevices depend on ARM 2008-08-10 23:30:34 +02:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-08-13 20:48:46 -07:00
nubus
of spi: Add OF binding support for SPI busses 2008-07-25 22:34:40 -04:00
oprofile
parisc
parport make parport_cs_release() static 2008-07-26 12:00:11 -07:00
pci PCI: Limit VPD length for Broadcom 5708S 2008-08-07 17:47:37 -07:00
pcmcia [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
pnp PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors 2008-08-25 12:04:44 +02:00
power [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ps3
rapidio
regulator regulator: TI bq24022 Li-Ion Charger driver 2008-07-30 10:10:23 +01:00
rtc rtc-isl1208: fix double removal of a sysfs entry 2008-08-12 16:07:28 -07:00
s390 [S390] qeth: avoid use of include/asm-s390 2008-08-01 16:39:36 +02:00
sbus sparc/drivers: use linux/of_device.h instead of asm/of_device.h 2008-08-11 14:30:53 -07:00
scsi make struct scsi_dh_devlist's static 2008-08-11 12:20:31 -07:00
serial Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2008-08-13 20:48:25 -07:00
sh sh: Fix up broken kerneldoc comments. 2008-08-04 12:51:06 +09:00
sn
spi [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ssb
tc
telephony ixj: push BKL into driver and wrap ioctls 2008-07-25 10:53:43 -07:00
thermal
uio UIO: add generic UIO platform driver 2008-07-21 21:54:55 -07:00
usb usb: musb: pass configuration specifics via pdata 2008-08-13 17:33:01 -07:00
video fbcon: prevent cursor disappearance after switching to 512 character font 2008-08-12 16:07:29 -07:00
virtio virtio: Add transport feature handling stub for virtio_ring. 2008-07-25 12:06:14 +10:00
w1
watchdog ALi M7101 PMU also available on Sun Netra's too 2008-08-12 16:07:31 -07:00
xen sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -07:00
zorro move memory_read_from_buffer() from fs.h to string.h 2008-07-24 10:47:13 -07:00
Kconfig
Makefile USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00