ACPICA: Fix SyncLevel support interaction with method auto-serialization
ACPICA commit 253e3c03efc1a495d2aa61eee09ab1d0842a3dce
The control method auto-serialization can interfere with existing
ASL code that makes use of Mutex/Method SyncLevel support. This
change makes the auto-serialization transparent to the SyncLevel
support and management. David Box.
Link: 253e3c03
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
0e166e4f67
commit
33d3a2abbd
1 changed files with 13 additions and 2 deletions
|
|
@ -411,8 +411,19 @@ acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,
|
|||
|
||||
obj_desc->method.mutex->mutex.thread_id =
|
||||
walk_state->thread->thread_id;
|
||||
walk_state->thread->current_sync_level =
|
||||
obj_desc->method.sync_level;
|
||||
|
||||
/*
|
||||
* Update the current sync_level only if this is not an auto-
|
||||
* serialized method. In the auto case, we have to ignore
|
||||
* the sync level for the method mutex (created for the
|
||||
* auto-serialization) because we have no idea of what the
|
||||
* sync level should be. Therefore, just ignore it.
|
||||
*/
|
||||
if (!(obj_desc->method.info_flags &
|
||||
ACPI_METHOD_IGNORE_SYNC_LEVEL)) {
|
||||
walk_state->thread->current_sync_level =
|
||||
obj_desc->method.sync_level;
|
||||
}
|
||||
} else {
|
||||
obj_desc->method.mutex->mutex.
|
||||
original_sync_level =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue