[PATCH part1 3/5] acpi, acpica: Split acpi_tb_parse_root_table() into two parts.
From: Tang Chen <hidden>
Date: 2013-08-08 03:41:14
Also in:
linux-acpi, lkml
Subsystem:
acpi, acpi component architecture (acpica), the rest · Maintainers:
"Rafael J. Wysocki", Saket Dumbre, Linus Torvalds
This patch splits acpi_tb_parse_root_table() into two steps, and
introduces two new functions:
acpi_tb_root_table_install() and acpi_tb_root_table_override().
They are just the same as acpi_tb_parse_root_table() if they are
called in sequence.
Signed-off-by: Tang Chen <redacted>
Reviewed-by: Zhang Yanfei <redacted>
---
drivers/acpi/acpica/tbutils.c | 57 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/drivers/acpi/acpica/tbutils.c b/drivers/acpi/acpica/tbutils.c
index 9bef44b..8ed9b9a 100644
--- a/drivers/acpi/acpica/tbutils.c
+++ b/drivers/acpi/acpica/tbutils.c@@ -503,14 +503,16 @@ acpi_tb_get_root_table_entry(u8 *table_entry, u32 table_entry_size) /******************************************************************************* * - * FUNCTION: acpi_tb_parse_root_table + * FUNCTION: acpi_tb_root_table_install * * PARAMETERS: rsdp - Pointer to the RSDP * * RETURN: Status * * DESCRIPTION: This function is called to parse the Root System Description - * Table (RSDT or XSDT) + * Table (RSDT or XSDT), and install all the system description + * tables defined in the root table into the global root table + * list. * * NOTE: Tables are mapped (not copied) for efficiency. The FACS must * be mapped and cannot be copied because it contains the actual
@@ -519,7 +521,7 @@ acpi_tb_get_root_table_entry(u8 *table_entry, u32 table_entry_size) ******************************************************************************/ acpi_status __init -acpi_tb_parse_root_table(acpi_physical_address rsdp_address) +acpi_tb_root_table_install(acpi_physical_address rsdp_address) { struct acpi_table_rsdp *rsdp; u32 table_entry_size;
@@ -673,7 +675,31 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address) /* Install tables in firmware into acpi_gbl_root_table_list */ acpi_tb_install_table_firmware(acpi_gbl_root_table_list. tables[i].address, NULL, i); + } + + return_ACPI_STATUS(AE_OK); +} + +/******************************************************************************* + * + * FUNCTION: acpi_tb_root_table_override + * + * PARAMETERS: None + * + * RETURN: None + * + * DESCRIPTION: This function is called to allow the host OS to replace any + * table that has been installed into the global root table + * list. + * + ******************************************************************************/ +void __init +acpi_tb_root_table_override(void) +{ + int i; + + for (i = 2; i < acpi_gbl_root_table_list.current_table_count; i++) { /* Override the installed tables if any */ acpi_tb_install_table_override(acpi_gbl_root_table_list. tables[i].address, NULL, i);
@@ -686,6 +712,31 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address) acpi_tb_parse_fadt(i); } } +} + +/******************************************************************************* + * + * FUNCTION: acpi_tb_parse_root_table + * + * PARAMETERS: rsdp - Pointer to the RSDP + * + * RETURN: Status + * + * DESCRIPTION: This function is called to parse the Root System Description + * Table (RSDT or XSDT) + * + ******************************************************************************/ + +acpi_status __init +acpi_tb_parse_root_table(acpi_physical_address rsdp_address) +{ + acpi_status status; + + status = acpi_tb_root_table_install(rsdp_address); + if (ACPI_FAILURE(status)) + return_ACPI_STATUS(status); + + acpi_tb_root_table_override(); return_ACPI_STATUS(AE_OK); }
--
1.7.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>