Re: [RFC] [PATCH] ACPI :Remove the EC space handler explicitly when failing in _REG object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is hardly a "fix", you just disable EC on this machine... Famous question
"how windows runs on this machine?" is not answered...

Regards,
Alex.

Zhao Yakui wrote:
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

--
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

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux