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? > > What? No _PDC bit that says the OSPM has intimate knowledge of > how to go > into deeper C-states? ;-) > >From ACPI spec, if the register address space id(from _CST) is returned FFixedHW, we have to use native instruction to place processor into deeper c-state. If it's returned SystemIO, we should use reading IO port to enter deeper c-state. That's the way linux currently uses. But it's not a good way, ;-)
Thanks, -Aubrey
