summaryrefslogtreecommitdiffstats
path: root/sys/ia64/acpica
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2011-06-06 19:06:15 +0000
committermarcel <marcel@FreeBSD.org>2011-06-06 19:06:15 +0000
commitb85f2958405471837cf29da0149697935f47e464 (patch)
treeaa44b9eae54b3faaf88b0f579422ade75d862e10 /sys/ia64/acpica
parent2157ebafe521d9b08c3b5fc99e5f19eac4530377 (diff)
downloadFreeBSD-src-b85f2958405471837cf29da0149697935f47e464.zip
FreeBSD-src-b85f2958405471837cf29da0149697935f47e464.tar.gz
Improve cpu_idle():
o cpu_idle_hook is expected to be called with interrupts disabled and re-enables interrupts on return. o sync with x86: don't idle when the CPU has runnable tasks o have callers of ia64_call_pal_static() disable interrupts and re-enable interrupts. o add, but compile-out, support for idle mode. This will be enabled at some later time, after proper testing.
Diffstat (limited to 'sys/ia64/acpica')
-rw-r--r--sys/ia64/acpica/acpi_machdep.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/ia64/acpica/acpi_machdep.c b/sys/ia64/acpica/acpi_machdep.c
index b7b612f..1466cfe 100644
--- a/sys/ia64/acpica/acpi_machdep.c
+++ b/sys/ia64/acpica/acpi_machdep.c
@@ -56,7 +56,14 @@ acpi_machdep_quirks(int *quirks)
void
acpi_cpu_c1()
{
+#ifdef INVARIANTS
+ register_t ie;
+
+ ie = intr_disable();
+ KASSERT(ie == 0, ("%s called with interrupts enabled\n", __func__));
+#endif
ia64_call_pal_static(PAL_HALT_LIGHT, 0, 0, 0);
+ ia64_enable_intr();
}
void *
OpenPOWER on IntegriCloud