Message ID | 1437374264-28501-1-git-send-email-alex.hung@canonical.com |
---|---|
State | Accepted |
Headers | show |
On 2015年07月20日 14:37, Alex Hung wrote: > Signed-off-by: Alex Hung <alex.hung@canonical.com> > --- > src/acpi/method/method.c | 57 +++++++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 51 insertions(+), 6 deletions(-) > > diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c > index 4fbfa90..d0b98e6 100644 > --- a/src/acpi/method/method.c > +++ b/src/acpi/method/method.c > @@ -2898,7 +2898,9 @@ static void method_test_CPC_return( > ACPI_OBJECT *obj, > void *private) > { > - static fwts_package_element elements[] = { > + uint8_t revision; > + > + static fwts_package_element elementsv1[] = { > { ACPI_TYPE_INTEGER, "Number of Entries" }, > { ACPI_TYPE_INTEGER, "Revision" }, > { ACPI_TYPE_INTBUF, "Highest Performance" }, > @@ -2918,18 +2920,61 @@ static void method_test_CPC_return( > { ACPI_TYPE_BUFFER, "Enable Register" } > }; > > + static fwts_package_element elementsv2[] = { > + { ACPI_TYPE_INTEGER, "Number of Entries" }, > + { ACPI_TYPE_INTEGER, "Revision" }, > + { ACPI_TYPE_INTBUF, "Highest Performance" }, > + { ACPI_TYPE_INTBUF, "Nominal Performance" }, > + { ACPI_TYPE_INTBUF, "Lowest Non Linear Performance" }, > + { ACPI_TYPE_INTBUF, "Lowest Performance" }, > + { ACPI_TYPE_BUFFER, "Guaranteed Performance Register" }, > + { ACPI_TYPE_BUFFER, "Desired Performance Register" }, > + { ACPI_TYPE_BUFFER, "Minimum Performance Register" }, > + { ACPI_TYPE_BUFFER, "Maximum Performance Register" }, > + { ACPI_TYPE_BUFFER, "Performance Reduction Tolerance Register" }, > + { ACPI_TYPE_BUFFER, "Timed Window Register" }, > + { ACPI_TYPE_INTBUF, "Counter Wraparound Time" }, > + { ACPI_TYPE_BUFFER, "Reference Performance Counter Register" }, > + { ACPI_TYPE_BUFFER, "Delivered Performance Counter Register" }, > + { ACPI_TYPE_BUFFER, "Performance Limited Register" }, > + { ACPI_TYPE_BUFFER, "CPPC Enable Register" }, > + { ACPI_TYPE_INTBUF, "Autonomous Selection Enable" }, > + { ACPI_TYPE_BUFFER, "Autonomous Activity Window Register" }, > + { ACPI_TYPE_BUFFER, "Energy Performance Preference Register" }, > + { ACPI_TYPE_INTBUF, "Reference Performance" } > + }; > + > FWTS_UNUSED(private); > > if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) > return; > > - /* Something is really wrong if we don't have any elements in _CPC */ > - if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) > - return; > + revision = obj->Package.Elements[1].Integer.Value; > + > + if (revision == 1) { // acpi 5.0 > + /* Something is really wrong if we don't have any elements in _CPC */ > + if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) > + return; > + > + /* For now, just check types */ > + if (method_package_elements_type(fw, name, "_CPC", obj, elementsv1, 17) != FWTS_OK) > + return; > + } else if (revision == 2) { // acpi 5.1 and later > + /* Something is really wrong if we don't have any elements in _CPC */ > + if (method_package_count_equal(fw, name, "_CPC", obj, 21) != FWTS_OK) > + return; > + > + /* For now, just check types */ > + if (method_package_elements_type(fw, name, "_CPC", obj, elementsv2, 21) != FWTS_OK) > + return; > + } else { > + fwts_failed(fw, LOG_LEVEL_HIGH, > + "Method_CPCBadRevision", > + "_CPC's _REV is incorrect, " > + "expecting 1 or 2, got 0x%" PRIx8 , revision); > > - /* For now, just check types */ > - if (method_package_elements_type(fw, name, "_CPC", obj, elements, 17) != FWTS_OK) > return; > + } > > method_passed_sane(fw, name, "package"); > } Acked-by: Ivan Hu<ivan.hu@canonical.com>
On 20/07/15 07:37, Alex Hung wrote: > Signed-off-by: Alex Hung <alex.hung@canonical.com> > --- > src/acpi/method/method.c | 57 +++++++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 51 insertions(+), 6 deletions(-) > > diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c > index 4fbfa90..d0b98e6 100644 > --- a/src/acpi/method/method.c > +++ b/src/acpi/method/method.c > @@ -2898,7 +2898,9 @@ static void method_test_CPC_return( > ACPI_OBJECT *obj, > void *private) > { > - static fwts_package_element elements[] = { > + uint8_t revision; > + > + static fwts_package_element elementsv1[] = { > { ACPI_TYPE_INTEGER, "Number of Entries" }, > { ACPI_TYPE_INTEGER, "Revision" }, > { ACPI_TYPE_INTBUF, "Highest Performance" }, > @@ -2918,18 +2920,61 @@ static void method_test_CPC_return( > { ACPI_TYPE_BUFFER, "Enable Register" } > }; > > + static fwts_package_element elementsv2[] = { > + { ACPI_TYPE_INTEGER, "Number of Entries" }, > + { ACPI_TYPE_INTEGER, "Revision" }, > + { ACPI_TYPE_INTBUF, "Highest Performance" }, > + { ACPI_TYPE_INTBUF, "Nominal Performance" }, > + { ACPI_TYPE_INTBUF, "Lowest Non Linear Performance" }, > + { ACPI_TYPE_INTBUF, "Lowest Performance" }, > + { ACPI_TYPE_BUFFER, "Guaranteed Performance Register" }, > + { ACPI_TYPE_BUFFER, "Desired Performance Register" }, > + { ACPI_TYPE_BUFFER, "Minimum Performance Register" }, > + { ACPI_TYPE_BUFFER, "Maximum Performance Register" }, > + { ACPI_TYPE_BUFFER, "Performance Reduction Tolerance Register" }, > + { ACPI_TYPE_BUFFER, "Timed Window Register" }, > + { ACPI_TYPE_INTBUF, "Counter Wraparound Time" }, > + { ACPI_TYPE_BUFFER, "Reference Performance Counter Register" }, > + { ACPI_TYPE_BUFFER, "Delivered Performance Counter Register" }, > + { ACPI_TYPE_BUFFER, "Performance Limited Register" }, > + { ACPI_TYPE_BUFFER, "CPPC Enable Register" }, > + { ACPI_TYPE_INTBUF, "Autonomous Selection Enable" }, > + { ACPI_TYPE_BUFFER, "Autonomous Activity Window Register" }, > + { ACPI_TYPE_BUFFER, "Energy Performance Preference Register" }, > + { ACPI_TYPE_INTBUF, "Reference Performance" } > + }; > + > FWTS_UNUSED(private); > > if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) > return; > > - /* Something is really wrong if we don't have any elements in _CPC */ > - if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) > - return; > + revision = obj->Package.Elements[1].Integer.Value; > + > + if (revision == 1) { // acpi 5.0 > + /* Something is really wrong if we don't have any elements in _CPC */ > + if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) > + return; > + > + /* For now, just check types */ > + if (method_package_elements_type(fw, name, "_CPC", obj, elementsv1, 17) != FWTS_OK) > + return; > + } else if (revision == 2) { // acpi 5.1 and later > + /* Something is really wrong if we don't have any elements in _CPC */ > + if (method_package_count_equal(fw, name, "_CPC", obj, 21) != FWTS_OK) > + return; > + > + /* For now, just check types */ > + if (method_package_elements_type(fw, name, "_CPC", obj, elementsv2, 21) != FWTS_OK) > + return; > + } else { > + fwts_failed(fw, LOG_LEVEL_HIGH, > + "Method_CPCBadRevision", > + "_CPC's _REV is incorrect, " > + "expecting 1 or 2, got 0x%" PRIx8 , revision); > > - /* For now, just check types */ > - if (method_package_elements_type(fw, name, "_CPC", obj, elements, 17) != FWTS_OK) > return; > + } > > method_passed_sane(fw, name, "package"); > } > Thanks for the ACPI 5.1 update on this test Acked-by Colin Ian King <colin.king@canonical.com>
diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c index 4fbfa90..d0b98e6 100644 --- a/src/acpi/method/method.c +++ b/src/acpi/method/method.c @@ -2898,7 +2898,9 @@ static void method_test_CPC_return( ACPI_OBJECT *obj, void *private) { - static fwts_package_element elements[] = { + uint8_t revision; + + static fwts_package_element elementsv1[] = { { ACPI_TYPE_INTEGER, "Number of Entries" }, { ACPI_TYPE_INTEGER, "Revision" }, { ACPI_TYPE_INTBUF, "Highest Performance" }, @@ -2918,18 +2920,61 @@ static void method_test_CPC_return( { ACPI_TYPE_BUFFER, "Enable Register" } }; + static fwts_package_element elementsv2[] = { + { ACPI_TYPE_INTEGER, "Number of Entries" }, + { ACPI_TYPE_INTEGER, "Revision" }, + { ACPI_TYPE_INTBUF, "Highest Performance" }, + { ACPI_TYPE_INTBUF, "Nominal Performance" }, + { ACPI_TYPE_INTBUF, "Lowest Non Linear Performance" }, + { ACPI_TYPE_INTBUF, "Lowest Performance" }, + { ACPI_TYPE_BUFFER, "Guaranteed Performance Register" }, + { ACPI_TYPE_BUFFER, "Desired Performance Register" }, + { ACPI_TYPE_BUFFER, "Minimum Performance Register" }, + { ACPI_TYPE_BUFFER, "Maximum Performance Register" }, + { ACPI_TYPE_BUFFER, "Performance Reduction Tolerance Register" }, + { ACPI_TYPE_BUFFER, "Timed Window Register" }, + { ACPI_TYPE_INTBUF, "Counter Wraparound Time" }, + { ACPI_TYPE_BUFFER, "Reference Performance Counter Register" }, + { ACPI_TYPE_BUFFER, "Delivered Performance Counter Register" }, + { ACPI_TYPE_BUFFER, "Performance Limited Register" }, + { ACPI_TYPE_BUFFER, "CPPC Enable Register" }, + { ACPI_TYPE_INTBUF, "Autonomous Selection Enable" }, + { ACPI_TYPE_BUFFER, "Autonomous Activity Window Register" }, + { ACPI_TYPE_BUFFER, "Energy Performance Preference Register" }, + { ACPI_TYPE_INTBUF, "Reference Performance" } + }; + FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; - /* Something is really wrong if we don't have any elements in _CPC */ - if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) - return; + revision = obj->Package.Elements[1].Integer.Value; + + if (revision == 1) { // acpi 5.0 + /* Something is really wrong if we don't have any elements in _CPC */ + if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) + return; + + /* For now, just check types */ + if (method_package_elements_type(fw, name, "_CPC", obj, elementsv1, 17) != FWTS_OK) + return; + } else if (revision == 2) { // acpi 5.1 and later + /* Something is really wrong if we don't have any elements in _CPC */ + if (method_package_count_equal(fw, name, "_CPC", obj, 21) != FWTS_OK) + return; + + /* For now, just check types */ + if (method_package_elements_type(fw, name, "_CPC", obj, elementsv2, 21) != FWTS_OK) + return; + } else { + fwts_failed(fw, LOG_LEVEL_HIGH, + "Method_CPCBadRevision", + "_CPC's _REV is incorrect, " + "expecting 1 or 2, got 0x%" PRIx8 , revision); - /* For now, just check types */ - if (method_package_elements_type(fw, name, "_CPC", obj, elements, 17) != FWTS_OK) return; + } method_passed_sane(fw, name, "package"); }
Signed-off-by: Alex Hung <alex.hung@canonical.com> --- src/acpi/method/method.c | 57 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 6 deletions(-)