linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Marc Zyngier <maz@kernel.org>, Mark Rutland <mark.rutland@arm.com>
Cc: Lukas Wunner <lukas@wunner.de>,
	Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>,
	linux-gpio@vger.kernel.org,
	Octavian Purdila <octavian.purdila@nxp.com>,
	linux-kernel@vger.kernel.org, aou@eecs.berkeley.edu,
	catalin.marinas@arm.com, deanbo422@gmail.com, green.hu@gmail.com,
	guoren@kernel.org, jonas@southpole.se, kernelfans@gmail.com,
	linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk,
	nickhu@andestech.com, palmer@dabbelt.com,
	paul.walmsley@sifive.com, shorne@gmail.com,
	stefan.kristiansson@saunalahti.fi, tsbogend@alpha.franken.de,
	vgupta@kernel.org, vladimir.murzin@arm.com, will@kernel.org
Subject: Re: [PATCH v2 17/17] irq: remove handle_domain_{irq,nmi}()
Date: Wed, 11 May 2022 01:36:15 +0200	[thread overview]
Message-ID: <877d6tot8w.ffs@tglx> (raw)
In-Reply-To: <87h75z6pix.wl-maz@kernel.org>

On Mon, May 09 2022 at 10:09, Marc Zyngier wrote:
> On Mon, 09 May 2022 09:54:21 +0100,
> Mark Rutland <mark.rutland@arm.com> wrote:
>> > Why isn't the WARN_ON_ONCE() conditional on handle_enforce_irqctx()?
>> > (See handle_irq_desc() and c16816acd086.)
>> 
>> I did this for consistency with the in_nmi() check in
>> generic_handle_domain_nmi(); I was unaware of commit c16816acd086 and
>> IRQD_HANDLE_ENFORCE_IRQCTX.
>> 
>> I'll have ot leave it to Marc and Thomas as to what we should do there.
>
> My preference would be to not introduce things that result in
> different behaviours for drivers, specially for things that are
> evidently cross-architecture such as USB drivers (which seems to be
> the case here).

No. USB drivers which synthesize their interrupts from a received packet
work perfectly fine on all architectures because the interrupt domain
and interrupt chip they are using are a software construct designed for
the purpose and have no hard interrupt context requirements.

The reason why this is done is to leverage the interrupt driven PHY
status changes instead of enforcing timer based polling. The charm is
that the phy code does not have to grow another wart and just uses the
offered synthetic interrupt. There are other places which do similar
things for the same reason. This also provides the beloved statistics in
/proc/interrupt, tracepoints etc. out of the box without having to add
extra muck into yet another subsystem.

> I'd rather do something that allows these to be handled in the right
> context such as a self-IPI. This would certainly work for the GIC. No
> idea whether this is valid for x86, which is the other user.

This interrupt is neither directly nor indirectly connected to GIC
or APIC. It's synthesized. So what would the self-IPI help?

And no, I don't want to create infrastructure to allocate a pseudo
device vector on x86 just to be able to self-IPI this USB synthesized
interrupt. That'd be yet another horrorshow and worse a horrorshow for
no reason and zero value.

IRQD_HANDLE_ENFORCE_IRQCTX was introduced to be able to differentiate
between interrupt chips which require a particular context and chips
which can handle it perfectly fine to have e.g. their software retrigger
handled by directly invoking the handler from an arbitrary context.

I wish this would be the case on x86. That would eliminate a boatload of
horrible code.

Thanks,

        tglx





  parent reply	other threads:[~2022-05-10 23:36 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-26  9:24 [PATCH v2 00/17] irq: remove handle_domain_{irq,nmi}() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 01/17] irq: mips: avoid nested irq_enter() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 02/17] irq: mips: simplify bcm6345_l1_irq_handle() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 03/17] irq: mips: stop (ab)using handle_domain_irq() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 04/17] irq: mips: simplify do_domain_IRQ() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 05/17] irq: simplify handle_domain_{irq,nmi}() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 06/17] irq: unexport handle_irq_desc() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 07/17] irq: add generic_handle_arch_irq() Mark Rutland
2021-10-26  9:24 ` [PATCH v2 08/17] irq: arc: avoid CONFIG_HANDLE_DOMAIN_IRQ Mark Rutland
2021-10-26  9:24 ` [PATCH v2 09/17] irq: nds32: " Mark Rutland
2021-10-26  9:24 ` [PATCH v2 10/17] irq: add a (temporary) CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY Mark Rutland
2021-10-26  9:24 ` [PATCH v2 11/17] irq: arm: perform irqentry in entry code Mark Rutland
2021-10-26  9:24 ` [PATCH v2 12/17] irq: arm64: " Mark Rutland
2021-10-26  9:25 ` [PATCH v2 13/17] irq: csky: " Mark Rutland
2021-10-26  9:25 ` [PATCH v2 14/17] irq: openrisc: " Mark Rutland
2021-10-26  9:25 ` [PATCH v2 15/17] irq: riscv: " Mark Rutland
2021-10-26  9:25 ` [PATCH v2 16/17] irq: remove CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY Mark Rutland
2021-10-26  9:25 ` [PATCH v2 17/17] irq: remove handle_domain_{irq,nmi}() Mark Rutland
2022-05-06 20:32   ` Lukas Wunner
2022-05-09  8:54     ` Mark Rutland
2022-05-09  9:09       ` Marc Zyngier
2022-05-09 13:12         ` Thomas Gleixner
2022-05-10 23:36         ` Thomas Gleixner [this message]
2022-05-10 12:13       ` Lukas Wunner
2022-05-10 14:15         ` Mark Rutland
2022-05-10 22:52           ` Thomas Gleixner
2022-05-11  8:23             ` Mark Rutland
2022-05-11  8:57               ` Lukas Wunner
2022-05-11  9:27                 ` Mark Rutland
2022-05-11  0:11           ` Thomas Gleixner
2022-05-11  8:11             ` Mark Rutland
2021-10-26 10:12 ` [PATCH v2 00/17] " 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=877d6tot8w.ffs@tglx \
    --to=tglx@linutronix.de \
    --cc=aou@eecs.berkeley.edu \
    --cc=brgl@bgdev.pl \
    --cc=catalin.marinas@arm.com \
    --cc=deanbo422@gmail.com \
    --cc=green.hu@gmail.com \
    --cc=guoren@kernel.org \
    --cc=jonas@southpole.se \
    --cc=kernelfans@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=lukas@wunner.de \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=nickhu@andestech.com \
    --cc=octavian.purdila@nxp.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=shorne@gmail.com \
    --cc=stefan.kristiansson@saunalahti.fi \
    --cc=tsbogend@alpha.franken.de \
    --cc=vgupta@kernel.org \
    --cc=vladimir.murzin@arm.com \
    --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 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).