OpenCloudOS-Kernel/drivers/pnp
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
..
isapnp PNP: convert resource options to single linked list 2008-07-16 23:27:07 +02:00
pnpacpi PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors 2008-08-25 12:04:44 +02:00
pnpbios PNP: convert resource options to single linked list 2008-07-16 23:27:07 +02:00
Kconfig Use menuconfig objects: PNP 2007-07-16 09:05:40 -07:00
Makefile PNP: use dev_info(), dev_err(), etc in core 2007-10-17 08:43:04 -07:00
base.h make pnp_add_card_id() static 2008-07-26 12:00:11 -07:00
card.c make pnp_add_card_id() static 2008-07-26 12:00:11 -07:00
core.c PNP: convert resource options to single linked list 2008-07-16 23:27:07 +02:00
driver.c PNP: change pnp_add_id() to allocate its own pnp_id structures 2008-04-29 03:22:16 -04:00
interface.c PNP: convert resource options to single linked list 2008-07-16 23:27:07 +02:00
manager.c PNP: convert resource options to single linked list 2008-07-16 23:27:07 +02:00
quirks.c pnp: have quirk_system_pci_resources() include io resources 2008-07-26 12:00:02 -07:00
resource.c PNP: avoid legacy IDE IRQs 2008-07-16 23:27:07 +02:00
support.c PNP: fix formatting of dbg_pnp_show_resources() output 2008-08-01 12:46:41 -07:00
system.c PNP: replace pnp_resource_table with dynamically allocated resources 2008-07-16 23:27:05 +02:00