Bill.Holler 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?
>> 
>> 
> Only the boot cpu executed mach_init() and sets its
> CPU->cpu_m.mcpu_mwait_support.  The other cpus do not
> execute this code and have not set their mcpu_mwait_support
> flag.  The code added to mach_init() also needs to be added to
> mp_startup_init().  :-) 

Thanks to point it out. I missed that. I'll fix it soon.

> 
> Is it possible to use a global variable instead of having
> mcpu_mwait_support in each cpu_t?  We do not plan to
> support a mixed configuration where some cpus use MWAIT
> and some do not.  ;-)

Is there any other reasons? ;-)

Thanks,
-Aubrey

Reply via email to