aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/tbxface.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2009-02-03 01:35:25 -0500
committerLen Brown <len.brown@intel.com>2009-03-26 16:38:19 -0400
commitac5f98db7be34cefc244026f882cf030debb7431 (patch)
tree7746bc75e1a8f4344b8673b5d2b54bc07147ca0f /drivers/acpi/acpica/tbxface.c
parent4bbfb85da27c27e9cc9a7fef4bd75df6361152ff (diff)
ACPICA: Allow OS override of all ACPI tables
Previously, the table override mechanism was implemented for the DSDT only. Now, any table in the RSDT/XSDT can be replaced by the host OS. (including the DSDT). Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/tbxface.c')
-rw-r--r--drivers/acpi/acpica/tbxface.c31
1 files changed, 1 insertions, 30 deletions
diff --git a/drivers/acpi/acpica/tbxface.c b/drivers/acpi/acpica/tbxface.c
index c3e841f3cde9..f3f95e386334 100644
--- a/drivers/acpi/acpica/tbxface.c
+++ b/drivers/acpi/acpica/tbxface.c
@@ -491,7 +491,6 @@ ACPI_EXPORT_SYMBOL(acpi_get_table_by_index)
491static acpi_status acpi_tb_load_namespace(void) 491static acpi_status acpi_tb_load_namespace(void)
492{ 492{
493 acpi_status status; 493 acpi_status status;
494 struct acpi_table_header *table;
495 u32 i; 494 u32 i;
496 495
497 ACPI_FUNCTION_TRACE(tb_load_namespace); 496 ACPI_FUNCTION_TRACE(tb_load_namespace);
@@ -515,41 +514,13 @@ static acpi_status acpi_tb_load_namespace(void)
515 goto unlock_and_exit; 514 goto unlock_and_exit;
516 } 515 }
517 516
518 /* 517 /* A valid DSDT is required */
519 * Find DSDT table
520 */
521 status =
522 acpi_os_table_override(acpi_gbl_root_table_list.
523 tables[ACPI_TABLE_INDEX_DSDT].pointer,
524 &table);
525 if (ACPI_SUCCESS(status) && table) {
526 /*
527 * DSDT table has been found
528 */
529 acpi_tb_delete_table(&acpi_gbl_root_table_list.
530 tables[ACPI_TABLE_INDEX_DSDT]);
531 acpi_gbl_root_table_list.tables[ACPI_TABLE_INDEX_DSDT].pointer =
532 table;
533 acpi_gbl_root_table_list.tables[ACPI_TABLE_INDEX_DSDT].length =
534 table->length;
535 acpi_gbl_root_table_list.tables[ACPI_TABLE_INDEX_DSDT].flags =
536 ACPI_TABLE_ORIGIN_UNKNOWN;
537
538 ACPI_INFO((AE_INFO, "Table DSDT replaced by host OS"));
539 acpi_tb_print_table_header(0, table);
540
541 if (no_auto_ssdt == 0) {
542 printk(KERN_WARNING "ACPI: DSDT override uses original SSDTs unless \"acpi_no_auto_ssdt\"\n");
543 }
544 }
545 518
546 status = 519 status =
547 acpi_tb_verify_table(&acpi_gbl_root_table_list. 520 acpi_tb_verify_table(&acpi_gbl_root_table_list.
548 tables[ACPI_TABLE_INDEX_DSDT]); 521 tables[ACPI_TABLE_INDEX_DSDT]);
549 if (ACPI_FAILURE(status)) { 522 if (ACPI_FAILURE(status)) {
550 523
551 /* A valid DSDT is required */
552
553 status = AE_NO_ACPI_TABLES; 524 status = AE_NO_ACPI_TABLES;
554 goto unlock_and_exit; 525 goto unlock_and_exit;
555 } 526 }