Li, Aubrey wrote:
>> I went ahead and created CR 6605212 SpeedStep can't find _PSS for
>> Processor declared by Alias. 
>>
>> As I mention in the evaluation, we have a possible fix. But until we
>> get a little more information, I'm not convinced it's the right
>> one. Aubrey,
>> did you get any feedback from Bob?
>>
>>     
> Mark - I think the fix I suggested it's right.
> The first object should be mapped as the ACPI handler.
>   
I'm sure that your  assertion that the source object will be precede the 
alias object in the namespace is true because the ACPI spec says the 
following about an Alias:

AliasObject is created as an alias of SourceObject in the namespace. The
SourceObject name must already exist in the namespace. If the alias is
to a name within the same definition block, the SourceObject name must
be logically ahead of this definition in the block.


But it also says:

Creates a new object named AliasObject that refers to and acts
exactly the same as SourceObject.


Your fix relies on the first part, but ignores the second part.

I have no doubt that evaluating the _PSD using the source object works. 
However, I'd like an explanation as to why we can't evaluate the _PSD 
using the Alias. Integrating the suggested fix without fully 
understanding the broken behavior would be inappropriate.
> Since the object is alias, it should be declared after the source
> object.
> That means the Alias object must always be behind of the source object.
> So, IMHO, this fix is correct.
>
> diff -r b6d0b03690de usr/src/uts/intel/io/acpica/osl.c
> --- a/usr/src/uts/intel/io/acpica/osl.c       Mon Aug 20 17:45:19 2007 -0700
> +++ b/usr/src/uts/intel/io/acpica/osl.c       Fri Sep 07 05:54:09 2007 +0800
> @@ -1337,7 +1337,8 @@ acpica_add_processor_to_map(UINT32 acpi_
>                       continue;
>  
>               if (cpu_map[cpu_id]->mpa->ProcessorId == acpi_id) {
> -                     cpu_map[cpu_id]->obj = obj;
> +                     if (cpu_map[cpu_id]->obj == NULL)
> +                             cpu_map[cpu_id]->obj = obj;
>                       break;
>               }
>       }
>
> Does this make sense?
>   
Yes, I understand the fix. I just don't understand why it is necessary.

Mark

Reply via email to