aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/idle/intel_idle.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/idle/intel_idle.c')
-rw-r--r--drivers/idle/intel_idle.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index 41665d2f9f93..56ac09d6c930 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -220,9 +220,8 @@ static int intel_idle(struct cpuidle_device *dev, struct cpuidle_state *state)
220 kt_before = ktime_get_real(); 220 kt_before = ktime_get_real();
221 221
222 stop_critical_timings(); 222 stop_critical_timings();
223#ifndef MODULE
224 trace_power_start(POWER_CSTATE, (eax >> 4) + 1, cpu); 223 trace_power_start(POWER_CSTATE, (eax >> 4) + 1, cpu);
225#endif 224 trace_cpu_idle((eax >> 4) + 1, cpu);
226 if (!need_resched()) { 225 if (!need_resched()) {
227 226
228 __monitor((void *)&current_thread_info()->flags, 0, 0); 227 __monitor((void *)&current_thread_info()->flags, 0, 0);
@@ -273,8 +272,6 @@ static int intel_idle_probe(void)
273 272
274 pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates); 273 pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates);
275 274
276 if (boot_cpu_has(X86_FEATURE_ARAT)) /* Always Reliable APIC Timer */
277 lapic_timer_reliable_states = 0xFFFFFFFF;
278 275
279 if (boot_cpu_data.x86 != 6) /* family 6 */ 276 if (boot_cpu_data.x86 != 6) /* family 6 */
280 return -ENODEV; 277 return -ENODEV;
@@ -286,8 +283,6 @@ static int intel_idle_probe(void)
286 case 0x1F: /* Core i7 and i5 Processor - Nehalem */ 283 case 0x1F: /* Core i7 and i5 Processor - Nehalem */
287 case 0x2E: /* Nehalem-EX Xeon */ 284 case 0x2E: /* Nehalem-EX Xeon */
288 case 0x2F: /* Westmere-EX Xeon */ 285 case 0x2F: /* Westmere-EX Xeon */
289 lapic_timer_reliable_states = (1 << 1); /* C1 */
290
291 case 0x25: /* Westmere */ 286 case 0x25: /* Westmere */
292 case 0x2C: /* Westmere */ 287 case 0x2C: /* Westmere */
293 cpuidle_state_table = nehalem_cstates; 288 cpuidle_state_table = nehalem_cstates;
@@ -295,7 +290,6 @@ static int intel_idle_probe(void)
295 290
296 case 0x1C: /* 28 - Atom Processor */ 291 case 0x1C: /* 28 - Atom Processor */
297 case 0x26: /* 38 - Lincroft Atom Processor */ 292 case 0x26: /* 38 - Lincroft Atom Processor */
298 lapic_timer_reliable_states = (1 << 1); /* C1 */
299 cpuidle_state_table = atom_cstates; 293 cpuidle_state_table = atom_cstates;
300 break; 294 break;
301 295
@@ -303,10 +297,6 @@ static int intel_idle_probe(void)
303 case 0x2D: /* SNB Xeon */ 297 case 0x2D: /* SNB Xeon */
304 cpuidle_state_table = snb_cstates; 298 cpuidle_state_table = snb_cstates;
305 break; 299 break;
306#ifdef FUTURE_USE
307 case 0x17: /* 23 - Core 2 Duo */
308 lapic_timer_reliable_states = (1 << 2) | (1 << 1); /* C2, C1 */
309#endif
310 300
311 default: 301 default:
312 pr_debug(PREFIX "does not run on family %d model %d\n", 302 pr_debug(PREFIX "does not run on family %d model %d\n",
@@ -314,6 +304,9 @@ static int intel_idle_probe(void)
314 return -ENODEV; 304 return -ENODEV;
315 } 305 }
316 306
307 if (boot_cpu_has(X86_FEATURE_ARAT)) /* Always Reliable APIC Timer */
308 lapic_timer_reliable_states = 0xFFFFFFFF;
309
317 pr_debug(PREFIX "v" INTEL_IDLE_VERSION 310 pr_debug(PREFIX "v" INTEL_IDLE_VERSION
318 " model 0x%X\n", boot_cpu_data.x86_model); 311 " model 0x%X\n", boot_cpu_data.x86_model);
319 312