From: Moore, Robert
Sent: Monday, April 17, 2017 12:28 PM
To: 'Guenter Roeck' <linux(a)roeck-us.net>; Zheng, Lv
Cc: Wysocki, Rafael J <rafael.j.wysocki(a)intel.com>; 'Len Brown'
<lenb(a)kernel.org>; 'linux-acpi(a)vger.kernel.org' <linux-
acpi(a)vger.kernel.org>; 'devel(a)acpica.org' <devel(a)acpica.org>;
kernel(a)vger.kernel.org' <linux-kernel(a)vger.kernel.org>; Box, David E
Subject: RE: [PATCH] ACPICA: Export mutex functions
> -----Original Message-----
> From: Moore, Robert
> Sent: Monday, April 17, 2017 10:13 AM
> To: Guenter Roeck <linux(a)roeck-us.net>; Zheng, Lv <lv.zheng(a)intel.com>
> Cc: Wysocki, Rafael J <rafael.j.wysocki(a)intel.com>; Len Brown
> <lenb(a)kernel.org>; linux-acpi(a)vger.kernel.org; devel(a)acpica.org;
> linux- kernel(a)vger.kernel.org
> Subject: RE: [PATCH] ACPICA: Export mutex functions
> There is a model for the drivers to directly acquire an AML mutex
> object. That is why the acquire/release public interfaces were added
> to ACPICA.
> I forget all of the details, but the model was developed with MS and
> others during the ACPI 6.0 timeframe.
Here is the case where the OS may need to directly acquire an AML mutex:
From the ACPI spec:
19.6.2 Acquire (Acquire a Mutex)
Note: For Mutex objects referenced by a _DLM object, the host OS may
also contend for ownership.
Other than this case, the OS/drivers should never need to directly
acquire an AML mutex.
Here is more information, from the ACPICA reference:
This function is intended to be used in conjunction with the _DLM (Device Lock Method)
predefined name to directly acquire a mutex object that is defined in the ACPI namespace.
The purpose of this is to provide a mutual exclusion mechanism between the AML interpreter
and an ACPI-related device driver, in order to support multiple-operation transactions.
From the ACPI Specification: "The _DLM object appears in a device
scope when AML access to the device must be synchronized with the OS environment. It is
used in conjunction with a standard Mutex object. With _DLM, the standard Mutex provides
synchronization within the AML environment as usual, but also synchronizes with the OS
The AML mutex node is pointed to by Parent:Pathname. Either the Parent or the Pathname can
be NULL, but not both.
If the operation fails an appropriate status will be returned.