Hi, All On some laptops as it fails in evaluating the _REG object, which brings that EC device can't be initialized correctly. But the EC space handler is not removed. In such case maybe EC internal register will still be accessed in AML code. It is not reasonable. The following patch is to fix the above issue. When it fails in evaluating the _REG object, the EC space handler should be removed explicitly. Thanks for the comments. On some laptops the incorrect status is returned by acpi_install_space _handler because of the buggy _REG object, which causes that the EC device can't be initialized correctly. In such case it will be appropriate that the EC space handler is removed explicitly if OS fails in evaluating _REG object. http://bugzilla.kernel.org/show_bug.cgi?id=11884 Signed-off-by: Zhao Yakui <yakui.zhao@xxxxxxxxx> cc:Alexey Starikovskiy <astarikovskiy@xxxxxxx> --- drivers/acpi/ec.c | 11 +++++++++++ 1 file changed, 11 insertions(+) Index: linux-2.6/drivers/acpi/ec.c =================================================================== --- linux-2.6.orig/drivers/acpi/ec.c +++ linux-2.6/drivers/acpi/ec.c @@ -916,6 +916,17 @@ static int ec_install_handlers(struct ac printk(KERN_ERR "Fail in evaluating the _REG object" " of EC device. Broken bios is suspected.\n"); } else { + /* + * If incorrect status is returned because of the buggy + * _REG object, the EC space handler should be + * uninstalled explicitly. + * Otherwise maybe the EC internal register is still + * accessed in AML code although EC device is not + * initialized correctly. + */ + acpi_remove_address_space_handler(ec->handle, + ACPI_ADR_SPACE_EC, + &acpi_ec_space_handler); acpi_remove_gpe_handler(NULL, ec->gpe, &acpi_ec_gpe_handler); return -ENODEV; -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html