diff options
author | Bob Moore <robert.moore@intel.com> | 2009-02-03 01:35:25 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-03-26 16:38:19 -0400 |
commit | ac5f98db7be34cefc244026f882cf030debb7431 (patch) | |
tree | 7746bc75e1a8f4344b8673b5d2b54bc07147ca0f /drivers/acpi/acpica/tbxface.c | |
parent | 4bbfb85da27c27e9cc9a7fef4bd75df6361152ff (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.c | 31 |
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) | |||
491 | static acpi_status acpi_tb_load_namespace(void) | 491 | static 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 | } |