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