What we expect to see is:

[   28.070535] ACPI: EC: Look up EC in DSDT
[   28.077294] ACPI: Interpreter enabled
[   28.077357] ACPI: (supports S0 S3 S4 S5)
[   28.077612] ACPI: Using IOAPIC for interrupt routing
[   28.078065] ACPI: EC: non-query interrupt received, switching to interrupt 
mode
[   28.105273] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[   28.105338] ACPI: EC: driver started in interrupt mode

But i386, when on external power, reports:

[   18.127035] ACPI: EC: Look up EC in DSDT
[   18.136591] ACPI: Interpreter enabled
[   18.136594] ACPI: (supports S0 S3 S4 S5)
[   18.136604] ACPI: Using IOAPIC for interrupt routing
[   18.136844] ACPI: EC: non-query interrupt received, switching to interrupt 
mode
[   18.634304] ACPI: EC: acpi_ec_wait timeout, status = 0, expect_event = 1
[   18.634362] ACPI: EC: read timeout, command = 128
[   18.634415] ACPI Exception (evregion-0420): AE_TIME, Returned by Handler for 
[EmbeddedControl] [20070126]
[   18.634419] ACPI Exception (dswexec-0462): AE_TIME, While resolving operands 
for [OpcodeName unavailable] [20070126]
[   18.634423] ACPI Error (psparse-0537): Method parse/execution failed 
[\_SB_.PCI0.LPCB.EC__._REG] (Node f7c4bd20), AE_TIME
[   19.142018] ACPI: EC: missing confirmations, switch off interrupt mode.
[   19.154286] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[   19.154288] ACPI: EC: driver started in poll mode

The key part is:

[   18.634419] ACPI Exception (dswexec-0462): AE_TIME, While resolving
operands for [OpcodeName unavailable] [20070126]

The ACPI EC._REG method is:

Method (_REG, 2, NotSerialized)
{
    If (LEqual (Arg0, 0x03))
    {
        Store (Arg1, ECON)
        Store (BATP, BNUM)
        Store (RSCL, B0SC)
        Store (RPWR, PWRS)
        Notify (BAT0, 0x81)
        PNOT ()
        If (LEqual (PRCP, One))
        {
            Notify (DOCK, Zero)
        }

        If (LEqual (WKSR, 0x02))
        {
            Notify (DOCK, One)
        }
    }
}

If the early-enabling of the EC is the reason, it looks to me as if one
or more of the STORE() operations is failing because the target hasn't
been declared in the ACPI name-space yet.

The call-chain looks to be:

drivers/acpi/ec.c::acpi_ec_transaction_unlocked()
 drivers/acpi/ec.c::acpi_ec_wait()

-- drivers/acpi/ec.c::acpi_ec_transaction_unlocked() --

for (; rdata_len > 0; --rdata_len) {
        result = acpi_ec_wait(ec, ACPI_EC_EVENT_OBF_1, force_poll);
        if (result) {
                pr_err(PREFIX "read timeout, command = %d\n", command);
                goto end;

--

-- acpi_ec_wait() --

if (likely(test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) && ...

...
        if (acpi_ec_check_status(ec, event)) {
...
        } else {
                /* missing GPEs, switch back to poll mode */
                if (printk_ratelimit())
                        pr_info(PREFIX "missing confirmations, "
                                "switch off interrupt mode.\n");
                clear_bit(EC_FLAGS_GPE_MODE, &ec->flags);
        }

I'll do an ACPI debug test on this and see where it is going wrong.

-- 
i386 Hardy boots only in recovery mode on VAIO FE41Z
https://bugs.launchpad.net/bugs/191137
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to