Skip to content

Commit a25cfca

Browse files
committed
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 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51591
1 parent fc2ed9d commit a25cfca

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

sys/compat/linuxkpi/common/src/linux_acpi.c

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,27 @@ acpi_evaluate_dsm(ACPI_HANDLE ObjHandle, const guid_t *guid,
119119
}
120120

121121
static void
122-
linux_handle_power_suspend_event(void *arg __unused,
123-
enum power_stype stype __unused)
122+
linux_handle_power_suspend_event(void *arg __unused, enum power_stype stype)
124123
{
125-
/*
126-
* Only support S3 for now.
127-
* acpi_sleep_event isn't always called so we use power_suspend_early
128-
* instead which means we don't know what state we're switching to.
129-
* TODO: Make acpi_sleep_event consistent
130-
*/
131-
linux_acpi_target_sleep_state = ACPI_STATE_S3;
132-
pm_suspend_target_state = PM_SUSPEND_MEM;
124+
switch (stype) {
125+
case POWER_STYPE_SUSPEND_TO_IDLE:
126+
/*
127+
* XXX: obiwac Not 100% sure this is correct, but
128+
* acpi_target_sleep_state does seem to be set to
129+
* ACPI_STATE_S3 during s2idle on Linux.
130+
*/
131+
linux_acpi_target_sleep_state = ACPI_STATE_S3;
132+
pm_suspend_target_state = PM_SUSPEND_TO_IDLE;
133+
break;
134+
case POWER_STYPE_SUSPEND_TO_MEM:
135+
linux_acpi_target_sleep_state = ACPI_STATE_S3;
136+
pm_suspend_target_state = PM_SUSPEND_MEM;
137+
break;
138+
default:
139+
printf("%s: sleep type %d not yet supported\n",
140+
__func__, stype);
141+
break;
142+
}
133143
}
134144

135145
static void

0 commit comments

Comments
 (0)