diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/i86pc/io/acpi/acpidev/acpidev_util.c | 21 | ||||
-rw-r--r-- | usr/src/uts/i86pc/sys/acpidev.h | 2 |
2 files changed, 15 insertions, 8 deletions
diff --git a/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_util.c b/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_util.c index 7c4c0c7323..beac0f523b 100644 --- a/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_util.c +++ b/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_util.c @@ -232,6 +232,7 @@ acpidev_walk_apic(ACPI_BUFFER *bufp, ACPI_HANDLE hdl, char *method, ACPI_STATUS rc; ssize_t len; ACPI_BUFFER buf; + ACPI_OBJECT *obj; ACPI_SUBTABLE_HEADER *ap; ACPI_TABLE_MADT *mp = NULL; @@ -252,17 +253,23 @@ acpidev_walk_apic(ACPI_BUFFER *bufp, ACPI_HANDLE hdl, char *method, } else if (method != NULL) { /* * Otherwise, if we have an evaluate method, we get the walk - * buffer from a successful invocation of AcpiEvaluateObject. + * buffer from a successful invocation of + * AcpiEvaluateObjectTyped(). */ ASSERT(hdl != NULL); - rc = AcpiEvaluateObject(hdl, method, NULL, &buf); - if (ACPI_FAILURE(rc) && rc != AE_NOT_FOUND) { - cmn_err(CE_WARN, "!acpidev: failed to evaluate %s " - "in acpidev_walk_apic().", method); + rc = AcpiEvaluateObjectTyped(hdl, method, NULL, &buf, + ACPI_TYPE_BUFFER); + if (ACPI_SUCCESS(rc)) { + ASSERT(buf.Length >= sizeof (*obj)); + obj = buf.Pointer; + ap = (ACPI_SUBTABLE_HEADER *)obj->Buffer.Pointer; + len = obj->Buffer.Length; + } else { + if (rc != AE_NOT_FOUND) + cmn_err(CE_WARN, "!acpidev: failed to evaluate " + "%s in acpidev_walk_apic().", method); return (rc); } - ap = (ACPI_SUBTABLE_HEADER *)buf.Pointer; - len = buf.Length; } else { /* As a last resort, walk the MADT table. */ rc = AcpiGetTable(ACPI_SIG_MADT, 1, (ACPI_TABLE_HEADER **)&mp); diff --git a/usr/src/uts/i86pc/sys/acpidev.h b/usr/src/uts/i86pc/sys/acpidev.h index c3cac2cb4b..e0fbaa4999 100644 --- a/usr/src/uts/i86pc/sys/acpidev.h +++ b/usr/src/uts/i86pc/sys/acpidev.h @@ -79,7 +79,7 @@ extern "C" { #define ACPIDEV_TYPE_SCOPE "acpiscope" #define ACPIDEV_TYPE_DEVICE "acpidevice" #define ACPIDEV_TYPE_CONTAINER "acpicontainer" -#define ACPIDEV_TYPE_CPU "cpu" +#define ACPIDEV_TYPE_CPU "acpicpu" #define ACPIDEV_TYPE_MEMORY "acpimemory" /* Device property names for ACPI objects. */ |