PpmScaleIdleStateValues
VOID __stdcall PpmScaleIdleStateValues(_PROCESSOR_POWER_STATE *PpmState){
_PROC_PERF_CONSTRAINT *Constraint;
_PROC_PERF_DOMAIN *Domain;
unsigned int GuaranteedPercent;
unsigned int v5;
int DemotePercentBase;
unsigned int LpIndexFromProcessorIndex;
if( PpmState->IdlePolicy.AllowScaling )
{
Constraint = PpmState->CheckContext.Constraint;
if( Constraint )
{
Domain = PpmState->CheckContext.Domain;
if( Domain )
{
GuaranteedPercent = Domain->GuaranteedPercent;
if( Constraint->Selection.SelectedPercent < GuaranteedPercent )
LOBYTE(GuaranteedPercent) = Constraint->Selection.SelectedPercent;
v5 = (unsigned __int8)GuaranteedPercent;
DemotePercentBase = PpmState->IdlePolicy.DemotePercentBase;
PpmState->IdlePolicy.PromotePercent = (unsigned __int8)GuaranteedPercent
* (unsigned __int8)GuaranteedPercent
* (unsigned int)PpmState->IdlePolicy.PromotePercentBase
/ 0x2710;
PpmState->IdlePolicy.DemotePercent = (unsigned __int8)GuaranteedPercent
* (unsigned int)(unsigned __int8)GuaranteedPercent
* DemotePercentBase
/ 0x2710;
if( PpmState->Hypervisor == ProcHypervisorHvCounters )
{
LpIndexFromProcessorIndex = HvlGetLpIndexFromProcessorIndex(HIDWORD(PpmState[-64].IdleTimeEntry));
HvlRegisterLogicalProcessorFrequency((_KPRCB *)LpIndexFromProcessorIndex, v5);
}
}
}
}
}Referenced by:
PpmPerfApplyProcessorState
PpmResetIdlePolicy