toshiba_acpi: Refuse to load on machines with buggy INFO implementations
Several Satellite models have a buggy implementation of the INFO method that causes ACPI exceptions when executed: ACPI Error: Result stack is empty! State=ffff88012d70f800 (20110413/dswstate-98) ACPI Exception: AE_AML_NO_RETURN_VALUE, Missing or null operand (20110413/dsutils-646) ACPI Exception: AE_AML_NO_RETURN_VALUE, While creating Arg 0 (20110413/dsutils-763) ACPI Error: Method parse/execution failed [\_SB_.VALZ.GETE] (Node ffff880131175eb0), AE_AML_NO_RETURN_VALUE (20110413/psparse-536) ACPI Error: Method parse/execution failed [\_SB_.VALZ.INFO] (Node ffff880131175ed8), AE_AML_NO_RETURN_VALUE (20110413/psparse-536) toshiba_acpi: ACPI INFO method execution failed toshiba_acpi: Failed to query hotkey event All known machines with this implementation also have a WMI interface with event GUID 59142400-C6A3-40FA-BADB-8A2652834100 which is not seen on any other models. Refuse to load toshiba_acpi on machines with this guid. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
This commit is contained in:
Родитель
af502837a0
Коммит
f11f999e98
|
@ -569,6 +569,7 @@ config TOPSTAR_LAPTOP
|
|||
config ACPI_TOSHIBA
|
||||
tristate "Toshiba Laptop Extras"
|
||||
depends on ACPI
|
||||
depends on ACPI_WMI
|
||||
select LEDS_CLASS
|
||||
select NEW_LEDS
|
||||
depends on BACKLIGHT_CLASS_DEVICE
|
||||
|
|
|
@ -30,7 +30,11 @@ obj-$(CONFIG_INTEL_MENLOW) += intel_menlow.o
|
|||
obj-$(CONFIG_ACPI_WMI) += wmi.o
|
||||
obj-$(CONFIG_MSI_WMI) += msi-wmi.o
|
||||
obj-$(CONFIG_TOPSTAR_LAPTOP) += topstar-laptop.o
|
||||
|
||||
# toshiba_acpi must link after wmi to ensure that wmi devices are found
|
||||
# before toshiba_acpi initializes
|
||||
obj-$(CONFIG_ACPI_TOSHIBA) += toshiba_acpi.o
|
||||
|
||||
obj-$(CONFIG_TOSHIBA_BT_RFKILL) += toshiba_bluetooth.o
|
||||
obj-$(CONFIG_INTEL_SCU_IPC) += intel_scu_ipc.o
|
||||
obj-$(CONFIG_INTEL_SCU_IPC_UTIL) += intel_scu_ipcutil.o
|
||||
|
|
|
@ -63,6 +63,8 @@ MODULE_AUTHOR("John Belmonte");
|
|||
MODULE_DESCRIPTION("Toshiba Laptop ACPI Extras Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
#define TOSHIBA_WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100"
|
||||
|
||||
/* Scan code for Fn key on TOS1900 models */
|
||||
#define TOS1900_FN_SCAN 0x6e
|
||||
|
||||
|
@ -1249,6 +1251,14 @@ static int __init toshiba_acpi_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Machines with this WMI guid aren't supported due to bugs in
|
||||
* their AML. This check relies on wmi initializing before
|
||||
* toshiba_acpi to guarantee guids have been identified.
|
||||
*/
|
||||
if (wmi_has_guid(TOSHIBA_WMI_EVENT_GUID))
|
||||
return -ENODEV;
|
||||
|
||||
toshiba_proc_dir = proc_mkdir(PROC_TOSHIBA, acpi_root_dir);
|
||||
if (!toshiba_proc_dir) {
|
||||
pr_err("Unable to create proc dir " PROC_TOSHIBA "\n");
|
||||
|
|
Загрузка…
Ссылка в новой задаче