linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] irqchip: gic: Allow setting affinity to offline CPUs
Date: Tue, 20 Aug 2013 15:39:17 -0700	[thread overview]
Message-ID: <20130820223916.GB23960@codeaurora.org> (raw)
In-Reply-To: <2189739.GnKWSuLhMq@flatron>

On 08/21, Tomasz Figa wrote:
> On Tuesday 20 of August 2013 22:14:42 Russell King - ARM Linux wrote:
> > On Tue, Aug 20, 2013 at 06:11:10PM +0200, Tomasz Figa wrote:
> > > Sometimes it is necessary to fix interrupt affinity to an offline CPU,
> > > for example in initialization of local timers. This patch modifies
> > > .set_affinity() operation of irq-gic driver to fall back to any
> > > possible CPU if no online CPU can be found in requested CPU mask.
> > 
> > Err, this is a bad idea.  If a CPU is offline, then it must not respond
> > to interrupts.  If you bind an interrupt to an offline CPU, and that
> > device asserts its interrupt, what happens?  It doesn't get serviced
> > until that CPU comes back online, which may be a very long time.
> > 
> > If, for example, that is your network device, it would mean your
> > network stops operating.  Worse, the network layer will time out and
> > reset the ethernet device, trying to get things working (which it
> > won't.)
> > 
> > I think how I used to handle this case prior to genirq is that I fell
> > back to any online CPU if the interrupt ended up only routed to offline
> > CPUs, but when an offline CPU comes back, it could then be re-routed
> > back to that CPU.  In other words, the mask change was non-destructive.
> > 
> > I think with genirq, such mask changes are destructive.
> 
> Yes, that's correct. Although if you _explicitly_ request the interrupt to 
> be routed to an offline CPU (i.e. only offline CPUs have bits set in 
> passed cpumask), is it an error?
> 
> There is at least one irqchip that does not check received cpumask for 
> this (metag) and I don't see any documentation saying what should happen 
> in this case in .set_affinity operation.
> 
> Still, if you have any better solution for the original problem (broken 
> Exynos4210 local timers, due to failing irq_set_affinity()), then I'd 
> appreciate it, as I don't like the one from this patch too much either.
> 

One "solution" might be to change the irq affinity after the CPU
is marked online via the hotplug notifier chain. For a short
period of time the timer interrupt will go to a different CPU but
I don't see how that is a problem.

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

  reply	other threads:[~2013-08-20 22:39 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-20 16:11 [PATCH] irqchip: gic: Allow setting affinity to offline CPUs Tomasz Figa
2013-08-20 16:33 ` Stephen Boyd
2013-08-20 16:41   ` Tomasz Figa
2013-08-20 16:48     ` Stephen Boyd
2013-08-20 16:57       ` Tomasz Figa
2013-08-20 21:14 ` Russell King - ARM Linux
2013-08-20 22:11   ` Tomasz Figa
2013-08-20 22:39     ` Stephen Boyd [this message]
2013-08-21 12:23       ` Tomasz Figa

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=20130820223916.GB23960@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).