From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Zwane Mwaikambo <zwane@arm.linux.org.uk>
Cc: Nish Aravamudan <nish.aravamudan@gmail.com>,
"Paul E. McKenney" <paulmck@us.ibm.com>,
Andrew Morton <akpm@osdl.org>,
Stephen Rothwell <sfr@canb.auug.org.au>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Dipankar Sarma <dipankar@in.ibm.com>,
Li Shaohua <shaohua.li@intel.com>,
Len Brown <len.brown@intel.com>
Subject: Re: [PATCH] Remove RCU abuse in cpu_idle()
Date: Mon, 20 Dec 2004 12:56:24 +1100 [thread overview]
Message-ID: <1103507784.5093.9.camel@npiggin-nld.site> (raw)
In-Reply-To: <Pine.LNX.4.61.0412191819130.18310@montezuma.fsmlabs.com>
On Sun, 2004-12-19 at 18:44 -0700, Zwane Mwaikambo wrote:
> On Mon, 20 Dec 2004, Nick Piggin wrote:
>
> > This thread can possibly be stalled forever if there is a CPU hog
> > running, right?
>
> Yep.
>
> > In which case, you will want to use ssleep rather than a busy loop.
>
> Well ssleep essentially does the same thing as the schedule_timeout.
>
Yes - so long as you set ->state when using schedule_timeout ;)
> > Another alternative may be to use more complex logic to detect that a
> > CPU is not in the idle loop at all. In that case, a simple cpu_relax
> > type spin loop should be OK, because the synchronisation would be
> > achieved very quickly.
>
> I considered checking whether the cpu is in the idle thread or not but
> wouldn't that require locking runqueues? Something like;
>
> pm_idle = new_value;
> wmb();
> busy_map = cpu_online_map;
> for_each_online_cpu(cpu) {
> runqueue_t *rq = cpu_rq(cpu);
> spin_lock_irq(&rq->lock);
> if (rq->curr != rq->idle)
> cpu_clear(cpu, busy_map);
> spin_unlock_irq(&rq->lock);
> }
>
> cpu_idle_map = busy_map;
> wmb();
>
> while (!cpus_empty(cpu_idle_map)) {
> cpus_and(cpu_idle_map, cpu_idle_map, cpu_online_map);
> ssleep(1);
> }
>
> Hmm then again, i think we could get away with doing an unlocked compare
> on the rq->curr and rq->idle since we've written back pm_idle and reading
> a stale rq->curr which isn't equal to rq->idle means that the remote
> processor should also have the new pm_idle. I'm still not convinced that
> it deserves this much complexity, this is a rarely carried out operation
> and usually at boottime or shutdown.
>
Hmm, yeah it is fairly complex, now that you've expanded on my
handwaving!
I think you are right about not requiring locking, so long as you
have the appropriate memory barriers in place... but it's probably
not worth the effort, as you say.
Nick
next prev parent reply other threads:[~2004-12-20 2:10 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-05 0:45 Fw: [RFC] Strange code " Paul E. McKenney
2004-12-06 0:16 ` Stephen Rothwell
2004-12-06 6:46 ` Stephen Rothwell
2004-12-06 10:00 ` Zwane Mwaikambo
2004-12-06 7:20 ` Andrew Morton
2004-12-06 9:38 ` Zwane Mwaikambo
2004-12-06 16:04 ` Paul E. McKenney
2004-12-06 16:47 ` Zwane Mwaikambo
2004-12-06 19:22 ` Paul E. McKenney
2004-12-11 15:07 ` Zwane Mwaikambo
2004-12-12 4:54 ` [PATCH] Remove RCU abuse " Zwane Mwaikambo
2004-12-12 5:06 ` Zwane Mwaikambo
2004-12-12 5:49 ` Zwane Mwaikambo
2004-12-13 6:13 ` Andrew Morton
2004-12-13 6:22 ` Zwane Mwaikambo
2004-12-13 6:32 ` Andrew Morton
2004-12-13 7:09 ` Zwane Mwaikambo
2004-12-13 6:41 ` Andrew Morton
2004-12-13 7:13 ` Zwane Mwaikambo
2004-12-19 2:40 ` Nish Aravamudan
2004-12-20 0:59 ` Zwane Mwaikambo
2004-12-20 1:15 ` Nick Piggin
2004-12-20 1:44 ` Zwane Mwaikambo
2004-12-20 1:56 ` Nick Piggin [this message]
2004-12-20 2:10 ` Zwane Mwaikambo
2004-12-20 2:30 ` Nish Aravamudan
2004-12-20 18:27 ` Nishanth Aravamudan
2004-12-20 22:57 ` Zwane Mwaikambo
2004-12-20 23:15 ` Andrew Morton
2004-12-20 23:16 ` Zwane Mwaikambo
2004-12-20 23:26 ` Nishanth Aravamudan
2004-12-20 2:26 ` Nish Aravamudan
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=1103507784.5093.9.camel@npiggin-nld.site \
--to=nickpiggin@yahoo.com.au \
--cc=akpm@osdl.org \
--cc=dipankar@in.ibm.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nish.aravamudan@gmail.com \
--cc=paulmck@us.ibm.com \
--cc=sfr@canb.auug.org.au \
--cc=shaohua.li@intel.com \
--cc=zwane@arm.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®