Re: [patch 08/34] arm: Use generic idle loop

Stephen Boyd
2013-04-25T20:03:45Z

On 04/09/13 02:38, Russell King - ARM Linux wrote:
> On Tue, Apr 09, 2013 at 11:20:31AM +0200, Thomas Gleixner wrote:
>> On Mon, 8 Apr 2013, Russell King - ARM Linux wrote:
>>> On Mon, Mar 25, 2013 at 03:02:39PM +0100, Thomas Gleixner wrote:
>>> So, how can I review these changes when all there is is a git URL, and
>>> I *do* not want to pull them into my tree without first looking at the
>>> patches, possibly reviewing them and *replying* with the patch inline?
>> the patches were CC'ed to LKML and linux-arch and I expected that you
>> are at least having the latter. Find the relevant patch inlined below.
> I've not been on linux-arch for a few years now, after it evolved into
> yet another lkml-like list with high traffic rates, where mainly specific
> x86 issues seemed to be discussed, rather than it being a way to contact
> all arch maintainers.
>
>> It is a counter. I looked carefully at all the various slightly
>> differently fcked up implementations and picked the counter based one
>> as it fits all requirements.
> Great, thanks. The attached patch looks fine to me.

I'm pretty sure that we need to apply this patch now that
rcu_idle_enter()/exit() is called lower down in the idle loop. Kevin,
did you test hotplug?

----8<-----

From: Stephen Boyd <sboyd@codeaurora.org>
Subject: [PATCH] ARM: smp: Drop RCU_NONIDLE usage in cpu_die()

Before f7b861b (arm: Use generic idle loop, 2013-03-21) ARM would
kill the CPU within the rcu idle section. Now that the
rcu_idle_enter()/exit() pair have been pushed lower down in the
idle loop this is no longer true and so using RCU_NONIDLE here is
no longer necessary and also harmful because RCU is not actually
idle at this point.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
arch/arm/kernel/smp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 4619177..78f1eb5 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -233,7 +233,7 @@ void __ref cpu_die(void)
mb();

/* Tell __cpu_die() that this CPU is now safe to dispose of */
- RCU_NONIDLE(complete(&cpu_died));
+ complete(&cpu_died);

/*
* actual CPU shutdown procedure is at least platform (if not

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation