summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Grover <agrover@groveronline.com>2003-07-12 23:24:43 -0700
committerAndy Grover <agrover@groveronline.com>2003-07-12 23:24:43 -0700
commitf2baad268824a13f1f76ab8dfc11bacd313ecfa5 (patch)
tree24e449665582c6e0ceb12d7444b38975898f300f
parent7ebb7e5a20a01694701c68c4a19799d823cdf033 (diff)
ACPI: Correctly handle NMI watchdog during long stalls (Andrew Morton)
-rw-r--r--drivers/acpi/osl.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 33f53a1c0d91..192858a3f4d8 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -35,6 +35,7 @@
#include <linux/kmod.h>
#include <linux/delay.h>
#include <linux/workqueue.h>
+#include <linux/nmi.h>
#include <acpi/acpi.h>
#include <asm/io.h>
#include <acpi/acpi_bus.h>
@@ -291,11 +292,14 @@ acpi_os_sleep(u32 sec, u32 ms)
void
acpi_os_stall(u32 us)
{
- if (us > 10000) {
- mdelay(us / 1000);
- }
- else {
- udelay(us);
+ while (us) {
+ u32 delay = 1000;
+
+ if (delay > us)
+ delay = us;
+ udelay(delay);
+ touch_nmi_watchdog();
+ us -= delay;
}
}