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)

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

Reply via email to