Hi,
I would like to try to get a fix for this into the next OpenSolaris
release. Time is running out if it has not already.
Are we happy with using AcpiEvaluateObjectTyped(), or do
we need to do more work in the ACPICA?
This change works on tecra M9 and M10. AcpiEvaluateObjectTyped()
returns 9 on both of these systems which indicates an error.
diff -r 11c1672e6d5b -r 90c9f0b548f7 usr/src/uts/i86pc/os/cpupm/cpu_acpi.c
--- a/usr/src/uts/i86pc/os/cpupm/cpu_acpi.c Tue Mar 17 19:00:36 2009
-0400
+++ b/usr/src/uts/i86pc/os/cpupm/cpu_acpi.c Wed Mar 18 17:42:48 2009
-0700
@@ -695,11 +695,15 @@
abuf.Length = ACPI_ALLOCATE_BUFFER;
abuf.Pointer = NULL;
- if (ACPI_FAILURE(AcpiEvaluateObject(handle->cs_handle, "_CST",
- NULL, &abuf))) {
+ if (ACPI_FAILURE(AcpiEvaluateObjectTyped(handle->cs_handle, "_CST",
+ NULL, &abuf, ACPI_TYPE_PACKAGE))) {
cmn_err(CE_NOTE, "!cpu_acpi: _CST evaluate failure");
return (-1);
}
+ if (abuf.Length < sizeof (ACPI_OBJECT)) {
+ cmn_err(CE_NOTE, "!cpu_acpi: _CST evaluate length failure");
+ return (-1);
+ }
obj = (ACPI_OBJECT *)abuf.Pointer;
if (obj->Package.Count < 2) {
cmn_err(CE_NOTE, "!cpu_acpi: _CST package bad count %d.",
Is ACPI_STATUS "9" defined?
Regards,
Bill