diff options
| author | Andy Grover <agrover@groveronline.com> | 2003-07-12 23:24:43 -0700 |
|---|---|---|
| committer | Andy Grover <agrover@groveronline.com> | 2003-07-12 23:24:43 -0700 |
| commit | f2baad268824a13f1f76ab8dfc11bacd313ecfa5 (patch) | |
| tree | 24e449665582c6e0ceb12d7444b38975898f300f | |
| parent | 7ebb7e5a20a01694701c68c4a19799d823cdf033 (diff) | |
ACPI: Correctly handle NMI watchdog during long stalls (Andrew Morton)
| -rw-r--r-- | drivers/acpi/osl.c | 14 |
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; } } |
