aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/idle
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2015-03-24 23:23:20 -0400
committerLen Brown <len.brown@intel.com>2015-03-31 21:57:15 -0400
commitd7ef76717322c8e2df7d4360b33faa9466cb1a0d (patch)
treee6341557089bb266f4844ba9f74ea8d61f9787d1 /drivers/idle
parent6c310bc1acdd02110182a2ec6efa3e7571a3b80c (diff)
intel_idle: Update support for Silvermont Core in Baytrail SOC
On some Silvermont-Core/Baytrail-SOC systems, C1E latency is higher than original specifications. Although C1E is still enumerated in CPUID.MWAIT.EDX, we delete the state from intel_idle to avoid latency impact. Under some conditions, the latency of the C6N-BYT and C6S-BYT states may exceed the specified values of 40 and 140 usec, respectively. Increase those values to 300 and 500 usec; to assure that the hardware does not violate constraints that may be set by the Linux PM_QOS sub-system. Also increase the C7-BYT target residency to 4.0 ms from 1.5 ms. Signed-off-by: Len Brown <len.brown@intel.com> Cc: Kumar P Mahesh <mahesh.kumar.p@intel.com> Cc: Alan Cox <alan@linux.intel.com> Cc: Mika Westerberg <mika.westerberg@linux.intel.com> Cc: <stable@vger.kernel.org>
Diffstat (limited to 'drivers/idle')
-rw-r--r--drivers/idle/intel_idle.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index b0e58522780d..44d1d7920202 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -218,18 +218,10 @@ static struct cpuidle_state byt_cstates[] = {
218 .enter = &intel_idle, 218 .enter = &intel_idle,
219 .enter_freeze = intel_idle_freeze, }, 219 .enter_freeze = intel_idle_freeze, },
220 { 220 {
221 .name = "C1E-BYT",
222 .desc = "MWAIT 0x01",
223 .flags = MWAIT2flg(0x01),
224 .exit_latency = 15,
225 .target_residency = 30,
226 .enter = &intel_idle,
227 .enter_freeze = intel_idle_freeze, },
228 {
229 .name = "C6N-BYT", 221 .name = "C6N-BYT",
230 .desc = "MWAIT 0x58", 222 .desc = "MWAIT 0x58",
231 .flags = MWAIT2flg(0x58) | CPUIDLE_FLAG_TLB_FLUSHED, 223 .flags = MWAIT2flg(0x58) | CPUIDLE_FLAG_TLB_FLUSHED,
232 .exit_latency = 40, 224 .exit_latency = 300,
233 .target_residency = 275, 225 .target_residency = 275,
234 .enter = &intel_idle, 226 .enter = &intel_idle,
235 .enter_freeze = intel_idle_freeze, }, 227 .enter_freeze = intel_idle_freeze, },
@@ -237,7 +229,7 @@ static struct cpuidle_state byt_cstates[] = {
237 .name = "C6S-BYT", 229 .name = "C6S-BYT",
238 .desc = "MWAIT 0x52", 230 .desc = "MWAIT 0x52",
239 .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TLB_FLUSHED, 231 .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TLB_FLUSHED,
240 .exit_latency = 140, 232 .exit_latency = 500,
241 .target_residency = 560, 233 .target_residency = 560,
242 .enter = &intel_idle, 234 .enter = &intel_idle,
243 .enter_freeze = intel_idle_freeze, }, 235 .enter_freeze = intel_idle_freeze, },
@@ -246,7 +238,7 @@ static struct cpuidle_state byt_cstates[] = {
246 .desc = "MWAIT 0x60", 238 .desc = "MWAIT 0x60",
247 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, 239 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
248 .exit_latency = 1200, 240 .exit_latency = 1200,
249 .target_residency = 1500, 241 .target_residency = 4000,
250 .enter = &intel_idle, 242 .enter = &intel_idle,
251 .enter_freeze = intel_idle_freeze, }, 243 .enter_freeze = intel_idle_freeze, },
252 { 244 {