• M
    ACPI: Pre-map 'system event' related register blocks · d362edaf
    Myron Stowe 提交于
    During ACPI initialization, pre-map fixed hardware registers that are
    accessed during ACPI's 'system event' related IRQ handing.
    
    ACPI's 'system event' handing accesses specific fixed hardware
    registers; namely PM1a event, PM1b event, GPE0, and GPE1 register
    blocks which are declared within the FADT.  If these registers are
    backed by MMIO, as opposed to I/O port space, accessing them within
    interrupt context will cause a panic as acpi_os_read_memory()
    depends on ioremap() in such cases - BZ 18012.
    
    By utilizing the functionality provided in the previous two patches -
    ACPI: Maintain a list of ACPI memory mapped I/O remappings, and, ACPI:
    Add interfaces for ioremapping/iounmapping ACPI registers - accesses
    to ACPI MMIO areas will now be safe from within interrupt contexts (IRQ
    and/or NMI) provided the area was pre-mapped.  This solves BZ 18012.
    
    ACPI "System Event" reference(s):
      ACPI Specification, Revision 4.0, Section 3 "ACPI Overview",
      3.8 "System Events", 5.6 "ACPI Event Programming Model".
    
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=18012
    
    Reported-by: <bjorn.helgaas@hp.com>
    Signed-off-by: NMyron Stowe <myron.stowe@hp.com>
    Signed-off-by: NLen Brown <len.brown@intel.com>
    d362edaf
osl.c 38.7 KB