diff options
Diffstat (limited to 'drivers/acpi/osl.c')
-rw-r--r-- | drivers/acpi/osl.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 6ab2c3505520..e8baa408faef 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c | |||
@@ -140,7 +140,8 @@ static struct osi_linux { | |||
140 | unsigned int enable:1; | 140 | unsigned int enable:1; |
141 | unsigned int dmi:1; | 141 | unsigned int dmi:1; |
142 | unsigned int cmdline:1; | 142 | unsigned int cmdline:1; |
143 | } osi_linux = {0, 0, 0}; | 143 | unsigned int default_disabling:1; |
144 | } osi_linux = {0, 0, 0, 0}; | ||
144 | 145 | ||
145 | static u32 acpi_osi_handler(acpi_string interface, u32 supported) | 146 | static u32 acpi_osi_handler(acpi_string interface, u32 supported) |
146 | { | 147 | { |
@@ -1376,6 +1377,10 @@ void __init acpi_osi_setup(char *str) | |||
1376 | 1377 | ||
1377 | if (*str == '!') { | 1378 | if (*str == '!') { |
1378 | str++; | 1379 | str++; |
1380 | if (*str == '\0') { | ||
1381 | osi_linux.default_disabling = 1; | ||
1382 | return; | ||
1383 | } | ||
1379 | enable = false; | 1384 | enable = false; |
1380 | } | 1385 | } |
1381 | 1386 | ||
@@ -1441,6 +1446,13 @@ static void __init acpi_osi_setup_late(void) | |||
1441 | int i; | 1446 | int i; |
1442 | acpi_status status; | 1447 | acpi_status status; |
1443 | 1448 | ||
1449 | if (osi_linux.default_disabling) { | ||
1450 | status = acpi_update_interfaces(ACPI_DISABLE_ALL_VENDOR_STRINGS); | ||
1451 | |||
1452 | if (ACPI_SUCCESS(status)) | ||
1453 | printk(KERN_INFO PREFIX "Disabled all _OSI OS vendors\n"); | ||
1454 | } | ||
1455 | |||
1444 | for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) { | 1456 | for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) { |
1445 | osi = &osi_setup_entries[i]; | 1457 | osi = &osi_setup_entries[i]; |
1446 | str = osi->string; | 1458 | str = osi->string; |