Re: git: a25cfcab9a9d - main - linuxkpi: Support s2idle in `pm_suspend_target_state`
Date: Mon, 06 Oct 2025 22:17:35 UTC
On 6 Oct 2025, at 23:02, Bjoern A. Zeeb <bz@freebsd.org> wrote: > > On Mon, 6 Oct 2025, Aymeric Wibo wrote: > >> The branch main has been updated by obiwac: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=a25cfcab9a9d2c7d733b85bf04b504369623de1c >> >> commit a25cfcab9a9d2c7d733b85bf04b504369623de1c >> Author: Aymeric Wibo <obiwac@FreeBSD.org> >> AuthorDate: 2025-10-06 21:38:58 +0000 >> Commit: Aymeric Wibo <obiwac@FreeBSD.org> >> CommitDate: 2025-10-06 21:49:54 +0000 >> >> linuxkpi: Support s2idle in `pm_suspend_target_state` >> >> When going to s2idle, set Linux' pm_suspend_target_state to >> PM_SUSPEND_TO_IDLE instead of setting PM_SUSPEND_MEM (for S3) in all >> cases. >> >> This is necessary because more recent versions of the amdgpu DRM drivers >> have different paths for when entering s2idle & S0ix is supported than >> S3. >> >> Reviewed by: bz >> Approved by: bz > > I cannot apporve them; I am neither a mentor, srcmgr, re, or other entity in this case. Having a src commit bit not under mentorship is enough. Jessica > But thank you for splitting them up into two logical chunks (with the only bit that adding > the enum here should have been part of the other half so each of them would have compiled > independently). > > >> Sponsored by: The FreeBSD Foundation >> Differential Revision: https://reviews.freebsd.org/D51591 >> --- >> sys/compat/linuxkpi/common/src/linux_acpi.c | 30 +++++++++++++++++++---------- >> 1 file changed, 20 insertions(+), 10 deletions(-) >> >> diff --git a/sys/compat/linuxkpi/common/src/linux_acpi.c b/sys/compat/linuxkpi/common/src/linux_acpi.c >> index 60e14cfc98c5..c7d62c745c7e 100644 >> --- a/sys/compat/linuxkpi/common/src/linux_acpi.c >> +++ b/sys/compat/linuxkpi/common/src/linux_acpi.c >> @@ -119,17 +119,27 @@ acpi_evaluate_dsm(ACPI_HANDLE ObjHandle, const guid_t *guid, >> } >> >> static void >> -linux_handle_power_suspend_event(void *arg __unused, >> - enum power_stype stype __unused) >> +linux_handle_power_suspend_event(void *arg __unused, enum power_stype stype) >> { >> - /* >> - * Only support S3 for now. >> - * acpi_sleep_event isn't always called so we use power_suspend_early >> - * instead which means we don't know what state we're switching to. >> - * TODO: Make acpi_sleep_event consistent >> - */ >> - linux_acpi_target_sleep_state = ACPI_STATE_S3; >> - pm_suspend_target_state = PM_SUSPEND_MEM; >> + switch (stype) { >> + case POWER_STYPE_SUSPEND_TO_IDLE: >> + /* >> + * XXX: obiwac Not 100% sure this is correct, but >> + * acpi_target_sleep_state does seem to be set to >> + * ACPI_STATE_S3 during s2idle on Linux. >> + */ >> + linux_acpi_target_sleep_state = ACPI_STATE_S3; >> + pm_suspend_target_state = PM_SUSPEND_TO_IDLE; >> + break; >> + case POWER_STYPE_SUSPEND_TO_MEM: >> + linux_acpi_target_sleep_state = ACPI_STATE_S3; >> + pm_suspend_target_state = PM_SUSPEND_MEM; >> + break; >> + default: >> + printf("%s: sleep type %d not yet supported\n", >> + __func__, stype); >> + break; >> + } >> } >> >> static void >> > > -- > Bjoern A. Zeeb r15:7