Page MenuHomeFreeBSD

D48735.diff
No OneTemporary

D48735.diff

diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -3309,8 +3309,9 @@
ACPI_SS_NONE = 0,
ACPI_SS_GPE_SET = 1 << 0,
ACPI_SS_DEV_SUSPEND = 1 << 1,
- ACPI_SS_SLP_PREP = 1 << 2,
- ACPI_SS_SLEPT = 1 << 3,
+ ACPI_SS_SPMC_ENTER = 1 << 2,
+ ACPI_SS_SLP_PREP = 1 << 3,
+ ACPI_SS_SLEPT = 1 << 4,
};
static void
@@ -3506,6 +3507,14 @@
slp_state |= ACPI_SS_DEV_SUSPEND;
AcpiOsSleep(1000);
+ if (sc->acpi_spmc_device != NULL) {
+ MPASS(sc->acpi_spmc_enter != NULL);
+ if (sc->acpi_spmc_enter(sc->acpi_spmc_device) != 0)
+ device_printf(sc->acpi_dev, "failed to run SPMC entry\n");
+ else
+ slp_state |= ACPI_SS_SPMC_ENTER;
+ }
+
if (stype != STYPE_SUSPEND_TO_IDLE) {
status = AcpiEnterSleepStatePrep(stype);
if (ACPI_FAILURE(status)) {
@@ -3558,6 +3567,13 @@
sc->acpi_stype = STYPE_AWAKE;
slp_state &= ~ACPI_SS_GPE_SET;
}
+ if (slp_state & ACPI_SS_SPMC_ENTER) {
+ MPASS(sc->acpi_spmc_device != NULL);
+ MPASS(sc->acpi_spmc_exit != NULL);
+ if (sc->acpi_spmc_exit(sc->acpi_spmc_device) != 0)
+ device_printf(sc->acpi_dev, "failed to run SPMC exit\n");
+ slp_state &= ~ACPI_SS_SPMC_ENTER;
+ }
if (slp_state & ACPI_SS_DEV_SUSPEND) {
DEVICE_RESUME(root_bus);
slp_state &= ~ACPI_SS_DEV_SUSPEND;

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 7, 4:49 PM (4 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16369009
Default Alt Text
D48735.diff (1 KB)

Event Timeline