Liu, Jiang wrote:
> Liu, Jiang <> wrote:
>   
>> Bill.Holler at Sun.COM <mailto:Bill.Holler at Sun.COM> 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.
>>>       
>> Errno 9 means NULL OBJECT.
>> #define AE_NULL_OBJECT                  (ACPI_STATUS) (0x0009 |
>> AE_CODE_ENVIRONMENTAL) 
>>     
>
> There reason for AcpiEvaluateObjectTyped() to return AE_NULL_OBJECT
> should be that _CST doesn't return an object at all.
> But according to the dsl code, _CST should return an valid package object.
> Highly suspect bugs in ACPICA. Dana, any hints here?
>   
I have no idea yet; will look tomorrow morning (here).

Dana
>   
>> Seems something unexpected happens in acpica or BIOS.
>> Acording to dsl, it should return a package for _CST.
>>
>>     
>>> 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
>>>       
>> Liu Jiang (Gerry)
>> OpenSolaris, OTC, SSG, Intel
>> _______________________________________________
>> tesla-dev mailing list
>> tesla-dev at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>>     
>
> Liu Jiang (Gerry)
> OpenSolaris, OTC, SSG, Intel
>   


Reply via email to