diff options
author | Alexey Y. Starikovskiy <alexey.y.starikovskiy@intel.com> | 2006-09-26 04:18:16 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-10-14 01:50:09 -0400 |
commit | fcfc638c6b1345b6646523dbab0065b36a868ffc (patch) | |
tree | 3355d5feeb47df2d7f3fef5a145b17b5f7a91055 /drivers/acpi/events | |
parent | b4bd8c66435a8cdf8c90334fb3b517a23ff2ab95 (diff) |
ACPI: Remove deferred execution from global lock acquire wakeup path
On acquiring the ACPI global lock, if there were sleepers on the lock,
we used to use acpi_os_execute() to defer a thread which would signal
sleepers. Now just signal the semaphore directly.
http://bugzilla.kernel.org/show_bug.cgi?id=5534#c159
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/events')
-rw-r--r-- | drivers/acpi/events/evmisc.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c index 6eef4efddcf6..ee2a10bf9077 100644 --- a/drivers/acpi/events/evmisc.c +++ b/drivers/acpi/events/evmisc.c | |||
@@ -342,20 +342,8 @@ static u32 acpi_ev_global_lock_handler(void *context) | |||
342 | if (acquired) { | 342 | if (acquired) { |
343 | 343 | ||
344 | /* Got the lock, now wake all threads waiting for it */ | 344 | /* Got the lock, now wake all threads waiting for it */ |
345 | |||
346 | acpi_gbl_global_lock_acquired = TRUE; | 345 | acpi_gbl_global_lock_acquired = TRUE; |
347 | 346 | acpi_ev_global_lock_thread(context); | |
348 | /* Run the Global Lock thread which will signal all waiting threads */ | ||
349 | |||
350 | status = | ||
351 | acpi_os_execute(OSL_GLOBAL_LOCK_HANDLER, | ||
352 | acpi_ev_global_lock_thread, context); | ||
353 | if (ACPI_FAILURE(status)) { | ||
354 | ACPI_EXCEPTION((AE_INFO, status, | ||
355 | "Could not queue Global Lock thread")); | ||
356 | |||
357 | return (ACPI_INTERRUPT_NOT_HANDLED); | ||
358 | } | ||
359 | } | 347 | } |
360 | 348 | ||
361 | return (ACPI_INTERRUPT_HANDLED); | 349 | return (ACPI_INTERRUPT_HANDLED); |