From 7d6f2026bbb61a5f2dd848b7e7f9eef0c3af1fce Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Wed, 26 May 2010 11:22:41 +0800 Subject: [PATCH] --- yaml --- r: 200396 b: refs/heads/master c: 9cbfa18e8a7b34a32eddbd914a07f085962f50a8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/acpi/acpica/acconfig.h | 4 ++++ trunk/drivers/acpi/acpica/exsystem.c | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d24fc651e3b8..7cb5b30450bc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d70326689b70b35527765bd3decbb1229459e928 +refs/heads/master: 9cbfa18e8a7b34a32eddbd914a07f085962f50a8 diff --git a/trunk/drivers/acpi/acpica/acconfig.h b/trunk/drivers/acpi/acpica/acconfig.h index 33181ad350d5..b17d8de9f6ff 100644 --- a/trunk/drivers/acpi/acpica/acconfig.h +++ b/trunk/drivers/acpi/acpica/acconfig.h @@ -119,6 +119,10 @@ #define ACPI_MAX_LOOP_ITERATIONS 0xFFFF +/* Maximum sleep allowed via Sleep() operator */ + +#define ACPI_MAX_SLEEP 20000 /* Two seconds */ + /****************************************************************************** * * ACPI Specification constants (Do not change unless the specification changes) diff --git a/trunk/drivers/acpi/acpica/exsystem.c b/trunk/drivers/acpi/acpica/exsystem.c index 6d32e09327f1..675aaa91a770 100644 --- a/trunk/drivers/acpi/acpica/exsystem.c +++ b/trunk/drivers/acpi/acpica/exsystem.c @@ -201,6 +201,14 @@ acpi_status acpi_ex_system_do_sleep(u64 how_long) acpi_ex_relinquish_interpreter(); + /* + * For compatibility with other ACPI implementations and to prevent + * accidental deep sleeps, limit the sleep time to something reasonable. + */ + if (how_long > ACPI_MAX_SLEEP) { + how_long = ACPI_MAX_SLEEP; + } + acpi_os_sleep(how_long); /* And now we must get the interpreter again */