Date: Thu, 8 Jan 2026 14:23:38 +0100 From: Emmanuel Vadot <manu@bidouilliste.com> To: Aymeric Wibo <obiwac@FreeBSD.org> Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: eeaa865edba6 - main - acpi: Fix setting sleep state sysctls to NONE Message-ID: <20260108142338.548865cf1cd31fb18d2b6a2a@bidouilliste.com> In-Reply-To: <20260108115959.4bc9493930ce880913058e5c@bidouilliste.com> References: <6929b55d.2b59a.8a970bd@gitrepo.freebsd.org> <20260108115959.4bc9493930ce880913058e5c@bidouilliste.com>
index | next in thread | previous in thread | raw e-mail
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>home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20260108142338.548865cf1cd31fb18d2b6a2a>
