From: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
To: benh@kernel.crashing.org, daniel.lezcano@linaro.org,
kernel@vger.kernel.org, scottwood@freescale.com,
linux-pm@lists.linux-foundation.org,
linuxppc-dev@lists.ozlabs.org
Cc: preeti@linux.vnet.ibm.com, dongsheng.wang@freescale.com
Subject: [RFC PATCH V3 4/5] powerpc/cpuidle: Enable powernv cpuidle support.
Date: Mon, 19 Aug 2013 09:58:28 +0530 [thread overview]
Message-ID: <20130819042827.8609.35239.stgit@deepthi.in.ibm.com> (raw)
In-Reply-To: <20130819042736.8609.17890.stgit@deepthi.in.ibm.com>
The following patch extends the current powerpc backend
idle driver to the powernv platform.
Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
---
drivers/cpuidle/cpuidle-powerpc.c | 36 +++++++++++++++++++++++++++++++++---
1 file changed, 33 insertions(+), 3 deletions(-)
diff --git a/drivers/cpuidle/cpuidle-powerpc.c b/drivers/cpuidle/cpuidle-powerpc.c
index 5756085..e1cf599 100644
--- a/drivers/cpuidle/cpuidle-powerpc.c
+++ b/drivers/cpuidle/cpuidle-powerpc.c
@@ -53,7 +53,9 @@ static int snooze_loop(struct cpuidle_device *dev,
{
unsigned long in_purr;
- idle_loop_prolog(&in_purr);
+ if (firmware_has_feature(FW_FEATURE_SPLPAR))
+ idle_loop_prolog(&in_purr);
+
local_irq_enable();
set_thread_flag(TIF_POLLING_NRFLAG);
@@ -67,7 +69,8 @@ static int snooze_loop(struct cpuidle_device *dev,
clear_thread_flag(TIF_POLLING_NRFLAG);
smp_mb();
- idle_loop_epilog(in_purr);
+ if (firmware_has_feature(FW_FEATURE_SPLPAR))
+ idle_loop_epilog(in_purr);
return index;
}
@@ -130,6 +133,15 @@ static int shared_cede_loop(struct cpuidle_device *dev,
return index;
}
+static int nap_loop(struct cpuidle_device *dev,
+ struct cpuidle_driver *drv,
+ int index)
+{
+ ppc64_runlatch_off();
+ power7_idle();
+ return index;
+}
+
/*
* States for dedicated partition case.
*/
@@ -163,6 +175,23 @@ static struct cpuidle_state shared_states[MAX_IDLE_STATE_COUNT] = {
.enter = &shared_cede_loop },
};
+static struct cpuidle_state powernv_states[MAX_IDLE_STATE_COUNT] = {
+ { /* Snooze */
+ .name = "snooze",
+ .desc = "snooze",
+ .flags = CPUIDLE_FLAG_TIME_VALID,
+ .exit_latency = 0,
+ .target_residency = 0,
+ .enter = &snooze_loop },
+ { /* NAP */
+ .name = "NAP",
+ .desc = "NAP",
+ .flags = CPUIDLE_FLAG_TIME_VALID,
+ .exit_latency = 10,
+ .target_residency = 100,
+ .enter = &nap_loop },
+};
+
void update_smt_snooze_delay(int cpu, int residency)
{
struct cpuidle_driver *drv = cpuidle_get_driver();
@@ -282,7 +311,6 @@ static int powerpc_idle_devices_init(void)
return -EIO;
}
}
-
return 0;
}
@@ -309,6 +337,8 @@ static int powerpc_idle_probe(void)
cpuidle_state_table = shared_states;
else if (get_lppaca_is_shared_proc() == 0)
cpuidle_state_table = dedicated_states;
+ } else if (firmware_has_feature(FW_FEATURE_OPALv3)) {
+ cpuidle_state_table = powernv_states;
} else
return -ENODEV;
next prev parent reply other threads:[~2013-08-19 4:29 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-19 4:27 [RFC PATCH V3 0/5] powerpc/cpuidle: Generic POWERPC cpuidle driver enabled for POWER and POWERNV platforms Deepthi Dharwar
2013-08-19 4:28 ` [RFC PATCH V3 1/5] pseries/cpuidle: Remove dependency of pseries.h file Deepthi Dharwar
2013-08-19 4:28 ` [RFC PATCH V3 2/5] pseries: Move plpar_wrapper.h to powerpc common include/asm location Deepthi Dharwar
2013-08-19 4:28 ` [RFC PATCH V3 3/5] powerpc/cpuidle: Generic powerpc backend cpuidle driver Deepthi Dharwar
2013-08-19 5:52 ` Wang Dongsheng-B40534
2013-08-19 10:18 ` Deepthi Dharwar
2013-08-19 18:17 ` Scott Wood
2013-08-21 4:53 ` Deepthi Dharwar
2013-08-21 20:08 ` Scott Wood
2013-08-22 5:50 ` Deepthi Dharwar
2013-08-22 5:58 ` Benjamin Herrenschmidt
2013-08-22 6:41 ` Deepthi Dharwar
2013-08-22 21:24 ` Scott Wood
2013-08-23 10:11 ` Deepthi Dharwar
2013-08-19 4:28 ` Deepthi Dharwar [this message]
2013-08-19 4:28 ` [RFC PATCH V3 5/5] powernv/cpuidle: Enable idle powernv cpu to call into the cpuidle framework Deepthi Dharwar
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=20130819042827.8609.35239.stgit@deepthi.in.ibm.com \
--to=deepthi@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=daniel.lezcano@linaro.org \
--cc=dongsheng.wang@freescale.com \
--cc=kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=preeti@linux.vnet.ibm.com \
--cc=scottwood@freescale.com \
/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.