/* * Perhaps merge this into acpi_sleep_machdep */ static void __do_s0ix(struct acpi_softc *sc) { ACPI_STATUS status; /* * s0ix isn't exactly a sleep state since hardware handles a lot of the * processor context save and restore. We just need to make sure that we * are able to be woken up. */ MPASS(sc->acpi_wakeaddr != 0ul); critical_enter(); status = AcpiSetFirmwareWakingVector(sc->acpi_wakephys, 0); if (ACPI_FAILURE(status)) { device_printf(sc->acpi_dev, "Unable to setup wake vector before sleep - %s\n", AcpiFormatException(status)); critical_exit(); return; } acpi_cpu_idle_mwait(0); if (AcpiSetFirmwareWakingVector(0, 0)) { device_printf(sc->acpi_dev, "Unable to restore wake vector after sleep - %s\n", AcpiFormatException(status)); } critical_exit(); }