If you need to pre-map the ACPI registers, I would expect the host to build a list of these during initialization as you mention, then lookup and use the appropriate mapping in acpi_os_read_memory. The acpi_os memory interfaces are not generic memory interfaces; they are only used for memory-mapped ACPI registers, so it is entirely appropriate to do whatever you need to do to obtain a mapping for the registers when at interrupt level. >-----Original Message----- >From: devel-bounces@xxxxxxxxxx [mailto:devel-bounces@xxxxxxxxxx] On Behalf >Of Bjorn Helgaas >Sent: Wednesday, August 04, 2010 10:19 AM >To: linux-acpi@xxxxxxxxxxxxxxx; devel@xxxxxxxxxx >Subject: [Devel] acpi_os_read_memory() from interrupt context > >Linux reads some ACPI registers from interrupt context. For example, >we read the PM1 Status register in the SCI interrupt handler via >this path: > > acpi_irq > acpi_ev_sci_xrupt_handler > acpi_ev_fixed_event_detect > acpi_hw_register_read > acpi_hw_read_multiple > acpi_read > >But acpi_read() takes a generic address structure, and if that >address happens to be in memory space (not I/O port space), we use >acpi_os_read_memory(). In Linux, that uses ioremap() to map the >address, and that doesn't work from interrupt context. > >I can imagine fixing this by doing the ioremap() at boot-time >rather than at interrupt-time, but most of this interrupt path >is in the ACPI CA, not in Linux itself, so it would probably >require some redesign in the CA. > >Any suggestions? > >Bjorn >_______________________________________________ >Devel mailing list >Devel@xxxxxxxxxx >http://lists.acpica.org/listinfo/devel -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html