diff options
author | Len Brown <len.brown@intel.com> | 2015-03-24 23:23:20 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2015-03-31 21:57:15 -0400 |
commit | d7ef76717322c8e2df7d4360b33faa9466cb1a0d (patch) | |
tree | e6341557089bb266f4844ba9f74ea8d61f9787d1 /drivers/idle | |
parent | 6c310bc1acdd02110182a2ec6efa3e7571a3b80c (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.c | 14 |
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 | { |