Data Sheet

Datasheet, Volume 1 of 2 73
Power Management
4.2.3 Requesting Low-Power Idle States
The primary software interfaces for requesting low-power idle states are through the
MWAIT instruction with sub-state hints and the HLT instruction (for C1 and C1E).
However, software may make C-state requests using the legacy method of I/O reads
from the ACPI-defined processor clock control registers, referred to as P_LVLx. This
method of requesting C-states provides legacy support for operating systems that
initiate C-state transitions using I/O reads.
For legacy operating systems, P_LVLx I/O reads are converted within the processor to
the equivalent MWAIT C-state request. Therefore, P_LVLx reads do not directly result in
I/O reads to the system. The feature, known as I/O MWAIT redirection, should be
enabled in the BIOS.
The BIOS can write to the C-state range field of the PMG_IO_CAPTURE MSR to restrict
the range of I/O addresses that are trapped and emulate MWAIT like functionality. Any
P_LVLx reads outside of this range do not cause an I/O redirection to MWAIT(Cx) like
request. They fall through like a normal I/O instruction.
When P_LVLx I/O instructions are used, MWAIT sub-states cannot be defined. The
MWAIT sub-state is always zero if I/O MWAIT redirection is used. By default,
P_LVLx I/O redirections enable the MWAIT 'break on EFLAGS.IF’ feature that triggers a
wake up on an interrupt, even if interrupts are masked by EFLAGS.IF.
4.2.4 Processor IA Core C-State Rules
The following are general rules for all processor IA core C-states, unless specified
otherwise:
A processor IA core C-State is determined by the lowest numerical thread state
(such as Thread 0 requests C1E while Thread 1 requests C3 state, resulting in a
processor IA core C1E state). Refer the G, S, and C Interface State Combinations
table.
A processor IA core transitions to C0 state when:
An interrupt occurs.
There is an access to the monitored address if the state was entered using an
MWAIT/Timed MWAIT instruction.
The deadline corresponding to the Timed MWAIT instruction expires.
An interrupt directed toward a single thread wakes up only that thread.
If any thread in a processor IA core is active (in C0 state), the core’s C-state will
resolve to C0.
Any interrupt coming into the processor package may wake any processor IA core.
A system reset re-initializes all processor IA cores.
Processor IA core C0 State
The normal operating state of a processor IA core where code is being executed.
Processor IA core C1/C1E State
C1/C1E is a low-power state entered when all threads within a processor IA core
execute a HLT or MWAIT(C1/C1E) instruction.