• Home
  • Raw
  • Download

Lines Matching +full:ecx +full:- +full:2000

2  * intel_idle.c - native hardware idle loop for modern Intel processors
18 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
34 * for preventing entry into deep C-stats
41 * It it unaware of subsequent processors hot-added to the system.
45 * ACPI has a .suspend hack to turn off deep c-statees during suspend
51 /* un-comment DEBUG to enable pr_debug() statements */
65 #include <asm/intel-family.h>
76 static int max_cstate = CPUIDLE_STATE_MAX - 1;
88 * Hardware C-state auto-demotion may not always be optimal.
106 * and so we don't need cross-calls to keep it consistent.
113 * MWAIT takes an 8-bit "hint" in EAX "suggesting"
114 * the C-state (top nibble) and sub-state (bottom nibble)
856 .exit_latency = 2000,
857 .target_residency = 2000,
912 unsigned long ecx = 1; /* break on interrupt flag */ in intel_idle() local
913 struct cpuidle_state *state = &drv->states[index]; in intel_idle()
914 unsigned long eax = flg2MWAIT(state->flags); in intel_idle()
923 if (state->flags & CPUIDLE_FLAG_TLB_FLUSHED) in intel_idle()
936 mwait_idle_with_hints(eax, ecx); in intel_idle()
945 * intel_idle_s2idle - simplified "enter" callback routine for suspend-to-idle
953 unsigned long ecx = 1; /* break on interrupt flag */ in intel_idle_s2idle() local
954 unsigned long eax = flg2MWAIT(drv->states[index].flags); in intel_idle_s2idle()
956 mwait_idle_with_hints(eax, ecx); in intel_idle_s2idle()
972 msr_bits &= ~(icpu->auto_demotion_disable_flags); in auto_demotion_disable()
1117 unsigned int eax, ebx, ecx; in intel_idle_probe() local
1122 return -EPERM; in intel_idle_probe()
1131 return -ENODEV; in intel_idle_probe()
1136 return -ENODEV; in intel_idle_probe()
1140 return -ENODEV; in intel_idle_probe()
1142 cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &mwait_substates); in intel_idle_probe()
1144 if (!(ecx & CPUID5_ECX_EXTENSIONS_SUPPORTED) || in intel_idle_probe()
1145 !(ecx & CPUID5_ECX_INTERRUPT_BREAK) || in intel_idle_probe()
1147 return -ENODEV; in intel_idle_probe()
1151 icpu = (const struct idle_cpu *)id->driver_data; in intel_idle_probe()
1152 cpuidle_state_table = icpu->state_table; in intel_idle_probe()
1178 * Tune IVT multi-socket targets
1183 /* IVT uses a different table for 1-2, 3-4, and > 4 sockets */ in ivt_idle_state_table_update()
1272 * On SKL-H (model 0x5e) disable C8 and C9 if:
1278 unsigned int eax, ebx, ecx, edx; in sklh_idle_state_table_update() local
1291 /* PC10 is not enabled in PKG C-state limit */ in sklh_idle_state_table_update()
1295 ecx = 0; in sklh_idle_state_table_update()
1296 cpuid(7, &eax, &ebx, &ecx, &edx); in sklh_idle_state_table_update()
1308 skl_cstates[5].disabled = 1; /* C8-SKL */ in sklh_idle_state_table_update()
1309 skl_cstates[6].disabled = 1; /* C9-SKL */ in sklh_idle_state_table_update()
1314 * Update the default state_table for this CPU-id
1346 drv->state_count = 1; in intel_idle_cpuidle_driver_init()
1363 /* number of sub-states for this state in CPUID.MWAIT */ in intel_idle_cpuidle_driver_init()
1367 /* if NO sub-states for this state in CPUID, skip it */ in intel_idle_cpuidle_driver_init()
1384 drv->states[drv->state_count] = /* structure copy */ in intel_idle_cpuidle_driver_init()
1387 drv->state_count += 1; in intel_idle_cpuidle_driver_init()
1390 if (icpu->byt_auto_demotion_disable_flag) { in intel_idle_cpuidle_driver_init()
1407 dev->cpu = cpu; in intel_idle_cpu_init()
1411 return -EIO; in intel_idle_cpu_init()
1414 if (icpu->auto_demotion_disable_flags) in intel_idle_cpu_init()
1417 if (icpu->disable_promotion_to_c1e) in intel_idle_cpu_init()
1436 if (!dev->registered) in intel_idle_cpu_online()
1448 return -ENODEV; in intel_idle_init()
1456 return -ENOMEM; in intel_idle_init()
1463 drv ? drv->name : "none"); in intel_idle_init()
1492 * support "intel_idle.max_cstate=..." at boot and also a read-only export of
1493 * it at /sys/module/intel_idle/parameters/max_cstate -- so using module_param