From: David Miller <davem@davemloft.net>
To: paulmck@linux.vnet.ibm.com
Cc: linux-kernel@vger.kernel.org, wli@holomorphy.com,
sparclinux@vger.kernel.org, manfred@colorfullife.com,
akpm@linux-foundation.org
Subject: Re: [PATCH] prevent sparc64 from invoking irq handlers on offline CPUs
Date: Mon, 08 Sep 2008 17:17:08 -0700 (PDT) [thread overview]
Message-ID: <20080908.171708.43575256.davem@davemloft.net> (raw)
In-Reply-To: <20080903154217.GA6807@linux.vnet.ibm.com>
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date: Wed, 3 Sep 2008 08:42:17 -0700
> Here are the situations I can think of (no doubt betraying my ignorance
> of modern processor irq hardware in general and of sparc64 in particular):
>
> o Pending device irq. There should be a limited number of these,
> and the fixup_irqs() call prevents any more from appearing.
Correct.
> o Pending scheduling-clock interrupts. Does fixup_irqs() turn
> these off as well? (It does if the scheduling-clock interrupt
> is one of the 0..NR_IRQS irqs.) On the other hand, leaving
> one of these pending should not be a problem (famous last
> words).
No, the timer interrupts are controlled differently, as the IRQ source
lives inside of the CPU rather in some external entity.
I need to fix that by invoking tick_ops->disable_irq() here. I'll take
care of this.
> o Pending IPIs. There should again be a limited number of these.
> Except that an IPI handler could possibly IPI this CPU, as could
> a device irq handler, I suppose. (We cannot receive additional
> IPIs from other CPUs, as they are spinning with irqs disabled.)
And IPI handler runs in HW irq context, therefore such an IPI-creates-an-IPI
should not be allowed, at least not directly.
Actually the restriction seems to be that an IPI cannot be sent when
"irqs_disabled()", hmmm...
> o Timer irqs. Not sure what happens to add_timer() calls from
> a CPU that is going offline. The hope would be that they get
> queued to some other CPU?
This case is interesting, and I'm no sure what happens here.
> Now, an IPI handler cannot be allowed to send a synchronous IPI to
> anyone, because the other CPUs are spinning with irqs disabled until
> __cpu_disable() returns. And in any context, a handler for a synchronous
> IPI cannot be allowed to send a synchronous IPI to any set of CPUs that
> might include the sender of the currently running handler, as doing so
> would result in deadlock.
Exactly.
next prev parent reply other threads:[~2008-09-09 0:17 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-31 17:33 Paul E. McKenney
2008-09-03 0:16 ` David Miller
2008-09-03 0:42 ` Paul E. McKenney
2008-09-03 9:21 ` David Miller
2008-09-03 15:42 ` Paul E. McKenney
2008-09-09 0:17 ` David Miller [this message]
2008-09-09 14:54 ` Paul E. McKenney
2008-09-09 18:49 ` Manfred Spraul
2008-09-09 19:57 ` David Miller
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=20080908.171708.43575256.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=manfred@colorfullife.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=sparclinux@vger.kernel.org \
--cc=wli@holomorphy.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 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®