suspend/resume event

Nate Lawson nate at root.org
Fri Jan 20 11:52:25 PST 2006


Manfred Lotz wrote:
> Hi there,
> With my Samsung X20 1730 suspend /resume works fine when doing
> acpiconf -s 3. I added /etc/rc.d/moused restart in /etc/rc.resume and
> the touchpad mouse gets awake after resuming. That's great.
> 
> However when closing the lid (I set hw.acpi.lid_switch_state=S3) and
> then pressing the power button although suspend/resume works
> fine the mouse won't get restarted. This means /etc/rc.resume and
> presumably /etc/rc.suspend won't get called in this case.
> 
> Same happen when pressing Fn-ESC the key for suspend.
> 
> How can I make sure /etc/rc.suspend as well as /etc/rc.resuem gets
> called in the "non-acpiconf" cases?

That's an implementation problem.  I think the right approach is to add 
a resume notification to devd.  That should be easy to do and I may look 
into it this weekend if no one submits a patch first.

It's harder to hook in the suspend path because we'd have to add a new 
path:  kernel notifies userland, waits for userland to complete 
rc.suspend, userland sends "go ahead" to kernel, and suspend actually 
happens.  apm had that but there's a problem if userland is not 
responsive.  The idea I came up with was to have an absolute timeout 
where after 30 seconds or something, the kernel gives up on userland and 
suspends anyway.  I started work on a patch to do this a while ago but 
it had some bugs I never got around to fixing.  One problem was multiple 
listeners (X11 server, rc.suspend, etc.) -- do you wait for all of them 
to ack the event before suspending?  I think so, but it's difficult to 
get all the cases right.

If someone wants to help finish this work, I'd be happy to supply the 
half-done patch.

-- 
Nate


More information about the freebsd-acpi mailing list