27.10.2015 Views

Advanced Configuration and Power Interface Specification

ACPI_6.0

ACPI_6.0

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Processor <strong>Configuration</strong> <strong>and</strong> Control<br />

Reg = SelectedLocalState(CurrentProcessor).EntryMethod<br />

WCWL = SelectedLocalState(CurrentProcessor).WCWL<br />

MR = SelectedLocalState(CurrentProcessor).MR<br />

for level = Parent(CurrentProcessor) to system<br />

LocalState = SelectedLocalState(level)<br />

If LocalState == Run<br />

break<br />

EM = LocalState.EntryMethod<br />

WCWL = WCWL+ LocalState.WCWL<br />

MR = LocalState.MR<br />

If IsInteger(EM)<br />

Reg.Addr = Reg.Addr+ZeroExtend(EM)<br />

Else<br />

// Entry method here overrides any previous method<br />

Reg = EM<br />

CompositeState.EntryMethod = Reg<br />

CompositeState.WCWL=WCWL<br />

CompositeState.MR=MR<br />

In OS Initiated mode it is also necessary for the OSPM to tell the platform on which hierarchy level the<br />

calling processor is the last to go idle <strong>and</strong> request a power state. To do this, the algorithm above is modified<br />

as follows:<br />

Reg = SelectedLocalState(CurrentProcessor).EntryMethod<br />

WCWL = SelectedLocalState(CurrentProcessor).WCWL<br />

MR = SelectedLocalState(CurrentProcessor).MR<br />

RegDecided = False<br />

// Retrieve Level Index from Processor’s _LPI object<br />

LastLevel = GetLevelIDOfLevel(CurrentProcessor)<br />

for level = Parent(CurrentProcessor) to system<br />

LocalState = SelectedLocalState(level)<br />

If LocalState == Run<br />

break<br />

EM = LocalState.EntryMethod<br />

WCWL = WCWL+ LocalState.WCWL<br />

EM = LocalState.EntryMethod<br />

If IsInteger(EM)<br />

Reg.Addr = Reg.Addr+ZeroExtend(EM)<br />

Else<br />

// Entry method is register<br />

Reg = EM<br />

If IsProcessorLastInLevel(CurrentProcessor,level)<br />

// If calling processor is last one to go idle in<br />

// current level, retrieve Level Index from<br />

// the container’s _LPI object<br />

LastLevel = GetLevelIDOfLevel(level)<br />

Reg.Addr = Reg.Addr+LastLevel<br />

CompositeState.EntryMethod = Reg<br />

CompositeState.WCWL=WCWL<br />

CompositeState.MR=MR<br />

In a platform coordinated system, it is possible for an LPI belonging to a hierarchy node above the<br />

processor level to use an integer value of zero as its entry method. This results in the entry comm<strong>and</strong><br />

Version 6.0 451

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!