|
@@ -499,7 +499,6 @@ acpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle)
|
|
acpi_status status = AE_OK;
|
|
acpi_status status = AE_OK;
|
|
union acpi_operand_object *table_desc = ddb_handle;
|
|
union acpi_operand_object *table_desc = ddb_handle;
|
|
u32 table_index;
|
|
u32 table_index;
|
|
- struct acpi_table_header *table;
|
|
|
|
|
|
|
|
ACPI_FUNCTION_TRACE(ex_unload_table);
|
|
ACPI_FUNCTION_TRACE(ex_unload_table);
|
|
|
|
|
|
@@ -536,39 +535,7 @@ acpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle)
|
|
* strict order requirement against it.
|
|
* strict order requirement against it.
|
|
*/
|
|
*/
|
|
acpi_ex_exit_interpreter();
|
|
acpi_ex_exit_interpreter();
|
|
-
|
|
|
|
- /* Ensure the table is still loaded */
|
|
|
|
-
|
|
|
|
- if (!acpi_tb_is_table_loaded(table_index)) {
|
|
|
|
- status = AE_NOT_EXIST;
|
|
|
|
- goto lock_and_exit;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* Invoke table handler if present */
|
|
|
|
-
|
|
|
|
- if (acpi_gbl_table_handler) {
|
|
|
|
- status = acpi_get_table_by_index(table_index, &table);
|
|
|
|
- if (ACPI_SUCCESS(status)) {
|
|
|
|
- (void)acpi_gbl_table_handler(ACPI_TABLE_EVENT_UNLOAD,
|
|
|
|
- table,
|
|
|
|
- acpi_gbl_table_handler_context);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* Delete the portion of the namespace owned by this table */
|
|
|
|
-
|
|
|
|
- status = acpi_tb_delete_namespace_by_owner(table_index);
|
|
|
|
- if (ACPI_FAILURE(status)) {
|
|
|
|
- goto lock_and_exit;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- (void)acpi_tb_release_owner_id(table_index);
|
|
|
|
- acpi_tb_set_table_loaded_flag(table_index, FALSE);
|
|
|
|
-
|
|
|
|
-lock_and_exit:
|
|
|
|
-
|
|
|
|
- /* Re-acquire the interpreter lock */
|
|
|
|
-
|
|
|
|
|
|
+ status = acpi_tb_unload_table(table_index);
|
|
acpi_ex_enter_interpreter();
|
|
acpi_ex_enter_interpreter();
|
|
|
|
|
|
/*
|
|
/*
|