Commit 76cffa79 authored by Lv Zheng's avatar Lv Zheng Committed by Rafael J. Wysocki

ACPICA: Tables: Move an iasl specific table function to iasl source file.

ACPICA commit 6eb364d790dd103bd4990f808e0095a421c437cb

acpi_tb_store_table() implements a logic that is only correct to iasl. So it
won't be used by any other utilities except iasl. This function is
complained by the kernel users as an unused function. The best choice to
stop releasing it to the Linux kernel should be moving it to adisasm.c.

ACPI table manager can use both struct acpi_table_desc (direct referencing)
and table index (indirect referencing) as the descriptor to the table, so
acpi_tb_get_next_root_index() is extended to return both of them to allow
maximum usability from the callers. NOTE that indirect referencing is a
design result to meet the boot stage static allocation requirement for the
table descriptors.

This is a linuxized acpi_tb_store_table() removing result, there should be
no functional changes introduced to the Linux kernel by this patch except
the additonal kernel unused argument for acpi_tb_get_next_root_index()
(renamed to acpi_tb_get_next_root_index()). This argument is used in the
ACPICA upstream.

Link: https://github.com/acpica/acpica/commit/6eb364d7Reported-by: default avatarRickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 9bd4ce36
......@@ -58,7 +58,9 @@ u8 *acpi_tb_scan_memory_for_rsdp(u8 *start_address, u32 length);
/*
* tbdata - table data structure management
*/
acpi_status acpi_tb_get_next_root_index(u32 *table_index);
acpi_status
acpi_tb_get_next_table_descriptor(u32 *table_index,
struct acpi_table_desc **table_desc);
void
acpi_tb_init_table_descriptor(struct acpi_table_desc *table_desc,
......@@ -119,11 +121,6 @@ acpi_tb_install_standard_table(acpi_physical_address address,
u8 flags,
u8 reload, u8 override, u32 *table_index);
acpi_status
acpi_tb_store_table(acpi_physical_address address,
struct acpi_table_header *table,
u32 length, u8 flags, u32 *table_index);
void acpi_tb_uninstall_table(struct acpi_table_desc *table_desc);
void acpi_tb_terminate(void);
......
......@@ -484,19 +484,23 @@ acpi_status acpi_tb_resize_root_table_list(void)
/*******************************************************************************
*
* FUNCTION: acpi_tb_get_next_root_index
* FUNCTION: acpi_tb_get_next_table_descriptor
*
* PARAMETERS: table_index - Where table index is returned
* table_desc - Where table descriptor is returned
*
* RETURN: Status and table index.
* RETURN: Status and table index/descriptor.
*
* DESCRIPTION: Allocate a new ACPI table entry to the global table list
*
******************************************************************************/
acpi_status acpi_tb_get_next_root_index(u32 *table_index)
acpi_status
acpi_tb_get_next_table_descriptor(u32 *table_index,
struct acpi_table_desc **table_desc)
{
acpi_status status;
u32 i;
/* Ensure that there is room for the table in the Root Table List */
......@@ -508,8 +512,16 @@ acpi_status acpi_tb_get_next_root_index(u32 *table_index)
}
}
*table_index = acpi_gbl_root_table_list.current_table_count;
i = acpi_gbl_root_table_list.current_table_count;
acpi_gbl_root_table_list.current_table_count++;
if (table_index) {
*table_index = i;
}
if (table_desc) {
*table_desc = &acpi_gbl_root_table_list.tables[i];
}
return (AE_OK);
}
......
......@@ -356,7 +356,7 @@ acpi_tb_install_standard_table(acpi_physical_address address,
/* Add the table to the global root table list */
status = acpi_tb_get_next_root_index(&i);
status = acpi_tb_get_next_table_descriptor(&i, NULL);
if (ACPI_FAILURE(status)) {
goto release_and_exit;
}
......@@ -455,43 +455,6 @@ void acpi_tb_override_table(struct acpi_table_desc *old_table_desc)
acpi_tb_release_temp_table(&new_table_desc);
}
/*******************************************************************************
*
* FUNCTION: acpi_tb_store_table
*
* PARAMETERS: address - Table address
* table - Table header
* length - Table length
* flags - Install flags
* table_index - Where the table index is returned
*
* RETURN: Status and table index.
*
* DESCRIPTION: Add an ACPI table to the global table list
*
******************************************************************************/
acpi_status
acpi_tb_store_table(acpi_physical_address address,
struct acpi_table_header * table,
u32 length, u8 flags, u32 *table_index)
{
acpi_status status;
struct acpi_table_desc *table_desc;
status = acpi_tb_get_next_root_index(table_index);
if (ACPI_FAILURE(status)) {
return (status);
}
/* Initialize added table */
table_desc = &acpi_gbl_root_table_list.tables[*table_index];
acpi_tb_init_table_descriptor(table_desc, address, flags, table);
table_desc->pointer = table;
return (AE_OK);
}
/*******************************************************************************
*
* FUNCTION: acpi_tb_uninstall_table
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment