From: Alexey Y. Starikovskiy <alexey.y.starikovskiy@intel.com>
Date: Tue, 26 Sep 2006 08:18:16 +0000 (-0400)
Subject: ACPI: Remove deferred execution from global lock acquire wakeup path
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=fcfc638c6b1345b6646523dbab0065b36a868ffc;p=linux.git

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>
---

diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c
index 6eef4efddcf62..ee2a10bf90774 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)
 	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);