summaryrefslogtreecommitdiffstats
path: root/drivers/idle
diff options
context:
space:
mode:
authorDasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com>2014-09-04 20:22:54 -0400
committerLen Brown <len.brown@intel.com>2016-03-23 16:19:38 -0400
commit281baf7a702693deaa45c98ef0c5161006b48257 (patch)
tree7b519adce293e68a69ac043740eb45094d0ae89b /drivers/idle
parentd70e28f57e14a481977436695b0c9ba165472431 (diff)
intel_idle: Support for Intel Xeon Phi Processor x200 Product Family
Enables "Intel(R) Xeon Phi(TM) Processor x200 Product Family" support, formerly code-named KNL. It is based on modified Intel Atom Silvermont microarchitecture. Signed-off-by: Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com> [micah.barany@intel.com: adjusted values of residency and latency] Signed-off-by: Micah Barany <micah.barany@intel.com> [hubert.chrzaniuk@intel.com: removed deprecated CPUIDLE_FLAG_TIME_VALID flag] Signed-off-by: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com> Signed-off-by: Pawel Karczewski <pawel.karczewski@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/idle')
-rw-r--r--drivers/idle/intel_idle.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index 146eed70bdf4..ba947df5a8c7 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -716,6 +716,26 @@ static struct cpuidle_state avn_cstates[] = {
716 { 716 {
717 .enter = NULL } 717 .enter = NULL }
718}; 718};
719static struct cpuidle_state knl_cstates[] = {
720 {
721 .name = "C1-KNL",
722 .desc = "MWAIT 0x00",
723 .flags = MWAIT2flg(0x00),
724 .exit_latency = 1,
725 .target_residency = 2,
726 .enter = &intel_idle,
727 .enter_freeze = intel_idle_freeze },
728 {
729 .name = "C6-KNL",
730 .desc = "MWAIT 0x10",
731 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
732 .exit_latency = 120,
733 .target_residency = 500,
734 .enter = &intel_idle,
735 .enter_freeze = intel_idle_freeze },
736 {
737 .enter = NULL }
738};
719 739
720/** 740/**
721 * intel_idle 741 * intel_idle
@@ -890,6 +910,10 @@ static const struct idle_cpu idle_cpu_avn = {
890 .disable_promotion_to_c1e = true, 910 .disable_promotion_to_c1e = true,
891}; 911};
892 912
913static const struct idle_cpu idle_cpu_knl = {
914 .state_table = knl_cstates,
915};
916
893#define ICPU(model, cpu) \ 917#define ICPU(model, cpu) \
894 { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&cpu } 918 { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&cpu }
895 919
@@ -921,6 +945,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
921 ICPU(0x56, idle_cpu_bdw), 945 ICPU(0x56, idle_cpu_bdw),
922 ICPU(0x4e, idle_cpu_skl), 946 ICPU(0x4e, idle_cpu_skl),
923 ICPU(0x5e, idle_cpu_skl), 947 ICPU(0x5e, idle_cpu_skl),
948 ICPU(0x57, idle_cpu_knl),
924 {} 949 {}
925}; 950};
926MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); 951MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids);