[PATCH] acpi: method: ignore _WAK return values

IvanHu ivan.hu at canonical.com
Thu Dec 20 02:28:43 UTC 2012


On 12/13/2012 02:27 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> The kernel doesn't care about the returned values from _WAK so let's
> not get too fussy about checking these.  Most firmware seems to do this
> wrong anyway, so it's not helpful to flag up an error when the kernel
> doesn't care either.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>   src/acpi/method/method.c | 35 ++---------------------------------
>   1 file changed, 2 insertions(+), 33 deletions(-)
>
> diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
> index a8669f2..be274b9 100644
> --- a/src/acpi/method/method.c
> +++ b/src/acpi/method/method.c
> @@ -3414,9 +3414,10 @@ static void method_test_WAK_return(
>   	ACPI_OBJECT *obj,
>   	void *private)
>   {
> -	uint32_t Sstate = *(uint32_t*)private;
>   	int failed = 0;
>
> +	FWTS_UNUSED(private);
> +
>   	if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) == FWTS_OK) {
>   		fwts_method_dump_object(fw, obj);
>
> @@ -3439,38 +3440,6 @@ static void method_test_WAK_return(
>   				fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>   				failed++;
>   			}
> -			else {
> -				if (obj->Package.Elements[0].Integer.Value > 0x00000002) {
> -					fwts_failed(fw, LOG_LEVEL_MEDIUM,
> -						"Method_WAKBitField",
> -						"_WAK: expecting condition "
> -						"bit-field (element 0) of "
> -						"packages to be in range, "
> -						"got 0x%8.8" PRIx64 ".",
> -						obj->Package.Elements[0].Integer.Value);
> -					fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
> -					failed++;
> -				}
> -				if (!(
> -				    ((obj->Package.Elements[1].Integer.Value == Sstate) && (obj->Package.Elements[0].Integer.Value == 0)) ||
> -                                    ((obj->Package.Elements[1].Integer.Value == 0) && (obj->Package.Elements[0].Integer.Value != 0)) )) {
> -					fwts_warning(fw,
> -						"_WAK: expecting power supply S-state (element 1) "
> -						"of packages to be 0x%8.8" PRIx32
> -						", got 0x%8.8" PRIx64 ".",
> -						Sstate, obj->Package.Elements[0].Integer.Value);
> -					fwts_advice(fw, "_WAK should return 0 if the wake failed and was unsuccessful (i.e. element[0] "
> -							"is non-zero) OR should return the S-state. "
> -							"This can confuse the operating system as this _WAK return indicates that the "
> -							"S-state was not entered because of too much current being drawn from the "
> -							"power supply, however, the BIOS may have actually entered this state and the "
> -							"_WAK method is misinforming the operating system. Currently Linux does not "
> -							"check for the return type from _WAK, so it should theoretically not affect the "
> -							"operation of suspend/resume.");
> -
> -					failed++;
> -				}
> -			}
>   		}
>   		if (!failed)
>   			fwts_passed(fw,
>
Acked-by: Ivan Hu <ivan.hu at canonical.com>



More information about the fwts-devel mailing list