diff options
| -rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
| -rw-r--r-- | drivers/acpi/tables/tbxface.c | 23 |
2 files changed, 25 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index a326487a3ab5..09c0ec100f61 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -163,6 +163,8 @@ and is between 256 and 4096 characters. It is defined in the file | |||
| 163 | acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA | 163 | acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA |
| 164 | Format: <irq>,<irq>... | 164 | Format: <irq>,<irq>... |
| 165 | 165 | ||
| 166 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT | ||
| 167 | |||
| 166 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS | 168 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS |
| 167 | Format: To spoof as Windows 98: ="Microsoft Windows" | 169 | Format: To spoof as Windows 98: ="Microsoft Windows" |
| 168 | 170 | ||
diff --git a/drivers/acpi/tables/tbxface.c b/drivers/acpi/tables/tbxface.c index 5b302c4e293f..a9e3331fee5d 100644 --- a/drivers/acpi/tables/tbxface.c +++ b/drivers/acpi/tables/tbxface.c | |||
| @@ -52,6 +52,8 @@ ACPI_MODULE_NAME("tbxface") | |||
| 52 | /* Local prototypes */ | 52 | /* Local prototypes */ |
| 53 | static acpi_status acpi_tb_load_namespace(void); | 53 | static acpi_status acpi_tb_load_namespace(void); |
| 54 | 54 | ||
| 55 | static int no_auto_ssdt; | ||
| 56 | |||
| 55 | /******************************************************************************* | 57 | /******************************************************************************* |
| 56 | * | 58 | * |
| 57 | * FUNCTION: acpi_allocate_root_table | 59 | * FUNCTION: acpi_allocate_root_table |
| @@ -536,6 +538,10 @@ static acpi_status acpi_tb_load_namespace(void) | |||
| 536 | 538 | ||
| 537 | ACPI_INFO((AE_INFO, "Table DSDT replaced by host OS")); | 539 | ACPI_INFO((AE_INFO, "Table DSDT replaced by host OS")); |
| 538 | acpi_tb_print_table_header(0, table); | 540 | acpi_tb_print_table_header(0, table); |
| 541 | |||
| 542 | if (no_auto_ssdt == 0) { | ||
| 543 | printk(KERN_WARNING "ACPI: DSDT override uses original SSDTs unless \"acpi_no_auto_ssdt\""); | ||
| 544 | } | ||
| 539 | } | 545 | } |
| 540 | 546 | ||
| 541 | status = | 547 | status = |
| @@ -577,6 +583,11 @@ static acpi_status acpi_tb_load_namespace(void) | |||
| 577 | continue; | 583 | continue; |
| 578 | } | 584 | } |
| 579 | 585 | ||
| 586 | if (no_auto_ssdt) { | ||
| 587 | printk(KERN_WARNING "ACPI: SSDT ignored due to \"acpi_no_auto_ssdt\"\n"); | ||
| 588 | continue; | ||
| 589 | } | ||
| 590 | |||
| 580 | /* Ignore errors while loading tables, get as many as possible */ | 591 | /* Ignore errors while loading tables, get as many as possible */ |
| 581 | 592 | ||
| 582 | (void)acpi_ut_release_mutex(ACPI_MTX_TABLES); | 593 | (void)acpi_ut_release_mutex(ACPI_MTX_TABLES); |
| @@ -622,3 +633,15 @@ acpi_status acpi_load_tables(void) | |||
| 622 | } | 633 | } |
| 623 | 634 | ||
| 624 | ACPI_EXPORT_SYMBOL(acpi_load_tables) | 635 | ACPI_EXPORT_SYMBOL(acpi_load_tables) |
| 636 | |||
| 637 | |||
| 638 | static int __init acpi_no_auto_ssdt_setup(char *s) { | ||
| 639 | |||
| 640 | printk(KERN_NOTICE "ACPI: SSDT auto-load disabled\n"); | ||
| 641 | |||
| 642 | no_auto_ssdt = 1; | ||
| 643 | |||
| 644 | return 1; | ||
| 645 | } | ||
| 646 | |||
| 647 | __setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup); | ||
