• Bjorn Helgaas's avatar
    PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors · de82ff78
    Bjorn Helgaas authored
    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: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    de82ff78
rsparser.c 29.8 KB