All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Len Brown <len.brown@intel.com>
Subject: [PATCH 11/16] intel_idle: support Haswell
Date: Fri,  8 Feb 2013 20:08:15 -0500	[thread overview]
Message-ID: <85a4d2d41dc6d1c0296326204a857a9fab864a31.1360371180.git.len.brown@intel.com> (raw)
In-Reply-To: <1360372100-28482-1-git-send-email-lenb@kernel.org>
In-Reply-To: <b1beab48f6148d50fee4a56d741cc3168fe1b995.1360371180.git.len.brown@intel.com>

From: Len Brown <len.brown@intel.com>

This patch enables intel_idle to run on the
next-generation Intel(R) Microarchitecture code named "Haswell".

Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/idle/intel_idle.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index b2cf489..fa71477 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -212,6 +212,38 @@ static struct cpuidle_state ivb_cstates[MWAIT_MAX_NUM_CSTATES] = {
 		.enter = &intel_idle },
 };
 
+static struct cpuidle_state hsw_cstates[MWAIT_MAX_NUM_CSTATES] = {
+	{ /* MWAIT C0 */ },
+	{ /* MWAIT C1 */
+		.name = "C1-HSW",
+		.desc = "MWAIT 0x00",
+		.flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID,
+		.exit_latency = 2,
+		.target_residency = 2,
+		.enter = &intel_idle },
+	{ /* MWAIT C2 */
+		.name = "C3-HSW",
+		.desc = "MWAIT 0x10",
+		.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED,
+		.exit_latency = 33,
+		.target_residency = 100,
+		.enter = &intel_idle },
+	{ /* MWAIT C3 */
+		.name = "C6-HSW",
+		.desc = "MWAIT 0x20",
+		.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED,
+		.exit_latency = 133,
+		.target_residency = 400,
+		.enter = &intel_idle },
+	{ /* MWAIT C4 */
+		.name = "C7s-HSW",
+		.desc = "MWAIT 0x32",
+		.flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED,
+		.exit_latency = 166,
+		.target_residency = 500,
+		.enter = &intel_idle },
+};
+
 static struct cpuidle_state atom_cstates[MWAIT_MAX_NUM_CSTATES] = {
 	{ /* MWAIT C0 */ },
 	{ /* MWAIT C1 */
@@ -365,6 +397,10 @@ static const struct idle_cpu idle_cpu_ivb = {
 	.state_table = ivb_cstates,
 };
 
+static const struct idle_cpu idle_cpu_hsw = {
+	.state_table = hsw_cstates,
+};
+
 #define ICPU(model, cpu) \
 	{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&cpu }
 
@@ -382,6 +418,9 @@ static const struct x86_cpu_id intel_idle_ids[] = {
 	ICPU(0x2d, idle_cpu_snb),
 	ICPU(0x3a, idle_cpu_ivb),
 	ICPU(0x3e, idle_cpu_ivb),
+	ICPU(0x3c, idle_cpu_hsw),
+	ICPU(0x3f, idle_cpu_hsw),
+	ICPU(0x45, idle_cpu_hsw),
 	{}
 };
 MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids);
-- 
1.8.1.3.535.ga923c31


  parent reply	other threads:[~2013-02-09  1:10 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-09  1:08 idle patches queued for Linux-3.9 Len Brown
2013-02-09  1:08 ` [PATCH 01/16] intel_idle: stop using driver_data for static flags Len Brown
2013-02-09  1:08   ` [PATCH 02/16] Replace the flag by a simple global boolean in the cpuidle.c. That will allow to cleanup the rest of the code right after, because the ops won't make sense Len Brown
2013-02-09  1:08   ` [PATCH 03/16] davinci: cpuidle - move code to prevent forward declaration Len Brown
2013-02-09  1:08   ` [PATCH 04/16] davinci: cpuidle - remove the ops Len Brown
2013-02-09  1:08   ` [PATCH 05/16] davinci: cpuidle - remove useless initialization Len Brown
2013-02-09  1:08   ` [PATCH 06/16] ACPI / idle: remove unused definition Len Brown
2013-02-09  1:08   ` [PATCH 07/16] ACPI / idle : remove pointless headers Len Brown
2013-02-09  1:08   ` [PATCH 08/16] ACPI / idle: pass the cpuidle_device parameter Len Brown
2013-02-09  1:08   ` [PATCH 09/16] ACPI / idle: remove usage of the statedata Len Brown
2013-02-09  1:08   ` [PATCH 10/16] cpuidle: remove vestage definition of cpuidle_state_usage.driver_data Len Brown
2013-02-11  8:48     ` Daniel Lezcano
2013-02-09  1:08   ` Len Brown [this message]
2013-02-09  1:08   ` [PATCH 12/16] tools/power turbostat: support Haswell Len Brown
2013-02-09  1:08   ` [PATCH 13/16] tools/power turbostat: decode MSR_IA32_POWER_CTL Len Brown
2013-02-09  1:08   ` [PATCH 14/16] intel_idle: remove use and definition of MWAIT_MAX_NUM_CSTATES Len Brown
2013-02-11  8:53     ` Daniel Lezcano
2013-02-11 23:46       ` Len Brown
2013-02-12 22:43         ` Daniel Lezcano
2013-02-18  5:00           ` cpuidle sizes (Re: [PATCH 14/16] intel_idle: remove use and definition of MWAIT_MAX_NUM_CSTATES) Len Brown
2013-02-09  1:08   ` [PATCH 15/16] intel_idle: remove assumption of one C-state per MWAIT flag Len Brown
2013-02-09  1:08   ` [PATCH 16/16] intel_idle: export both C1 and C1E Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=85a4d2d41dc6d1c0296326204a857a9fab864a31.1360371180.git.len.brown@intel.com \
    --to=lenb@kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.