Defer ACPI taskqueue creation to SI_SUB_KICK_SCHEDULER.

This addresses a deadlock during boot when EARLY_AP_STARTUP is configured:
a taskqueue thread may call pause() with an ACPI mutex held, and thread0
may block on this mutex before configuring the eventtimer. In this case
the taskqueue thread will sleep forever waiting for its callout to fire.

PR:		220277
Submitted by:	jhb
MFC after:	3 days
This commit is contained in:
Mark Johnston 2017-07-05 17:39:17 +00:00
parent 8eb6488ebb
commit edab404aec

View File

@ -128,7 +128,7 @@ acpi_taskq_init(void *arg)
acpi_taskq_started = 1;
}
SYSINIT(acpi_taskq, SI_SUB_CONFIGURE, SI_ORDER_SECOND, acpi_taskq_init, NULL);
SYSINIT(acpi_taskq, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, acpi_taskq_init, NULL);
/*
* Bounce through this wrapper function since ACPI-CA doesn't understand