[PATCH v6 6/6] ACPI: make sure ECs do not use the ACPI global lock

Rafael J. Wysocki rjw at rjwysocki.net
Fri Jan 10 18:33:50 EST 2014


On Friday, January 10, 2014 03:52:20 PM al.stone at linaro.org wrote:
> From: Al Stone <al.stone at linaro.org>
> 
> ACPI ECs (Embedded Controllers) are allowed to use the ACPI global
> lock in legacy mode.  Since there is no global lock in hardware
> reduced mode, make sure that ECs cannot inadvertently use it with
> older ACPI tables that may have defined an _GLK method for the
> EC device.  Since an individual lock can and should be defined for
> each EC, access to each EC should still be properly controlled.
> 
> Signed-off-by: Al Stone <al.stone at linaro.org>
> ---
>  drivers/acpi/ec.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> index ba5b56d..3f15110 100644
> --- a/drivers/acpi/ec.c
> +++ b/drivers/acpi/ec.c
> @@ -745,9 +745,17 @@ ec_parse_device(acpi_handle handle, u32 Level, void *context, void **retval)
>  	if (ACPI_FAILURE(status))
>  		return status;
>  	ec->gpe = tmp;
> -	/* Use the global lock for all EC transactions? */
> +	/*
> +	 * Use the global lock for all EC transactions?
> +	 *
> +	 * If ACPI is in hardware reduced mode, there is no global lock.
> +	 * If a _GLK method is defined, it needs to be ignored, just
> +	 * in case it returns "true", which could happen if the ASL is
> +	 * written incorrectly.

What is going to happen if it is defined and works correctly in turn?

> +	 */
>  	tmp = 0;
> -	acpi_evaluate_integer(handle, "_GLK", NULL, &tmp);
> +	if (!acpi_gbl_reduced_hardware)
> +		acpi_evaluate_integer(handle, "_GLK", NULL, &tmp);
>  	ec->global_lock = tmp;
>  	ec->handle = handle;
>  	return AE_CTRL_TERMINATE;
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.



More information about the linux-arm-kernel mailing list