aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/acpica/Osd
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/acpica/Osd')
-rw-r--r--sys/dev/acpica/Osd/OsdHardware.c13
-rw-r--r--sys/dev/acpica/Osd/OsdSchedule.c6
2 files changed, 14 insertions, 5 deletions
diff --git a/sys/dev/acpica/Osd/OsdHardware.c b/sys/dev/acpica/Osd/OsdHardware.c
index fbaf76d2a91a..4252cbc63222 100644
--- a/sys/dev/acpica/Osd/OsdHardware.c
+++ b/sys/dev/acpica/Osd/OsdHardware.c
@@ -37,6 +37,8 @@
extern int acpi_susp_bounce;
+int (*acpi_prepare_sleep)(uint8_t state, uint32_t a, uint32_t b, bool ext);
+
ACPI_STATUS
AcpiOsEnterSleep(UINT8 SleepState, UINT32 RegaValue, UINT32 RegbValue)
{
@@ -45,6 +47,17 @@ AcpiOsEnterSleep(UINT8 SleepState, UINT32 RegaValue, UINT32 RegbValue)
if (acpi_susp_bounce)
return (AE_CTRL_TERMINATE);
+ if (acpi_prepare_sleep != NULL)
+ {
+ int ret = acpi_prepare_sleep(SleepState, RegaValue, RegbValue,
+ ACPI_REDUCED_HARDWARE ? true : AcpiGbl_ReducedHardware);
+
+ if (ret < 0)
+ return (AE_ERROR);
+ if (ret > 0)
+ return (AE_CTRL_TERMINATE);
+ }
+
return (AE_OK);
}
diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c
index 0c5eadb87687..f0464709e8ad 100644
--- a/sys/dev/acpica/Osd/OsdSchedule.c
+++ b/sys/dev/acpica/Osd/OsdSchedule.c
@@ -35,7 +35,6 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
-#include <sys/cpuset.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
#include <sys/malloc.h>
@@ -110,13 +109,10 @@ static void
acpi_taskq_init(void *arg)
{
int i;
- /* XXX Currently assuming BSP is CPU0. */
- cpuset_t just_bsp = CPUSET_T_INITIALIZER(0x1);
acpi_taskq = taskqueue_create_fast("acpi_task", M_NOWAIT,
&taskqueue_thread_enqueue, &acpi_taskq);
- taskqueue_start_threads_cpuset(&acpi_taskq, acpi_max_threads, PWAIT,
- &just_bsp, "acpi_task");
+ taskqueue_start_threads(&acpi_taskq, acpi_max_threads, PWAIT, "acpi_task");
if (acpi_task_count > 0) {
if (bootverbose)
printf("AcpiOsExecute: enqueue %d pending tasks\n",