Skip to content

Commit 85f9402

Browse files
committed
ACPI: OSL: Make ACPICA use logical addresses of GPE blocks
Define ACPI_GPE_USE_LOGICAL_ADDRESSES in aclinux.h and modify acpi_os_initialize() to store the logical addresses of the FADT GPE blocks 0 and 1 in acpi_gbl_xgpe0_block_logical_address and acpi_gbl_xgpe1_block_logical_address, respectively, so as to allow ACPICA to use them for accessing GPE registers in system memory, instead of using their physical addresses and looking up the corresponding logical addresses on every access attempt, which is inefficient. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 6915564 commit 85f9402

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

drivers/acpi/osl.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,8 +1744,12 @@ acpi_status __init acpi_os_initialize(void)
17441744
{
17451745
acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
17461746
acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
1747-
acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
1748-
acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
1747+
1748+
acpi_gbl_xgpe0_block_logical_address =
1749+
(unsigned long)acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
1750+
acpi_gbl_xgpe1_block_logical_address =
1751+
(unsigned long)acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
1752+
17491753
if (acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) {
17501754
/*
17511755
* Use acpi_os_map_generic_address to pre-map the reset
@@ -1783,8 +1787,12 @@ acpi_status acpi_os_terminate(void)
17831787

17841788
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe1_block);
17851789
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe0_block);
1790+
acpi_gbl_xgpe0_block_logical_address = 0UL;
1791+
acpi_gbl_xgpe1_block_logical_address = 0UL;
1792+
17861793
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
17871794
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
1795+
17881796
if (acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER)
17891797
acpi_os_unmap_generic_address(&acpi_gbl_FADT.reset_register);
17901798

include/acpi/platform/aclinux.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@
118118

119119
#define USE_NATIVE_ALLOCATE_ZEROED
120120

121+
/* Use logical addresses for accessing GPE registers in system memory */
122+
123+
#define ACPI_GPE_USE_LOGICAL_ADDRESSES
124+
121125
/*
122126
* Overrides for in-kernel ACPICA
123127
*/

0 commit comments

Comments
 (0)