Dana H. Myers wrote:
> Bill Holler wrote:
>> 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);
>> }
> I really don't believe this length check is required once we're using
> AcpiEvaluateObjectTyped():
>> + if (abuf.Length < sizeof (ACPI_OBJECT)) {
>> + cmn_err(CE_NOTE, "!cpu_acpi: _CST evaluate length
>> failure");
>> + return (-1);
>> + }
I would like to keep the abuf.Length check. The extra level of
checking should not hurt. Should this Length check stay or go?
Bill
>> 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
>