All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Marc Zyngier <maz@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, catalin.marinas@arm.com,
	james.morse@arm.com, marcan@marcan.st, tglx@linutronix.de,
	will@kernel.org
Subject: Re: [PATCH 5/8] arm64: irq: add a default handle_irq panic function
Date: Mon, 22 Feb 2021 11:25:44 +0000	[thread overview]
Message-ID: <20210222112544.GB70951@C02TD0UTHF1T.local> (raw)
In-Reply-To: <1d2c27d72b9b2cbdb83d25165a20559a@kernel.org>

On Mon, Feb 22, 2021 at 10:48:11AM +0000, Marc Zyngier wrote:
> On 2021-02-22 09:59, Mark Rutland wrote:
> > On Fri, Feb 19, 2021 at 11:39:01AM +0000, Mark Rutland wrote:
> > > +void (*handle_arch_irq)(struct pt_regs *) __ro_after_init =
> > > default_handle_irq;
> > > 
> > >  int __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
> > >  {
> > > -	if (handle_arch_irq)
> > > +	if (handle_arch_irq != default_handle_irq)
> > >  		return -EBUSY;
> > > 
> > >  	handle_arch_irq = handle_irq;
> > > @@ -87,7 +92,7 @@ void __init init_IRQ(void)
> > >  	init_irq_stacks();
> > >  	init_irq_scs();
> > >  	irqchip_init();
> > > -	if (!handle_arch_irq)
> > > +	if (handle_arch_irq == default_handle_irq)
> > >  		panic("No interrupt controller found.");
> 
> It also seems odd to have both default_handle_irq() that panics,
> and init_IRQ that panics as well. Not a big deal, but maybe
> we should just drop this altogether and get the firework on the
> first interrupt.

My gut feeling was that both were useful, and served slightly different
cases:

* The panic in default_handle_irq() helps if we unexpectedly unmask IRQ
  too early. This is mostly a nicety over the current behaviour of
  branching to NULL in this case.

* The panic in init_IRQ() gives us a consistent point at which we can
  note the absence of a root IRQ controller even if all IRQs are
  quiescent. This is a bit nicer to debug than seeing a load of driver
  probes fail their request_irq() or whatever.

... so I'd err on the side of keeping both, but if you think otherwise
I'm happy to change this.

Thanks,
Mark.

WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: Marc Zyngier <maz@kernel.org>
Cc: catalin.marinas@arm.com, marcan@marcan.st,
	linux-kernel@vger.kernel.org, james.morse@arm.com,
	tglx@linutronix.de, will@kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 5/8] arm64: irq: add a default handle_irq panic function
Date: Mon, 22 Feb 2021 11:25:44 +0000	[thread overview]
Message-ID: <20210222112544.GB70951@C02TD0UTHF1T.local> (raw)
In-Reply-To: <1d2c27d72b9b2cbdb83d25165a20559a@kernel.org>

On Mon, Feb 22, 2021 at 10:48:11AM +0000, Marc Zyngier wrote:
> On 2021-02-22 09:59, Mark Rutland wrote:
> > On Fri, Feb 19, 2021 at 11:39:01AM +0000, Mark Rutland wrote:
> > > +void (*handle_arch_irq)(struct pt_regs *) __ro_after_init =
> > > default_handle_irq;
> > > 
> > >  int __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
> > >  {
> > > -	if (handle_arch_irq)
> > > +	if (handle_arch_irq != default_handle_irq)
> > >  		return -EBUSY;
> > > 
> > >  	handle_arch_irq = handle_irq;
> > > @@ -87,7 +92,7 @@ void __init init_IRQ(void)
> > >  	init_irq_stacks();
> > >  	init_irq_scs();
> > >  	irqchip_init();
> > > -	if (!handle_arch_irq)
> > > +	if (handle_arch_irq == default_handle_irq)
> > >  		panic("No interrupt controller found.");
> 
> It also seems odd to have both default_handle_irq() that panics,
> and init_IRQ that panics as well. Not a big deal, but maybe
> we should just drop this altogether and get the firework on the
> first interrupt.

My gut feeling was that both were useful, and served slightly different
cases:

* The panic in default_handle_irq() helps if we unexpectedly unmask IRQ
  too early. This is mostly a nicety over the current behaviour of
  branching to NULL in this case.

* The panic in init_IRQ() gives us a consistent point at which we can
  note the absence of a root IRQ controller even if all IRQs are
  quiescent. This is a bit nicer to debug than seeing a load of driver
  probes fail their request_irq() or whatever.

... so I'd err on the side of keeping both, but if you think otherwise
I'm happy to change this.

Thanks,
Mark.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-02-22 11:28 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-19 11:38 [PATCH 0/8] arm64: Support FIQ controller registration Mark Rutland
2021-02-19 11:38 ` Mark Rutland
2021-02-19 11:38 ` [PATCH 1/8] ARM: ep93xx: Select GENERIC_IRQ_MULTI_HANDLER directly Mark Rutland
2021-02-19 11:38   ` Mark Rutland
2021-02-19 11:38 ` [PATCH 2/8] irqchip: Do not blindly select CONFIG_GENERIC_IRQ_MULTI_HANDLER Mark Rutland
2021-02-19 11:38   ` Mark Rutland
2021-02-19 11:38 ` [PATCH 3/8] genirq: Allow architectures to override set_handle_irq() fallback Mark Rutland
2021-02-19 11:38   ` Mark Rutland
2021-02-19 11:39 ` [PATCH 4/8] arm64: don't use GENERIC_IRQ_MULTI_HANDLER Mark Rutland
2021-02-19 11:39   ` Mark Rutland
2021-02-19 11:39 ` [PATCH 5/8] arm64: irq: add a default handle_irq panic function Mark Rutland
2021-02-19 11:39   ` Mark Rutland
2021-02-22  9:59   ` Mark Rutland
2021-02-22  9:59     ` Mark Rutland
2021-02-22 10:48     ` Marc Zyngier
2021-02-22 10:48       ` Marc Zyngier
2021-02-22 11:25       ` Mark Rutland [this message]
2021-02-22 11:25         ` Mark Rutland
2021-02-22 11:43         ` Marc Zyngier
2021-02-22 11:43           ` Marc Zyngier
2021-02-22 12:06           ` Mark Rutland
2021-02-22 12:06             ` Mark Rutland
2021-02-22 12:23             ` Marc Zyngier
2021-02-22 12:23               ` Marc Zyngier
2021-02-19 11:39 ` [PATCH 6/8] arm64: entry: factor irq triage logic into macros Mark Rutland
2021-02-19 11:39   ` Mark Rutland
2021-02-19 11:39 ` [PATCH 7/8] arm64: Always keep DAIF.[IF] in sync Mark Rutland
2021-02-19 11:39   ` Mark Rutland
2021-02-19 17:25   ` [PATCH 7/8 v1.5] " Hector Martin
2021-02-19 17:25     ` Hector Martin
2021-02-19 18:26     ` Mark Rutland
2021-02-19 18:26       ` Mark Rutland
2021-02-22 17:39       ` Hector Martin
2021-02-22 17:39         ` Hector Martin
2021-02-22 18:43         ` Mark Rutland
2021-02-22 18:43           ` Mark Rutland
2021-02-19 11:39 ` [PATCH 8/8] arm64: irq: allow FIQs to be handled Mark Rutland
2021-02-19 11:39   ` Mark Rutland
2021-02-19 15:37   ` Joey Gouly
2021-02-19 15:37     ` Joey Gouly
2021-02-19 18:18     ` Mark Rutland
2021-02-19 18:18       ` Mark Rutland
2021-02-19 15:41 ` [PATCH 0/8] arm64: Support FIQ controller registration Hector Martin
2021-02-19 15:41   ` Hector Martin
2021-02-19 16:13   ` Mark Rutland
2021-02-19 16:13     ` Mark Rutland
2021-02-19 18:10 ` Marc Zyngier
2021-02-19 18:10   ` Marc Zyngier
2021-02-24 14:06   ` Mark Rutland
2021-02-24 14:06     ` Mark Rutland
2021-02-24 14:32     ` Marc Zyngier
2021-02-24 14:32       ` Marc Zyngier

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=20210222112544.GB70951@C02TD0UTHF1T.local \
    --to=mark.rutland@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcan@marcan.st \
    --cc=maz@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.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 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.