intel_cstates: Computing C-state requires constant time step
This commit is contained in:
@@ -76,13 +76,14 @@ cstates_idle(void)
|
|||||||
ASSERT(thread_get_current_thread()->pinned_to_cpu > 0);
|
ASSERT(thread_get_current_thread()->pinned_to_cpu > 0);
|
||||||
int32 cpu = smp_get_current_cpu();
|
int32 cpu = smp_get_current_cpu();
|
||||||
|
|
||||||
|
bigtime_t timeStep = sTimeStep;
|
||||||
bigtime_t idleTime = sIdleTime[cpu];
|
bigtime_t idleTime = sIdleTime[cpu];
|
||||||
int state = min_c(idleTime / sTimeStep, sCStateCount - 1);
|
int state = min_c(idleTime / timeStep, sCStateCount - 1);
|
||||||
|
|
||||||
ASSERT(state >= 0 && state < sCStateCount);
|
ASSERT(state >= 0 && state < sCStateCount);
|
||||||
|
|
||||||
int subState = idleTime % sTimeStep;
|
int subState = idleTime % timeStep;
|
||||||
subState /= sTimeStep / sCStates[state].fSubStatesCount;
|
subState /= timeStep / sCStates[state].fSubStatesCount;
|
||||||
|
|
||||||
ASSERT(subState >= 0 && subState < sCStates[state].fSubStatesCount);
|
ASSERT(subState >= 0 && subState < sCStates[state].fSubStatesCount);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user