forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branches 'acpi-numa', 'acpi-tables' and 'acpi-osi'
* acpi-numa: ACPI / SRAT: fix SRAT parsing order with both LAPIC and X2APIC present * acpi-tables: ACPI / tables: Fix DSDT override mechanism ACPI / tables: Convert initrd table override to table upgrade mechanism ACPI / x86: Cleanup initrd related code ACPI / tables: Move table override mechanisms to tables.c * acpi-osi: ACPI / osi: Collect _OSI handling into one single file ACPI / osi: Cleanup coding style issues before creating a separate OSI source file ACPI / osi: Cleanup OSI handling code to use bool ACPI / osi: Fix default _OSI(Darwin) support ACPI / osi: Add acpi_osi=!! to allow reverting acpi_osi=! ACPI / osi: Cleanup _OSI("Linux") related code before introducing new support ACPI / osi: Fix an issue that acpi_osi=!* cannot disable ACPICA internal strings Conflicts: drivers/acpi/internal.h
- Loading branch information
Showing
12 changed files
with
914 additions
and
742 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,7 @@ | |
* | ||
* Check to see if the given machine has a known bad ACPI BIOS | ||
* or if the BIOS is too old. | ||
* Check given machine against acpi_osi_dmi_table[]. | ||
* Check given machine against acpi_rev_dmi_table[]. | ||
* | ||
* Copyright (C) 2004 Len Brown <[email protected]> | ||
* Copyright (C) 2002 Andy Grover <[email protected]> | ||
|
@@ -47,7 +47,7 @@ struct acpi_blacklist_item { | |
u32 is_critical_error; | ||
}; | ||
|
||
static struct dmi_system_id acpi_osi_dmi_table[] __initdata; | ||
static struct dmi_system_id acpi_rev_dmi_table[] __initdata; | ||
|
||
/* | ||
* POLICY: If *anything* doesn't work, put it on the blacklist. | ||
|
@@ -128,36 +128,12 @@ int __init acpi_blacklisted(void) | |
} | ||
} | ||
|
||
dmi_check_system(acpi_osi_dmi_table); | ||
(void)early_acpi_osi_init(); | ||
dmi_check_system(acpi_rev_dmi_table); | ||
|
||
return blacklisted; | ||
} | ||
#ifdef CONFIG_DMI | ||
static int __init dmi_enable_osi_linux(const struct dmi_system_id *d) | ||
{ | ||
acpi_dmi_osi_linux(1, d); /* enable */ | ||
return 0; | ||
} | ||
static int __init dmi_disable_osi_vista(const struct dmi_system_id *d) | ||
{ | ||
printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); | ||
acpi_osi_setup("!Windows 2006"); | ||
acpi_osi_setup("!Windows 2006 SP1"); | ||
acpi_osi_setup("!Windows 2006 SP2"); | ||
return 0; | ||
} | ||
static int __init dmi_disable_osi_win7(const struct dmi_system_id *d) | ||
{ | ||
printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); | ||
acpi_osi_setup("!Windows 2009"); | ||
return 0; | ||
} | ||
static int __init dmi_disable_osi_win8(const struct dmi_system_id *d) | ||
{ | ||
printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); | ||
acpi_osi_setup("!Windows 2012"); | ||
return 0; | ||
} | ||
#ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE | ||
static int __init dmi_enable_rev_override(const struct dmi_system_id *d) | ||
{ | ||
|
@@ -168,169 +144,7 @@ static int __init dmi_enable_rev_override(const struct dmi_system_id *d) | |
} | ||
#endif | ||
|
||
static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "Fujitsu Siemens", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"), | ||
}, | ||
}, | ||
{ | ||
/* | ||
* There have a NVIF method in MSI GX723 DSDT need call by Nvidia | ||
* driver (e.g. nouveau) when user press brightness hotkey. | ||
* Currently, nouveau driver didn't do the job and it causes there | ||
* have a infinite while loop in DSDT when user press hotkey. | ||
* We add MSI GX723's dmi information to this table for workaround | ||
* this issue. | ||
* Will remove MSI GX723 from the table after nouveau grows support. | ||
*/ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "MSI GX723", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "GX723"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "Sony VGN-NS10J_S", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NS10J_S"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "Sony VGN-SR290J", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR290J"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "VGN-NS50B_L", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NS50B_L"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "VGN-SR19XN", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR19XN"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "Toshiba Satellite L355", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
DMI_MATCH(DMI_PRODUCT_VERSION, "Satellite L355"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_win7, | ||
.ident = "ASUS K50IJ", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "K50IJ"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "Toshiba P305D", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P305D"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_vista, | ||
.ident = "Toshiba NB100", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "NB100"), | ||
}, | ||
}, | ||
|
||
/* | ||
* The wireless hotkey does not work on those machines when | ||
* returning true for _OSI("Windows 2012") | ||
*/ | ||
{ | ||
.callback = dmi_disable_osi_win8, | ||
.ident = "Dell Inspiron 7737", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7737"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_win8, | ||
.ident = "Dell Inspiron 7537", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7537"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_win8, | ||
.ident = "Dell Inspiron 5437", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5437"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_win8, | ||
.ident = "Dell Inspiron 3437", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 3437"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_win8, | ||
.ident = "Dell Vostro 3446", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3446"), | ||
}, | ||
}, | ||
{ | ||
.callback = dmi_disable_osi_win8, | ||
.ident = "Dell Vostro 3546", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3546"), | ||
}, | ||
}, | ||
|
||
/* | ||
* BIOS invocation of _OSI(Linux) is almost always a BIOS bug. | ||
* Linux ignores it, except for the machines enumerated below. | ||
*/ | ||
|
||
/* | ||
* Without this this EEEpc exports a non working WMI interface, with | ||
* this it exports a working "good old" eeepc_laptop interface, fixing | ||
* both brightness control, and rfkill not working. | ||
*/ | ||
{ | ||
.callback = dmi_enable_osi_linux, | ||
.ident = "Asus EEE PC 1015PX", | ||
.matches = { | ||
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."), | ||
DMI_MATCH(DMI_PRODUCT_NAME, "1015PX"), | ||
}, | ||
}, | ||
|
||
static struct dmi_system_id acpi_rev_dmi_table[] __initdata = { | ||
#ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE | ||
/* | ||
* DELL XPS 13 (2015) switches sound between HDA and I2S | ||
|
Oops, something went wrong.