Thread (14 messages) 14 messages, 6 authors, 2013-08-29

Re: [PATCH 1/3] cpuidle: coupled: disable interrupts after entering safe state

From: Colin Cross <hidden>
Date: 2013-08-29 07:12:21
Also in: linux-tegra, lkml, stable

On Wed, Aug 28, 2013 at 11:50 PM, Prashant Gaikwad [off-list ref] wrote:
On Saturday 24 August 2013 01:15 AM, Colin Cross wrote:
quoted
Calling cpuidle_enter_state is expected to return with interrupts
enabled, but interrupts must be disabled before starting the
ready loop synchronization stage.  Call local_irq_disable after
each call to cpuidle_enter_state for the safe state.

CC: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Signed-off-by: Colin Cross <redacted>
---
  drivers/cpuidle/coupled.c | 2 ++
  1 file changed, 2 insertions(+)
diff --git a/drivers/cpuidle/coupled.c b/drivers/cpuidle/coupled.c
index 2a297f8..db92bcb 100644
--- a/drivers/cpuidle/coupled.c
+++ b/drivers/cpuidle/coupled.c
@@ -460,6 +460,7 @@ int cpuidle_enter_state_coupled(struct cpuidle_device
*dev,
                }
                entered_state = cpuidle_enter_state(dev, drv,
                        dev->safe_state_index);
+               local_irq_disable();

Colin,

There is still some window where irq remains enabled after exiting safe
state. It may introduce some corner case.
Instead of this can we pass a parameter to cpuidle_enter_state indicating
that irq has to be enabled or not after exit from idle state, which would be
false when entering safe state from coupled idle.
It's fine for irqs to be enabled when exiting the safe state, in fact
on further inspection this patch isn't strictly necessary at all - we
always enable interrupts inside cpuidle_coupled_clear_pokes soon after
cpuidle_enter_state returns, and then disable them again.  It's
probably better to disable interrupts right after cpuidle_enter_state,
it makes sure interrupts are consistently disabled when calling
cpuidle_coupled_set_waiting, cpuidle_coupled_cpus_waiting and
cpuidle_coupled_clear_pokes, although that doesn't matter in the
current implementation.

Rafael, feel free to drop the stable annotation from this patch.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help