acpi/x86: introduce __apci_map_table, v4
to prevent wrongly overwriting fixmap that still want to use. ACPI used to rely on low mappings being all linearly mapped and grew a habit: it never really unmapped certain kinds of tables after use. This can cause problems - for example the hypothetical case when some spurious access still references it. v2: remove prev_map and prev_size in __apci_map_table v3: let acpi_os_unmap_memory() call early_iounmap too, so remove extral calling to early_acpi_os_unmap_memory v4: fix typo in one acpi_get_table_with_size calling Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Acked-by: Len Brown <len.brown@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
这个提交包含在:
@@ -365,7 +365,7 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table_id)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_get_table
|
||||
* FUNCTION: acpi_get_table_with_size
|
||||
*
|
||||
* PARAMETERS: Signature - ACPI signature of needed table
|
||||
* Instance - Which instance (for SSDTs)
|
||||
@@ -377,8 +377,9 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table_id)
|
||||
*
|
||||
*****************************************************************************/
|
||||
acpi_status
|
||||
acpi_get_table(char *signature,
|
||||
u32 instance, struct acpi_table_header **out_table)
|
||||
acpi_get_table_with_size(char *signature,
|
||||
u32 instance, struct acpi_table_header **out_table,
|
||||
acpi_size *tbl_size)
|
||||
{
|
||||
u32 i;
|
||||
u32 j;
|
||||
@@ -408,6 +409,7 @@ acpi_get_table(char *signature,
|
||||
acpi_tb_verify_table(&acpi_gbl_root_table_list.tables[i]);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
*out_table = acpi_gbl_root_table_list.tables[i].pointer;
|
||||
*tbl_size = acpi_gbl_root_table_list.tables[i].length;
|
||||
}
|
||||
|
||||
if (!acpi_gbl_permanent_mmap) {
|
||||
@@ -420,6 +422,15 @@ acpi_get_table(char *signature,
|
||||
return (AE_NOT_FOUND);
|
||||
}
|
||||
|
||||
acpi_status
|
||||
acpi_get_table(char *signature,
|
||||
u32 instance, struct acpi_table_header **out_table)
|
||||
{
|
||||
acpi_size tbl_size;
|
||||
|
||||
return acpi_get_table_with_size(signature,
|
||||
instance, out_table, &tbl_size);
|
||||
}
|
||||
ACPI_EXPORT_SYMBOL(acpi_get_table)
|
||||
|
||||
/*******************************************************************************
|
||||
|
在新工单中引用
屏蔽一个用户