ACPI: Remove deferred execution from global lock acquire wakeup path
authorAlexey Y. Starikovskiy <alexey.y.starikovskiy@intel.com>
Tue, 26 Sep 2006 08:18:16 +0000 (04:18 -0400)
committerLen Brown <len.brown@intel.com>
Sat, 14 Oct 2006 05:50:09 +0000 (01:50 -0400)
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>
drivers/acpi/events/evmisc.c

index 6eef4efddcf62b0f83fba9f2014b61403e4564fe..ee2a10bf907745ceef823a5d9a2ecd637ae51b2c 100644 (file)
@@ -342,20 +342,8 @@ static u32 acpi_ev_global_lock_handler(void *context)
        if (acquired) {
 
                /* Got the lock, now wake all threads waiting for it */
-
                acpi_gbl_global_lock_acquired = TRUE;
-
-               /* Run the Global Lock thread which will signal all waiting threads */
-
-               status =
-                   acpi_os_execute(OSL_GLOBAL_LOCK_HANDLER,
-                                   acpi_ev_global_lock_thread, context);
-               if (ACPI_FAILURE(status)) {
-                       ACPI_EXCEPTION((AE_INFO, status,
-                                       "Could not queue Global Lock thread"));
-
-                       return (ACPI_INTERRUPT_NOT_HANDLED);
-               }
+               acpi_ev_global_lock_thread(context);
        }
 
        return (ACPI_INTERRUPT_HANDLED);