diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index ded1829..7e94791 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -278,7 +278,7 @@ TUNABLE_INT("debug.acpi.interpreter_slack", &acpi_interpreter_slack); SYSCTL_INT(_debug_acpi, OID_AUTO, interpreter_slack, CTLFLAG_RDTUN, &acpi_interpreter_slack, 1, "Turn on interpreter slack mode."); -#ifdef __amd64__ +#if defined(__amd64__) || defined(__i386__) /* Reset system clock while resuming. XXX Remove once tested. */ static int acpi_reset_clock = 1; TUNABLE_INT("debug.acpi.reset_clock", &acpi_reset_clock); @@ -2775,7 +2775,6 @@ acpi_EnterSleepState(struct acpi_softc *sc, int state) intr = intr_disable(); if (state != ACPI_STATE_S1) { sleep_result = acpi_sleep_machdep(sc, state); - acpi_wakeup_machdep(sc, state, sleep_result, 0); /* * XXX According to ACPI specification SCI_EN bit should be restored @@ -2814,6 +2813,7 @@ acpi_EnterSleepState(struct acpi_softc *sc, int state) } } + acpi_wakeup_machdep(sc, state, sleep_result, 0); intr_restore(intr); /* call acpi_wakeup_machdep() again with interrupt enabled */ @@ -2846,14 +2846,14 @@ backout: acpi_wake_prep_walk(state); sc->acpi_sstate = ACPI_STATE_S0; } - if (slp_state >= ACPI_SS_DEV_SUSPEND) - DEVICE_RESUME(root_bus); if (slp_state >= ACPI_SS_SLP_PREP) AcpiLeaveSleepState(state); if (slp_state >= ACPI_SS_SLEPT) { acpi_resync_clock(sc); acpi_enable_fixed_events(sc); } + if (slp_state >= ACPI_SS_DEV_SUSPEND) + DEVICE_RESUME(root_bus); sc->acpi_next_sstate = 0; mtx_unlock(&Giant); @@ -2879,7 +2879,7 @@ backout: static void acpi_resync_clock(struct acpi_softc *sc) { -#ifdef __amd64__ +#if defined(__amd64__) || defined(__i386__) if (!acpi_reset_clock) return;