[PATCH 6/8] acpi: method: Add check for SEG
Colin King
colin.king at canonical.com
Wed Sep 19 17:53:55 UTC 2012
From: Colin Ian King <colin.king at canonical.com>
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/acpi/method/method.c | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
index e38b830..0e82801 100644
--- a/src/acpi/method/method.c
+++ b/src/acpi/method/method.c
@@ -200,7 +200,7 @@
* _SBS 10.1.3 Y
* _SCP 11.4.11 Y
* _SDD 9.8.3.3.1 N
- * _SEG 6.5.6 N
+ * _SEG 6.5.6 Y
* _SHL 10.4.5 N
* _SLI 6.2.14 N
* _SPD B.4.5 Y
@@ -1103,6 +1103,34 @@ static int method_test_DCK(fwts_framework *fw)
return FWTS_OK;
}
+static void method_test_SEG_return(
+ fwts_framework *fw,
+ char *name,
+ ACPI_BUFFER *buf,
+ ACPI_OBJECT *obj,
+ void *private)
+{
+ if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) {
+ if ((obj->Integer.Value & 0xffff0000)) {
+ fwts_failed(fw, LOG_LEVEL_MEDIUM,
+ "Method_SEGIllegalReserved",
+ "_SEG returned value 0x%8.8x and some of the "
+ "upper 16 reserved bits are set when they "
+ "should in fact be zero.",
+ (uint32_t)obj->Integer.Value);
+ fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
+ } else
+ fwts_passed(fw,
+ "_SEG correctly returned sane looking "
+ "value 0x%8.8x", (uint32_t)obj->Integer.Value);
+ }
+}
+
+static int method_test_SEG(fwts_framework *fw)
+{
+ return method_evaluate_method(fw, METHOD_OPTIONAL, "_SEG",
+ NULL, 0, method_test_SEG_return, "_SEG");
+}
/*
* Section 7.1 Declaring a Power Resource Object
@@ -3124,7 +3152,7 @@ static fwts_framework_minor_test method_tests[] = {
/* { method_test_INI, "Check _INI (Initialize)." }, */
/* { method_test_GLK, "Check _GLK (Global Lock)." }, */
/* { method_test_REG, "Check _REG (Region)." }, */
- /* { method_test_SEG, "Check _SEG (Segment)." }, */
+ { method_test_SEG, "Check _SEG (Segment)." },
/* Section 7.1 Declaring a Power Resource Object */
--
1.7.10.4
More information about the fwts-devel
mailing list