forked from luck/tmp_suning_uos_patched
acpi: remove final __acpi_map_table mapping before setting acpi_gbl_permanent_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>
This commit is contained in:
parent
eecb9a697f
commit
05876f88ed
@ -124,12 +124,14 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
|
|||||||
static char *prev_map;
|
static char *prev_map;
|
||||||
static unsigned long prev_size;
|
static unsigned long prev_size;
|
||||||
|
|
||||||
|
if (prev_map) {
|
||||||
|
early_iounmap(prev_map, prev_size);
|
||||||
|
prev_map = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!phys || !size)
|
if (!phys || !size)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (prev_map)
|
|
||||||
early_iounmap(prev_map, prev_size);
|
|
||||||
|
|
||||||
prev_size = size;
|
prev_size = size;
|
||||||
prev_map = early_ioremap(phys, size);
|
prev_map = early_ioremap(phys, size);
|
||||||
|
|
||||||
|
@ -694,6 +694,12 @@ void __init acpi_early_init(void)
|
|||||||
if (!acpi_strict)
|
if (!acpi_strict)
|
||||||
acpi_gbl_enable_interpreter_slack = TRUE;
|
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;
|
acpi_gbl_permanent_mmap = 1;
|
||||||
|
|
||||||
status = acpi_reallocate_root_table();
|
status = acpi_reallocate_root_table();
|
||||||
|
Loading…
Reference in New Issue
Block a user