PATCH: ecng for 6.x and 7.x

Nate Lawson nate at root.org
Tue Sep 11 11:32:35 PDT 2007


William Grzybowski wrote:
> On 9/6/07, *Nate Lawson* <nate at root.org <mailto:nate at root.org>> wrote:
> 
>     Nate Lawson wrote:
>     > I've done some major rework on the EC driver.  This should help with
>     > various problems, including timeouts while checking battery status or
>     > temperature.  The attached patches are for 6.x and 7.x.  Please
>     test and
>     > let me know if you get any new errors on dmesg or if it fixes
>     things for
>     > you (especially HP/Compaq laptop owners).
>     >
>     > If you still have problems, try setting each of these tunables
>     > individually and then both together (i.e., in
>     /boot/loader.conf).  Note
>     > that this will be four (4) test runs total, so don't just set both and
>     > say it doesn't work.
>     >
>     > debug.acpi.ec.burst= "1"
>     > debug.acpi.ec.polled="1"
>     >
>     > I've tested both patches on a Panasonic Y4 and UnnamedOEM laptop, no
>     > problems in either regular or burst mode.
>     >
>     >
>     > Commit message:
>     > Rewrite the EC driver event model.  The main goal is to avoid
>     > polling/interrupt-driven fallback and instead use polling only during
>     > boot and pure interrupt-driven mode after boot.  Polled mode could be
>     > relegated completely to a legacy role if we could enable interrupts
>     > during boot.  Polled mode can be forced after boot by setting
>     > debug.acpi.ec.polled="1", i.e. if there are timeouts.
> 
>     One minor note -- power off shutdown (shutdown/halt -p) is turned into a
>     (safe) reboot with this patch.  I have tested the fix, which is just to
>     force polled mode during shutdown as well.  I don't have time to
>     re-roll
>     the patch today but will send tomorrow.
> 
>     Please test the patch as posted, ignoring that minor issue.  The test
>     results during normal use are still valid.
> 
> 
> Hi Nate,
> 
> I tested this patch on my acer notebook (intel chipset) and i did not
> notice any changes, unless some errors on dmesg, like:
> acpi_ec0: EcCommand: no response to 0x84
> acpi_ec0: GPE query failed: AE_NO_HARDWARE_RESPONSE
> acpi_ec0: EcCommand: no response to 0x82
> acpi_ec0: EcCommand: no response to 0x80
> ACPI Error (psparse-0626): Method parse/execution failed
> [\\_TZ_.THRM._TMP] (Node 0xc3bbdcc0), AE_NO_HARDWARE_RESPONSE
> ACPI Error (psparse-0626): Method parse/execution failed
> [\\_SB_.ACAD._PSR] (Node 0xc3bc02a0), AE_NO_HARDWARE_RESPONSE

As I noted before, your system enters the poll loop with the status
appearing to be already complete.  Can you get back to me on my previous
questions, especially whether forcing polled mode works for you?  I
didn't see any errors in that dmesg case.

I've updated the patches to do one final check if the interrupt-driven
mode gets a timeout.  If the status is complete, it will force the
system back into polled mode since interrupt mode doesn't work.  It also
has a case for polled mode during boot where the status appears to be
already complete.  It waits a short while before actually checking the
status, just in case the EC is really slow and hasn't gotten to work on
the new request yet.

Give it a try also, with no tunables set.

-Nate
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ecng-6c.diff
Type: text/x-patch
Size: 32295 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20070911/7d6377c0/ecng-6c.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ecng-7c.diff
Type: text/x-patch
Size: 28316 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20070911/7d6377c0/ecng-7c.bin


More information about the freebsd-current mailing list