ACPI: Pre-map 'system event' related register blocks
authorMyron Stowe <myron.stowe@hp.com>
Thu, 21 Oct 2010 20:24:04 +0000 (14:24 -0600)
committerLen Brown <len.brown@intel.com>
Mon, 25 Oct 2010 03:27:09 +0000 (23:27 -0400)
commitd362edaf5386acedad4319a6721bb1540b74dcf7
tree501cdcf9c8788ff7f3d9d23404c8796801baa4f4
parent29718521237a1b1607ea05b49243100ea2044337
ACPI: Pre-map 'system event' related register blocks

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: Myron Stowe <myron.stowe@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/osl.c