Re: git: eeaa865edba6 - main - acpi: Fix setting sleep state sysctls to NONE
Date: Thu, 08 Jan 2026 13:23:38 UTC
On Thu, 8 Jan 2026 11:59:59 +0100
Emmanuel Vadot <manu@bidouilliste.com> wrote:
>
> Hello,
>
> On Fri, 28 Nov 2025 14:44:45 +0000
> Aymeric Wibo <obiwac@FreeBSD.org> wrote:
>
> > The branch main has been updated by obiwac:
> >
> > URL: https://cgit.FreeBSD.org/src/commit/?id=eeaa865edba685545ac22c378b35552e09bf1b41
> >
> > commit eeaa865edba685545ac22c378b35552e09bf1b41
> > Author: Aymeric Wibo <obiwac@FreeBSD.org>
> > AuthorDate: 2025-11-25 19:34:34 +0000
> > Commit: Aymeric Wibo <obiwac@FreeBSD.org>
> > CommitDate: 2025-11-28 14:42:54 +0000
> >
> > acpi: Fix setting sleep state sysctls to NONE
> >
> > This restores the functionality as it was pre-97d152698f48.
> >
> > A stopgap was committed by glebius@ in 34dfccc64f47 ("acpi: in
> > acpi_stype_sysctl() use same logic as in acpi_sleep_state_sysctl()").
> >
> > PR: 290651
> > Reviewed by: thj, emaste
> > Approved by: thj
> > Fixes: 97d152698f48 ("acpi: Use sleep types defined in sys/power.h")
> > Sponsored by: The FreeBSD Foundation
> > Differential Revision: https://reviews.freebsd.org/D53909
> > ---
> > sys/dev/acpica/acpi.c | 39 ++++++++++++++++++++++++---------------
> > 1 file changed, 24 insertions(+), 15 deletions(-)
> >
> > diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
> > index e3ff4f6937d2..99dd817f9158 100644
> > --- a/sys/dev/acpica/acpi.c
> > +++ b/sys/dev/acpica/acpi.c
> > @@ -4318,13 +4318,15 @@ acpi_sname_to_sstate(const char *sname)
> > {
> > int sstate;
> >
> > + if (strcasecmp(sname, "NONE") == 0)
> > + return (ACPI_STATE_UNKNOWN);
> > +
> > if (toupper(sname[0]) == 'S') {
> > sstate = sname[1] - '0';
> > if (sstate >= ACPI_STATE_S0 && sstate <= ACPI_STATE_S5 &&
> > sname[2] == '\0')
> > return (sstate);
> > - } else if (strcasecmp(sname, "NONE") == 0)
> > - return (ACPI_STATE_UNKNOWN);
> > + }
> > return (-1);
> > }
> >
> > @@ -4379,8 +4381,10 @@ acpi_suspend_state_sysctl(SYSCTL_HANDLER_ARGS)
> > if (new_sstate < 0)
> > return (EINVAL);
> > new_stype = acpi_sstate_to_stype(new_sstate);
> > - if (acpi_supported_stypes[new_stype] == false)
> > + if (new_sstate != ACPI_STATE_UNKNOWN &&
> > + acpi_supported_stypes[new_stype] == false)
> > return (EOPNOTSUPP);
> > +
> > if (new_stype != old_stype)
> > power_suspend_stype = new_stype;
> > return (err);
> > @@ -4423,21 +4427,26 @@ acpi_stype_sysctl(SYSCTL_HANDLER_ARGS)
> > if (err != 0 || req->newptr == NULL)
> > return (err);
> >
> > - new_stype = power_name_to_stype(name);
> > - if (new_stype == POWER_STYPE_UNKNOWN) {
> > - sstate = acpi_sname_to_sstate(name);
> > - if (sstate < 0)
> > - return (EINVAL);
> > - printf("warning: this sysctl expects a sleep type, but an ACPI S-state has "
> > - "been passed to it. This functionality is deprecated; see acpi(4).\n");
> > - if (sstate < ACPI_S_STATE_COUNT &&
> > - !acpi_supported_sstates[sstate])
> > + if (strcasecmp(name, "NONE") == 0) {
> > + new_stype = POWER_STYPE_UNKNOWN;
> > + } else {
> > + new_stype = power_name_to_stype(name);
> > + if (new_stype == POWER_STYPE_UNKNOWN) {
> > + sstate = acpi_sname_to_sstate(name);
> > + if (sstate < 0)
> > + return (EINVAL);
> > + printf("warning: this sysctl expects a sleep type, but an ACPI "
> > + "S-state has been passed to it. This functionality is "
> > + "deprecated; see acpi(4).\n");
> > + MPASS(sstate < ACPI_S_STATE_COUNT);
> > + if (acpi_supported_sstates[sstate] == false)
> > + return (EOPNOTSUPP);
> > + new_stype = acpi_sstate_to_stype(sstate);
> > + }
> > + if (acpi_supported_stypes[new_stype] == false)
> > return (EOPNOTSUPP);
> > - new_stype = acpi_sstate_to_stype(sstate);
> > }
> >
> > - if (acpi_supported_stypes[new_stype] == false)
> > - return (EOPNOTSUPP);
> > if (new_stype != old_stype)
> > *(enum power_stype *)oidp->oid_arg1 = new_stype;
> > return (0);
> >
>
> Since this commit I have the warning printed as I have the
> hw.acpi.lid_switch_state set to 'S3' in sysctl.conf, the man page says
> it's correct. Changing it to 'standby' doesn't work as the value isn't
> recognized.
> What is the correct way for this sysctl now ?
>
> Cheers,
Ok so the correct value is 's2mem' but this doesn't seems to be
documented anywhere in acpi(4) like the warning says.
--
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>