public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC]  [PATCH] ACPI :Remove the EC space handler explicitly when failing in _REG object
@ 2008-11-26  8:50 Zhao Yakui
  2008-11-26 20:03 ` Alexey Starikovskiy
  0 siblings, 1 reply; 9+ messages in thread
From: Zhao Yakui @ 2008-11-26  8:50 UTC (permalink / raw)
  To: linux-acpi; +Cc: lenb, astarikovskiy

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@intel.com>
cc:Alexey Starikovskiy <astarikovskiy@suse.de>
---
 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;



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-12-01  8:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-26  8:50 [RFC] [PATCH] ACPI :Remove the EC space handler explicitly when failing in _REG object Zhao Yakui
2008-11-26 20:03 ` Alexey Starikovskiy
2008-11-27  1:29   ` Zhao Yakui
2008-11-27  9:42     ` Alexey Starikovskiy
2008-11-28  2:57       ` Zhao Yakui
2008-11-28  8:08         ` Alexey Starikovskiy
2008-12-01  1:53           ` Zhao Yakui
2008-12-01  2:47           ` Zhao Yakui
2008-12-01  8:12           ` the issue about the bogus ECDT table Zhao Yakui

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox