[PATCH] acpi: method: allow _WAK to return an integer

Alex Hung alex.hung at canonical.com
Wed Feb 14 06:19:30 UTC 2018


Linux kernel allows _WAK to return an integer, as in acpica/acpredef.h.
The reason seems to be that so many system BIOS returns an integer
instead of a package defined in ACPI spec, and it becomes a strange
standard already. Since operating system allows the integer, it should
be appropriate for fwts to relax it as well.

Signed-off-by: Alex Hung <alex.hung at canonical.com>
---
 src/acpi/method/method.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
index 6839c3f..7c73e14 100644
--- a/src/acpi/method/method.c
+++ b/src/acpi/method/method.c
@@ -5552,17 +5552,26 @@ static void method_test_WAK_return(
 	void *private)
 {
 	FWTS_UNUSED(private);
+	FWTS_UNUSED(buf);
 
-	if (fwts_method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK)
-		return;
-
-	if (fwts_method_package_count_equal(fw, name, "_WAK", obj, 2) != FWTS_OK)
-		return;
+	switch (obj->Type) {
+	case ACPI_TYPE_PACKAGE:
+		if (fwts_method_package_count_equal(fw, name, "_WAK", obj, 2) != FWTS_OK)
+			return;
 
-	if (fwts_method_package_elements_all_type(fw, name, "_WAK", obj, ACPI_TYPE_INTEGER) != FWTS_OK)
-		return;
+		if (fwts_method_package_elements_all_type(fw, name, "_WAK", obj, ACPI_TYPE_INTEGER) != FWTS_OK)
+			return;
 
-	fwts_method_passed_sane(fw, name, "package");
+		fwts_method_passed_sane(fw, name, "package");
+		break;
+	case ACPI_TYPE_INTEGER:
+		fwts_method_passed_sane(fw, name, "integer");
+		break;
+	default:
+		fwts_failed(fw, LOG_LEVEL_CRITICAL, "MethodReturnBadType",
+			"%s did not return a package or an integer.", name);
+		break;
+	}
 }
 
 static int method_test_WAK(fwts_framework *fw)
-- 
2.7.4




More information about the fwts-devel mailing list