, Arnd Bergmann <a...@arndb.de>, ulli.kr...@googlemail.com, vgu...@kernel.org, 
linux-...@vger.kernel.org, j...@joshtriplett.org, rost...@goodmis.org, 
r...@vger.kernel.org, b...@alien8.de, bc...@quicinc.com, 
tsbog...@alpha.franken.de, linux-par...@vger.kernel.org, sudeep.ho...@arm.com, 
shawn...@kernel.org, da...@davemloft.net, dal...@libc.org, t...@atomide.com, 
amakha...@vmware.com, bjorn.anders...@linaro.org, h...@zytor.com, 
sparcli...@vger.kernel.org, linux-hexa...@vger.kernel.org, 
linux-ri...@lists.infradead.org, anton.iva...@cambridgegreys.com, 
jo...@southpole.se, yury.no...@gmail.com, rich...@nod.at, x...@kernel.org, 
li...@armlinux.org.uk, mi...@redhat.com, a...@eecs.berkeley.edu, 
paul...@kernel.org, h...@linux.ibm.com, stefan.kristians...@saunalahti.fi, 
openr...@lists.librecores.org, paul.walms...@sifive.com, 
linux-te...@vger.kernel.org, namhy...@kernel.org, 
andriy.shevche...@linux.intel.com, jpoim...@kernel.org, jgr...@suse.com, 
mon...@monstr.eu, linux-m...@vger.kernel.org, palmer@dab
 belt.com, a...@brainfault.org, i...@jurassic.park.msu.ru, 
johan...@sipsolutions.net, linuxppc-dev@lists.ozlabs.org
Errors-To: linuxppc-dev-bounces+archive=mail-archive....@lists.ozlabs.org
Sender: "Linuxppc-dev" 
<linuxppc-dev-bounces+archive=mail-archive....@lists.ozlabs.org>

Doing RCU-idle outside the driver, only to then teporarily enable it
again before going idle is daft.

Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org>
---
 arch/arm/mach-omap2/cpuidle34xx.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -133,7 +133,9 @@ static int omap3_enter_idle(struct cpuid
        }
 
        /* Execute ARM wfi */
+       rcu_idle_enter();
        omap_sram_idle();
+       rcu_idle_exit();
 
        /*
         * Call idle CPU PM enter notifier chain to restore
@@ -265,6 +267,7 @@ static struct cpuidle_driver omap3_idle_
        .owner            = THIS_MODULE,
        .states = {
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 2 + 2,
                        .target_residency = 5,
@@ -272,6 +275,7 @@ static struct cpuidle_driver omap3_idle_
                        .desc             = "MPU ON + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 10 + 10,
                        .target_residency = 30,
@@ -279,6 +283,7 @@ static struct cpuidle_driver omap3_idle_
                        .desc             = "MPU ON + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 50 + 50,
                        .target_residency = 300,
@@ -286,6 +291,7 @@ static struct cpuidle_driver omap3_idle_
                        .desc             = "MPU RET + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 1500 + 1800,
                        .target_residency = 4000,
@@ -293,6 +299,7 @@ static struct cpuidle_driver omap3_idle_
                        .desc             = "MPU OFF + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 2500 + 7500,
                        .target_residency = 12000,
@@ -300,6 +307,7 @@ static struct cpuidle_driver omap3_idle_
                        .desc             = "MPU RET + CORE RET",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 3000 + 8500,
                        .target_residency = 15000,
@@ -307,6 +315,7 @@ static struct cpuidle_driver omap3_idle_
                        .desc             = "MPU OFF + CORE RET",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 10000 + 30000,
                        .target_residency = 30000,
@@ -328,6 +337,7 @@ static struct cpuidle_driver omap3430_id
        .owner            = THIS_MODULE,
        .states = {
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 110 + 162,
                        .target_residency = 5,
@@ -335,6 +345,7 @@ static struct cpuidle_driver omap3430_id
                        .desc             = "MPU ON + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 106 + 180,
                        .target_residency = 309,
@@ -342,6 +353,7 @@ static struct cpuidle_driver omap3430_id
                        .desc             = "MPU ON + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 107 + 410,
                        .target_residency = 46057,
@@ -349,6 +361,7 @@ static struct cpuidle_driver omap3430_id
                        .desc             = "MPU RET + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 121 + 3374,
                        .target_residency = 46057,
@@ -356,6 +369,7 @@ static struct cpuidle_driver omap3430_id
                        .desc             = "MPU OFF + CORE ON",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 855 + 1146,
                        .target_residency = 46057,
@@ -363,6 +377,7 @@ static struct cpuidle_driver omap3430_id
                        .desc             = "MPU RET + CORE RET",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 7580 + 4134,
                        .target_residency = 484329,
@@ -370,6 +385,7 @@ static struct cpuidle_driver omap3430_id
                        .desc             = "MPU OFF + CORE RET",
                },
                {
+                       .flags            = CPUIDLE_FLAG_RCU_IDLE,
                        .enter            = omap3_enter_idle_bm,
                        .exit_latency     = 7505 + 15274,
                        .target_residency = 484329,


Reply via email to