Acer Aspire 3620

Ariff Abdullah ariff at FreeBSD.org
Sun Oct 1 15:46:54 PDT 2006


On Sun, 01 Oct 2006 14:22:36 -0700
Nate Lawson <nate at root.org> wrote:
> Ariff Abdullah wrote:
> > On Fri, 29 Sep 2006 17:17:04 +0200
> > Bruno Ducrot <ducrot at poupinou.org> wrote:
> >> I'm a little bit annoyed by those errors:
> >>
> >> ACPI-0501: *** Error: Handler for [EmbeddedControl] returned
> >> AE_NO_HARDWARE_RESPONSE ACPI-1304: *** Error: Method execution
> >> failed [\\_SB_.PCI0.LPCB.EC0_.GBST] (Node 0xc325fbc0),
> >> AE_NO_HARDWARE_RESPONSE ACPI-1304: *** Error: Method execution
> >> failed [\\_SB_.PCI0.LPCB.EC0_.BAT0._BST] (Node 0xc325fa80),
> >> AE_NO_HARDWARE_RESPONSE
> >>
> >> I think this will break support for battery and maybe thermal
> >zone > and likely other stuff (though I'm not sure exacly what).
> >>
> >>
> > I guess kern/98171 is worth an attention. That at least fix my
> > problem on Compaq V3000.
> > 
> 
> The patch doesn't do what it claims to do.  First of all, burst mode
> 
> does not work right on some systems, which is why I didn't complete 
> implementing it.  Even on systems where it works, it seems slower
> than  the default method.  So the parts related to burst mode should
> not be  applied unless full support for burst mode is being
> implemented (i.e.  handling hardware-initiated exits from burst mode
> instead of ignoring them).
> 
... which, I agree.

> The part that probably has the actual effect is increasing the time
> that  the system waits for a response.  (Try this independent of the
> burst  mode changes to verify).  EC_POLL_DELAY is the time between
> reads of the  status register while waiting for a response.  But 1
> second is a  horrible amount of time to have the CPU busy-looping. 
> The default is 10  microseconds.  I'd be interested in seeing what
> other values also work  (i.e. 50 us?  100 us?)
> 
> What about not applying the patch and just increasing the overall 
> timeout period?  Set the tunable hw.acpi.ec.poll_timeout to the
> total  number of milliseconds (ms) to wait.  Does that fix it?  For
> what values?
> 

I've just decided to concentrate on this issue. Surpisingly, with just
a little hack, everything works smoothly (no more annoying messages,
battery status works):

--- acpi_ec.c

    /*
     * Poll the EC status register for up to 1 ms in chunks of 10 us 
     * to detect completion of the last command.
     */
+#if 0
    for (i = 0; i < 1000 / EC_POLL_DELAY; i++) {
	EcStatus = EC_GET_CSR(sc);
	if (EVENT_READY(Event, EcStatus)) {
	    Status = AE_OK;
	    break;
	}
	AcpiOsStall(EC_POLL_DELAY);
    }
+#endif
    period = i * EC_POLL_DELAY;
---

and that what makes it entering ec_poll_timeout loop below that.


--
Ariff Abdullah
FreeBSD

... Recording in stereo is obviously too advanced
    and confusing for us idiot ***** users :P ........
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-acpi/attachments/20061001/e997b4d8/attachment.pgp


More information about the freebsd-acpi mailing list