From caf1b0dffbf9326f2f5f542d1cdaf831df86cbb9 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Thu, 19 Dec 2013 20:47:22 +0100 Subject: [PATCH] intel_cstates: Computing C-state requires constant time step --- .../kernel/power/cpuidle/intel_cstates/intel_cstates.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/power/cpuidle/intel_cstates/intel_cstates.cpp b/src/add-ons/kernel/power/cpuidle/intel_cstates/intel_cstates.cpp index c90b0107e1..9827c916fd 100644 --- a/src/add-ons/kernel/power/cpuidle/intel_cstates/intel_cstates.cpp +++ b/src/add-ons/kernel/power/cpuidle/intel_cstates/intel_cstates.cpp @@ -76,13 +76,14 @@ cstates_idle(void) ASSERT(thread_get_current_thread()->pinned_to_cpu > 0); int32 cpu = smp_get_current_cpu(); + bigtime_t timeStep = sTimeStep; 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); - int subState = idleTime % sTimeStep; - subState /= sTimeStep / sCStates[state].fSubStatesCount; + int subState = idleTime % timeStep; + subState /= timeStep / sCStates[state].fSubStatesCount; ASSERT(subState >= 0 && subState < sCStates[state].fSubStatesCount);