summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWu Fengguang <fengguang.wu@intel.com>2008-11-26 07:35:22 +0100
committerLen Brown <len.brown@intel.com>2008-12-19 10:38:33 +0100
commitabe1dfab60e1839d115930286cb421f5a5b193f3 (patch)
treee47757bf2fcd10086b64c623220138478a73e9db
parentACPI: fix 2.6.28 acpi.debug_level regression (diff)
downloadlinux-abe1dfab60e1839d115930286cb421f5a5b193f3.tar.xz
linux-abe1dfab60e1839d115930286cb421f5a5b193f3.zip
ACPI: don't cond_resched() when irqs_disabled()
The ACPI interpreter usually runs with irqs enabled. However, during suspend/resume it runs with irqs disabled to evaluate _GTS/_BFS, as well as by irqrouter_resume() which evaluates _CRS, _PRS, _SRS. http://bugzilla.kernel.org/show_bug.cgi?id=12252 Signed-off-by: Wu Fengguang <wfg@linux.intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r--include/acpi/platform/aclinux.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index 029c8c06c151..0515e754449d 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -141,6 +141,10 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * cache)
/*
* We need to show where it is safe to preempt execution of ACPICA
*/
-#define ACPI_PREEMPTION_POINT() cond_resched()
+#define ACPI_PREEMPTION_POINT() \
+ do { \
+ if (!irqs_disabled()) \
+ cond_resched(); \
+ } while (0)
#endif /* __ACLINUX_H__ */