From: Len Brown <len.brown@intel.com>
To: linux-acpi@vger.kernel.org
Cc: Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com>,
Len Brown <len.brown@intel.com>
Subject: [PATCH 06/20] ACPICA: Fix ACPI Global Lock re-entrancy
Date: Fri, 9 Mar 2007 22:49:24 -0500 [thread overview]
Message-ID: <11734985831806-git-send-email-len.brown@intel.com> (raw)
Message-ID: <610a3d069665ba2b27e42c90129ce640c4d6e515.1173498420.git.len.brown@intel.com> (raw)
In-Reply-To: <11734985822425-git-send-email-len.brown@intel.com>
In-Reply-To: <7292576043666ff39946dee14641fe719ba8c7e8.1173498420.git.len.brown@intel.com>
From: Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com>
patch "Delete recursive feature of ACPI Global Lock"
broke re-entrancy of the Global Lock.
The common routine to acquire GL is acpi_ev_acquire_global_lock,
so check for re-entrancy _must_ be there, and not anywhere else.
http://bugzilla.kernel.org/show_bug.cgi?id=8066#c9
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
drivers/acpi/events/evmisc.c | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c
index d572700..8dcade6 100644
--- a/drivers/acpi/events/evmisc.c
+++ b/drivers/acpi/events/evmisc.c
@@ -423,6 +423,8 @@ static acpi_status acpi_ev_remove_global_lock_handler(void)
* the global lock appear as a standard mutex on the OS side.
*
*****************************************************************************/
+static acpi_thread_id acpi_ev_global_lock_thread_id;
+static int acpi_ev_global_lock_acquired;
acpi_status acpi_ev_acquire_global_lock(u16 timeout)
{
@@ -435,11 +437,24 @@ acpi_status acpi_ev_acquire_global_lock(u16 timeout)
* Only one thread can acquire the GL at a time, the global_lock_mutex
* enforces this. This interface releases the interpreter if we must wait.
*/
- status = acpi_ex_system_wait_mutex(acpi_gbl_global_lock_mutex, timeout);
+ status = acpi_ex_system_wait_mutex(acpi_gbl_global_lock_mutex, 0);
+ if (status == AE_TIME) {
+ if (acpi_ev_global_lock_thread_id == acpi_os_get_thread_id()) {
+ acpi_ev_global_lock_acquired++;
+ return AE_OK;
+ }
+ }
+
+ if (ACPI_FAILURE(status)) {
+ status = acpi_ex_system_wait_mutex(acpi_gbl_global_lock_mutex, timeout);
+ }
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
+ acpi_ev_global_lock_thread_id = acpi_os_get_thread_id();
+ acpi_ev_global_lock_acquired++;
+
/*
* Make sure that a global lock actually exists. If not, just treat
* the lock as a standard mutex.
@@ -506,6 +521,11 @@ acpi_status acpi_ev_release_global_lock(void)
return_ACPI_STATUS(AE_NOT_ACQUIRED);
}
+ acpi_ev_global_lock_acquired--;
+ if (acpi_ev_global_lock_acquired > 0) {
+ return AE_OK;
+ }
+
if (acpi_gbl_global_lock_present) {
/* Allow any thread to release the lock */
@@ -529,7 +549,8 @@ acpi_status acpi_ev_release_global_lock(void)
acpi_gbl_global_lock_acquired = FALSE;
/* Release the local GL mutex */
-
+ acpi_ev_global_lock_thread_id = 0;
+ acpi_ev_global_lock_acquired = 0;
acpi_os_release_mutex(acpi_gbl_global_lock_mutex);
return_ACPI_STATUS(status);
}
--
1.5.0.3.310.g05ef5
next prev parent reply other threads:[~2007-03-10 3:49 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-10 3:49 ACPI patches for release to 2.6.21-rc Len Brown
2007-03-10 3:49 ` [PATCH 01/20] ACPI: fix S3 fan resume issue Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 02/20] ACPI: ibm-acpi: fix initial status of backlight device Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 03/20] ACPI: ibm-acpi: make ibm-acpi bay support optional Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 04/20] ACPI: Altix: cannot register acpi bus driver before bus scan Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 05/20] ACPI: Altix: reinitialize acpi tables Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` Len Brown [this message]
2007-03-10 3:49 ` [PATCH 06/20] ACPICA: Fix ACPI Global Lock re-entrancy Len Brown
2007-03-10 3:49 ` [PATCH 07/20] sony-laptop: fix uninitialised variable Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 08/20] ACPI: Add kernel-parameters hint that acpi=off doesn't work on IA64 Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 09/20] ACPI: ThinkPad Z60m: usb mouse stops working after suspend to RAM Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 10/20] ACPI: ec: fix race in status register access Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 7:29 ` Alexey Starikovskiy
2007-03-10 7:34 ` Len Brown
2007-03-10 3:49 ` [PATCH 11/20] ACPI: fix Thinkpad 600/600E/600X interrupts Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 12/20] ACPI: fix boot hang w/o "noapic" on MSI MS-6390-L Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 13/20] ACPI: ibm-acpi: improve backlight power handling Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 14/20] ACPI: fix parallel port IRQ after resume from S3 Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 15/20] ACPI: repair nvidia early quirk breakage on x86_64 Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 16/20] libata-acpi: allow _GTF on SATA, but disable on PATA for now Len Brown
2007-03-10 3:49 ` Len Brown
[not found] ` <117349 85922550-git-send-email-len.brown@intel.com>
2007-03-10 3:49 ` [PATCH 17/20] asus-laptop: make code static Len Brown
2007-03-10 3:49 ` Len Brown
2007-03-10 3:49 ` [PATCH 19/20] ACPI: video: Fix spelling and grammar mistakes Len Brown
2007-03-10 3:49 ` Len Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11734985831806-git-send-email-len.brown@intel.com \
--to=len.brown@intel.com \
--cc=alexey.y.starikovskiy@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.