acpiconf -s 3 does not call acpi sleep event handlers

Johannes Lundberg johalun0 at gmail.com
Wed Aug 1 21:49:02 UTC 2018


On Wed, Aug 1, 2018 at 9:15 PM Conrad Meyer <cem at freebsd.org> wrote:

> It seems deliberate, although the commit message does not call it out
> and the event is perhaps poorly named.  The event currently indicates
> that the lid was closed.  And the final registered eventhandler for
> the event calls ReqSleepState.
>
> The ReqSleepState routine, as well as the userspace ioctl that
> 'acpiconf -s' uses (which just invokes ReqSleepState directly, rather
> than invoking the acpi sleep event), were introduced together in
> r170976.
>
>
Unless there's a way of calling suspend properly from the cli (zzz uses
acpiconf...) maybe something like this makes more sense to get the same
behavior on for example lid close as zzz or acpiconf -s 3? (untested)

diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index c1bfd880c89..87b506d6bf5 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -3700,7 +3700,8 @@ acpiioctl(struct cdev *dev, u_long cmd, caddr_t addr,
int flag, struct thread *t
     case ACPIIO_REQSLPSTATE:
        state = *(int *)addr;
        if (state != ACPI_STATE_S5)
-           return (acpi_ReqSleepState(sc, state));
+               return ACPI_SUCCESS(AcpiOsExecute(OSL_NOTIFY_HANDLER,
+                       acpi_invoke_sleep_eventhandler, &state)) ? 0 :
ENXIO;
        device_printf(sc->acpi_dev, "power off via acpi ioctl not
supported\n");
        error = EOPNOTSUPP;
        break;



> Best,
> Conrad
>
> On Wed, Aug 1, 2018 at 8:05 AM, Johannes Lundberg <johalun0 at gmail.com>
> wrote:
> > Hi
> >
> > As the title says, callbacks registered with
> > EVENTHANDLER_REGISTER(acpi_sleep_event, ....
> > does not get called when calling acpiconf -s 3.
> > They do however, when suspending with lid or sleep button.
> >
> > Is this deliberate or an oversight?
> >
> > Cheers
> > _______________________________________________
> > freebsd-current at freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-current
> > To unsubscribe, send any mail to "
> freebsd-current-unsubscribe at freebsd.org"
>


More information about the freebsd-current mailing list