Bug 42945

Summary: EC Errors in dmesg - Dell Precision M6600/04YY4M
Product: ACPI Reporter: tblanchard.bug
Component: ECAssignee: Lan Tianyu (tianyu.lan)
Status: CLOSED DUPLICATE    
Severity: normal CC: aaron.lu, lenb, tianyu.lan
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg
dmicode
acpidump

Description tblanchard.bug 2012-03-16 22:50:34 UTC
Created attachment 72614 [details]
dmesg

I have some ACPI EC errors in my dmesg, the computer works fine but I'm reporting them just in case.
Comment 1 tblanchard.bug 2012-03-16 22:51:06 UTC
Created attachment 72615 [details]
dmicode
Comment 2 tblanchard.bug 2012-03-16 22:51:32 UTC
Created attachment 72616 [details]
acpidump
Comment 3 Len Brown 2012-03-20 02:19:14 UTC
[   10.618817] ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20110623/evregion-478)
[   10.618843] ACPI Error: Method parse/execution failed [\_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880126a515a0), AE_TIME (20110623/psparse-536)
[   10.618853] ACPI Error: Method parse/execution failed [\ECRB] (Node ffff880126a51708), AE_TIME (20110623/psparse-536)
[   10.618857] ACPI Error: Method parse/execution failed [\ECG5] (Node ffff880126a51820), AE_TIME (20110623/psparse-536)
[   10.618860] ACPI Error: Method parse/execution failed [\_SB_.AC__._PSR] (Node ffff880126a51f00), AE_TIME (20110623/psparse-536)
[   10.618879] ACPI Exception: AE_TIME, Error reading AC Adapter state (20110623/ac-118)
[   11.474280] ACPI: EC: input buffer is not empty, aborting transaction


FYI _PSR failing means that your AC vs DC status may get confused.
Comment 4 Lan Tianyu 2013-04-09 09:42:52 UTC
Please attach the output of dmesg with the following patch.
https://bugzilla.kernel.org/attachment.cgi?id=96101

Debug
(1) Try with kernel parameter "ec.ec_delay=5000"

(2) Try the following patch.
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 57c676a..12aea77 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -124,7 +124,7 @@ struct transaction {
 struct acpi_ec *boot_ec, *first_ec;
 EXPORT_SYMBOL(first_ec);

-static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
+static int EC_FLAGS_MSI = 1; /* Out-of-spec MSI controller */
 static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */
 static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */
Comment 5 Lan Tianyu 2013-04-12 01:57:13 UTC
Hi, this bug is as same as bug 14733 and bug 48221. This issue can be resolved by following patch. So mark this duplicate. If the patch can't resolve your problem. Please feel free to reopen the bug.

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index d45b287..6376fd2 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -223,7 +223,7 @@ static int ec_check_sci_sync(struct acpi_ec *ec, u8 state)
 static int ec_poll(struct acpi_ec *ec)
 {
        unsigned long flags;
-       int repeat = 2; /* number of command restarts */
+       int repeat = 4; /* number of command restarts */
        while (repeat--) {
                unsigned long delay = jiffies +
                        msecs_to_jiffies(ec_delay);
@@ -241,8 +241,10 @@ static int ec_poll(struct acpi_ec *ec)
                        }
                        advance_transaction(ec, acpi_ec_read_status(ec));
                } while (time_before(jiffies, delay));
-               if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF)
-                       break;
+
+               //if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF)
+               //      break;
+               pr_info(PREFIX "%s: repeat %d \n", __func__, 4 - repeat);
                pr_debug(PREFIX "controller reset, restart transaction\n");
                spin_lock_irqsave(&ec->lock, flags);
                start_transaction(ec);

*** This bug has been marked as a duplicate of bug 14733 ***