From: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>,
nickpiggin@yahoo.com.au, vatsa@in.ibm.com, clameter@sgi.com,
tglx@linutronix.de, arjan@linux.intel.com,
linux-kernel@vger.kernel.org
Subject: Re: [RFC] Patch: dynticks: idle load balancing
Date: Wed, 13 Dec 2006 15:03:14 -0800 [thread overview]
Message-ID: <20061213150314.B12795@unix-os.sc.intel.com> (raw)
In-Reply-To: <20061213231316.GA13849@elte.hu>; from mingo@elte.hu on Thu, Dec 14, 2006 at 12:13:16AM +0100
On Thu, Dec 14, 2006 at 12:13:16AM +0100, Ingo Molnar wrote:
> there's another bug as well: in schedule() resched_cpu() is called with
> the current runqueue held in two places, which is deadlock potential.
resched_cpu() was getting called after prepare_task_switch() which
releases the current runqueue lock. Isn't it?
> The easiest fix for this is to use trylock - find the patch for that.
> This is a hint only anyway - and if a CPU is idle its runqueue will be
Though I don't see a potential deadlock, I like this optimization.
thanks,
suresh
> lockable. (fixing it via double-locking is easy in the first call site,
> but the second one looks harder)
>
> Ingo
>
> Index: linux/kernel/sched.c
> ===================================================================
> --- linux.orig/kernel/sched.c
> +++ linux/kernel/sched.c
> @@ -1167,12 +1167,14 @@ static void resched_task(struct task_str
> if (!tsk_is_polling(p))
> smp_send_reschedule(cpu);
> }
> +
> static void resched_cpu(int cpu)
> {
> struct rq *rq = cpu_rq(cpu);
> - unsigned int flags;
> + unsigned long flags;
>
> - spin_lock_irqsave(&rq->lock, flags);
> + if (!spin_trylock_irqsave(&rq->lock, flags))
> + return;
> resched_task(cpu_curr(cpu));
> spin_unlock_irqrestore(&rq->lock, flags);
> }
next prev parent reply other threads:[~2006-12-13 23:39 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-11 23:53 [RFC] Patch: dynticks: idle load balancing Siddha, Suresh B
2006-12-13 22:43 ` Ingo Molnar
2006-12-13 23:13 ` Ingo Molnar
2006-12-13 23:03 ` Siddha, Suresh B [this message]
2006-12-13 23:31 ` Ingo Molnar
2006-12-13 23:19 ` Siddha, Suresh B
2006-12-14 0:34 ` Ingo Molnar
2006-12-19 20:12 ` Ingo Molnar
2006-12-19 21:12 ` Siddha, Suresh B
2007-01-16 11:35 ` Ingo Molnar
2007-01-30 21:57 ` Siddha, Suresh B
2007-02-07 22:19 ` Siddha, Suresh B
2007-02-17 2:03 ` [patch 1/2] sched: fix idle load balancing in softirqd context Siddha, Suresh B
2007-02-17 2:08 ` [patch 2/2] sched: dynticks idle load balancing - v2 Siddha, Suresh B
2007-02-21 20:23 ` Andrew Morton
2007-02-22 3:14 ` Nick Piggin
2007-02-24 2:01 ` [patch] sched: dynticks idle load balancing - v3 Siddha, Suresh B
2007-02-22 3:26 ` [patch 2/2] sched: dynticks idle load balancing - v2 Nick Piggin
2007-02-22 22:33 ` Siddha, Suresh B
2007-02-23 3:43 ` Nick Piggin
2007-02-17 14:42 ` [patch 1/2] sched: fix idle load balancing in softirqd context Steven Rostedt
2007-02-21 6:25 ` Siddha, Suresh B
2007-02-21 20:13 ` Andrew Morton
2006-12-13 23:48 ` [RFC] Patch: dynticks: idle load balancing Ingo Molnar
2006-12-20 0:49 ` Steven Rostedt
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=20061213150314.B12795@unix-os.sc.intel.com \
--to=suresh.b.siddha@intel.com \
--cc=arjan@linux.intel.com \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nickpiggin@yahoo.com.au \
--cc=tglx@linutronix.de \
--cc=vatsa@in.ibm.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.