aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/acpica
diff options
context:
space:
mode:
authorNate Lawson <njl@FreeBSD.org>2007-11-02 17:29:36 +0000
committerNate Lawson <njl@FreeBSD.org>2007-11-02 17:29:36 +0000
commitcc3c11f9c9fb2e9b6062bfbbc440bffeef523936 (patch)
treed2bccca6a36002796e64be6a904bf3b8a0962878 /sys/dev/acpica
parent1d916e2c71a5fe75c1510c35589f81a0cc2776fb (diff)
Notes
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r--sys/dev/acpica/acpi_cpu.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c
index 324f0a430cb9..eb5ce530e0e7 100644
--- a/sys/dev/acpica/acpi_cpu.c
+++ b/sys/dev/acpica/acpi_cpu.c
@@ -501,12 +501,14 @@ acpi_cpu_shutdown(device_t dev)
/* Allow children to shutdown first. */
bus_generic_shutdown(dev);
- /* Disable any entry to the idle function. */
+ /*
+ * Disable any entry to the idle function. There is a small race where
+ * an idle thread have passed this check but not gone to sleep. This
+ * is ok since device_shutdown() does not free the softc, otherwise
+ * we'd have to be sure all threads were evicted before returning.
+ */
cpu_disable_idle = TRUE;
- /* Signal and wait for all processors to exit acpi_cpu_idle(). */
- smp_rendezvous(NULL, NULL, NULL, NULL);
-
return_VALUE (0);
}