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 >
