Mark Haywood wrote:
> Li, Aubrey wrote:
>   
>> the function to place processor into deeper c-state is added.
>>
>> I discussed with Bill about how to enter deeper c-state.
>> The ACPI documentation uses reading ACPI register address to enter,
>> while Intel Processor programming guides indicate MWAIT is prefered.
>>
>> We know, to wake up an idle CPU, mwait just needs monitor memory write.
>> But "halt" and ACPI reading IO port need an IPI. Obviously, mwait has
>> the
>> better performance.
>>
>> So, here, I didn't see any advantage to follow ACPI on the
>> mwait-supported
>> processors. The logic breaking ACPI rule in the committed code is as
>> follows:
>>
>> if (mwait is supported)
>>      use monitor/mwait to enter deep c-state
>> else
>>      reading IO port from ACPI
>>
>> Of course this logic depends on the info reading from ACPI objects.
>> So disp_enq_thread doesn't need to be changed.
>>
>> Any objects/thoughts?
>>     
Solaris currently uses the HLT instruction (instead of MWAIT)
when run under a hypervisor such as xen. The xpv team is
looking into power management implementations. Going
forward, the xpv team thinks use MWAIT with c-states would
be desirable when run under a hypervisor. The hypervisor will
intercept the MWAIT instruction (trap). The hypervisor can tell
from the MWAIT instruction operands what idle state the guest
OS wanted. This will allow a Solaris guest to communicate
its idle power desire to the hypervisor.

Regards,
Bill

>
> What? No _PDC bit that says the OSPM has intimate knowledge of how to go 
> into deeper C-states? ;-)
>
> Yes, from your explanation it sounds like you're doing the right thing.
>
> Mark
>
>   
>> Thanks,
>> -Aubrey
>>
>> tesla-dev-bounces wrote:
>>
>>     
>>> Author: Aubrey Li <aubrey.li at intel.com>
>>> Repository: /hg/tesla/cpupm-gate
>>> Latest revision: fb46381c0d6aa02129ae68dcdf89bb19897aa671 Total
>>> changesets: 1 Log message:
>>> add funtion to place processor into deeper c-state
>>>
>>> Files:
>>>     update: usr/src/uts/i86pc/io/cpu_idle.c
>>>     update: usr/src/uts/i86pc/io/cpudrv_plat.c
>>>     update: usr/src/uts/i86pc/os/mp_machdep.c
>>>     update: usr/src/uts/i86pc/sys/cpu_idle.h
>>>     update: usr/src/uts/i86pc/sys/machcpuvar.h
>>>       
>> _______________________________________________
>> tesla-dev mailing list
>> tesla-dev at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>>     
>
> _______________________________________________
> tesla-dev mailing list
> tesla-dev at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>   


Reply via email to