diff options
author | Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com> | 2014-09-04 20:22:54 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2016-03-23 16:19:38 -0400 |
commit | 281baf7a702693deaa45c98ef0c5161006b48257 (patch) | |
tree | 7b519adce293e68a69ac043740eb45094d0ae89b /drivers/idle | |
parent | d70e28f57e14a481977436695b0c9ba165472431 (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.c | 25 |
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 | }; |
719 | static 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 | ||
913 | static 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 | }; |
926 | MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); | 951 | MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); |