Skip to content

Commit

Permalink
acpi: remove final __acpi_map_table mapping before setting acpi_gbl_p…
Browse files Browse the repository at this point in the history
…ermanent_mmap

On x86, __acpi_map_table uses early_ioremap() to create the mapping,
replacing the previous mapping with a new one.  Once enough of the
kernel is up an running it switches to using normal ioremap().  At
that point, we need to clean up the final mapping to avoid a warning
from the early_ioremap subsystem.

This can be removed after all the instances in the ACPI code are fixed
that rely on early-ioremap's implicit overmapping of previously
mapped tables.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Acked-by: Len Brown <len.brown@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Jeremy Fitzhardinge authored and Ingo Molnar committed Feb 9, 2009
1 parent eecb9a6 commit 05876f8
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
8 changes: 5 additions & 3 deletions arch/x86/kernel/acpi/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,12 +124,14 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
static char *prev_map;
static unsigned long prev_size;

if (prev_map) {
early_iounmap(prev_map, prev_size);
prev_map = NULL;
}

if (!phys || !size)
return NULL;

if (prev_map)
early_iounmap(prev_map, prev_size);

prev_size = size;
prev_map = early_ioremap(phys, size);

Expand Down
6 changes: 6 additions & 0 deletions drivers/acpi/bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -694,6 +694,12 @@ void __init acpi_early_init(void)
if (!acpi_strict)
acpi_gbl_enable_interpreter_slack = TRUE;

/*
* Doing a zero-sized mapping will clear out the previous
* __acpi_map_table() mapping, if any.
*/
__acpi_map_table(0, 0);

acpi_gbl_permanent_mmap = 1;

status = acpi_reallocate_root_table();
Expand Down

0 comments on commit 05876f8

Please sign in to comment.