public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Rob Herring <robh@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Michael Ellerman" <mpe@ellerman.id.au>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Paul Mackerras" <paulus@samba.org>,
	"Ley Foon Tan" <ley.foon.tan@intel.com>,
	"Chris Zankel" <chris@zankel.net>,
	"Max Filippov" <jcmvbkbc@gmail.com>,
	"Vineet Gupta" <vgupta@synopsys.com>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
	"Robert Jarzmik" <robert.jarzmik@free.fr>,
	"Russell King" <linux@armlinux.org.uk>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski@canonical.com>,
	"Yoshinori Sato" <ysato@users.sourceforge.jp>,
	"Rich Felker" <dalias@libc.org>,
	"Geert Uytterhoeven" <geert@linux-m68k.org>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	"David Airlie" <airlied@linux.ie>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Rob Clark" <robdclark@gmail.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Bartosz Golaszewski" <bgolaszewski@baylibre.com>,
	"Android Kernel Team" <kernel-team@android.com>
Subject: Re: [PATCH 30/39] PCI: Bulk conversion to generic_handle_domain_irq()
Date: Mon, 24 May 2021 16:06:21 +0100	[thread overview]
Message-ID: <87im38w4r6.wl-maz@kernel.org> (raw)
In-Reply-To: <CAL_JsqLWLLRmusfvAweahA=ZKxOChRWAVUKehShpvn60kScsrw@mail.gmail.com>

On Mon, 24 May 2021 14:28:42 +0100,
Rob Herring <robh@kernel.org> wrote:
> 
> On Mon, May 24, 2021 at 3:38 AM Marc Zyngier <maz@kernel.org> wrote:
> >
> > On Thu, 20 May 2021 18:47:06 +0100,
> > Rob Herring <robh@kernel.org> wrote:
> > >
> > > On Thu, May 20, 2021 at 11:57 AM Marc Zyngier <maz@kernel.org> wrote:
> > > >
> > > > Wherever possible, replace constructs that match either
> > > > generic_handle_irq(irq_find_mapping()) or
> > > > generic_handle_irq(irq_linear_revmap()) to a single call to
> > > > generic_handle_domain_irq().
> > > >
> > > > Signed-off-by: Marc Zyngier <maz@kernel.org>
> > > > ---
> > > >  drivers/pci/controller/dwc/pci-dra7xx.c        | 14 +++++---------
> > > >  drivers/pci/controller/dwc/pci-keystone.c      |  5 ++---
> > > >  .../pci/controller/dwc/pcie-designware-host.c  |  9 ++++-----
> > > >  drivers/pci/controller/dwc/pcie-uniphier.c     |  6 ++----
> > > >  .../controller/mobiveil/pcie-mobiveil-host.c   | 15 ++++++---------
> > > >  drivers/pci/controller/pci-aardvark.c          |  5 ++---
> > > >  drivers/pci/controller/pci-ftpci100.c          |  2 +-
> > > >  drivers/pci/controller/pci-tegra.c             |  8 +++-----
> > > >  drivers/pci/controller/pci-xgene-msi.c         |  9 +++------
> > > >  drivers/pci/controller/pcie-altera-msi.c       | 10 ++++------
> > > >  drivers/pci/controller/pcie-altera.c           | 10 ++++------
> > > >  drivers/pci/controller/pcie-brcmstb.c          |  9 ++++-----
> > > >  drivers/pci/controller/pcie-iproc-msi.c        |  4 +---
> > > >  drivers/pci/controller/pcie-mediatek-gen3.c    | 13 ++++---------
> > > >  drivers/pci/controller/pcie-mediatek.c         | 12 ++++--------
> > > >  drivers/pci/controller/pcie-microchip-host.c   | 18 +++++++-----------
> > > >  drivers/pci/controller/pcie-rcar-host.c        |  8 +++-----
> > > >  drivers/pci/controller/pcie-rockchip-host.c    |  8 +++-----
> > > >  drivers/pci/controller/pcie-xilinx-cpm.c       |  4 ++--
> > > >  drivers/pci/controller/pcie-xilinx-nwl.c       | 13 +++----------
> > > >  drivers/pci/controller/pcie-xilinx.c           |  9 ++++-----
> > > >  21 files changed, 71 insertions(+), 120 deletions(-)
> > >
> > >
> > > > diff --git a/drivers/pci/controller/pci-xgene-msi.c b/drivers/pci/controller/pci-xgene-msi.c
> > > > index 1c34c897a7e2..cf3832b905e8 100644
> > > > --- a/drivers/pci/controller/pci-xgene-msi.c
> > > > +++ b/drivers/pci/controller/pci-xgene-msi.c
> > > > @@ -291,8 +291,7 @@ static void xgene_msi_isr(struct irq_desc *desc)
> > > >         struct irq_chip *chip = irq_desc_get_chip(desc);
> > > >         struct xgene_msi_group *msi_groups;
> > > >         struct xgene_msi *xgene_msi;
> > > > -       unsigned int virq;
> > > > -       int msir_index, msir_val, hw_irq;
> > > > +       int msir_index, msir_val, hw_irq, ret;
> > > >         u32 intr_index, grp_select, msi_grp;
> > > >
> > > >         chained_irq_enter(chip, desc);
> > > > @@ -330,10 +329,8 @@ static void xgene_msi_isr(struct irq_desc *desc)
> > > >                          * CPU0
> > > >                          */
> > > >                         hw_irq = hwirq_to_canonical_hwirq(hw_irq);
> > > > -                       virq = irq_find_mapping(xgene_msi->inner_domain, hw_irq);
> > > > -                       WARN_ON(!virq);
> > > > -                       if (virq != 0)
> > > > -                               generic_handle_irq(virq);
> > > > +                       ret = generic_handle_domain_irq(xgene_msi->inner_domain, hw_irq);
> > > > +                       WARN_ON(ret);
> > >
> > > There's various error prints in some of the handlers. I think they
> > > should be moved to the core. I can't imagine handling the irq is ever
> > > optional.
> >
> > Printing stuff like this is a sure recipe for disaster, and there is
> > no way I'm moving such crap into core code.
> 
> Then why maintain such crap code? I'm fine with just removing. I just
> think we should have some consistency.

Then by any mean, remove it. I'd even be tempted to say "remove the
driver", but there is an XGene-1 box right behind me...

> 
> > If the interrupt handling
> > fails (most likely because there is no mapping for this interrupt), it
> > is the driver's responsibility to handle the error (either disabling
> > the input or the output of the secondary irqchip). There isn't much
> > the core code can do about it.
> 
> I would imagine the errors here would be the 'this should never
> happen' kind. Maybe a race with tearing down the domain. Seems to me
> the core code should be warning when the calling code has made
> mistakes.

The core code already returns an error, which is plenty. It doesn't
have the context to actually *do* anything, and I don't think moaning
on the console helps much.

The onus is firmly on the caller side to get their act together.

	M.

-- 
Without deviation from the norm, progress is not possible.

  reply	other threads:[~2021-05-24 15:22 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-20 16:37 [PATCH 00/39] irqdomain: Simplify interrupt handling Marc Zyngier
2021-05-20 16:37 ` [PATCH 01/39] nios2: Do not include linux/irqdomain.h from asm/irq.h Marc Zyngier
2021-05-20 16:37 ` [PATCH 02/39] staging: octeon-hcd: Directly include linux/of.h Marc Zyngier
2021-05-20 16:37 ` [PATCH 03/39] mfd: ioc3: Directly include linux/irqdomain.h Marc Zyngier
2021-05-21  7:07   ` Lee Jones
2021-05-20 16:37 ` [PATCH 04/39] watchdog/octeon-wdt: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 05/39] irqchip/mips-gic: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 06/39] MIPS: lantiq: Directly include linux/of.h in xway/dma.c Marc Zyngier
2021-05-20 16:37 ` [PATCH 07/39] MIPS: Add missing linux/irqdomain.h includes Marc Zyngier
2021-05-20 16:37 ` [PATCH 08/39] MIPS: Do not include linux/irqdomain.h from asm/irq.h Marc Zyngier
2021-05-20 16:37 ` [PATCH 09/39] powerpc: Add missing linux/{of.h,irqdomain.h} include directives Marc Zyngier
2021-05-20 16:37 ` [PATCH 10/39] scsi/ibmvscsi: Directly include linux/{of.h,irqdomain.h} Marc Zyngier
2021-05-20 16:37 ` [PATCH 11/39] powerpc: Convert irq_domain_add_legacy_isa use to irq_domain_add_legacy Marc Zyngier
2021-05-20 16:37 ` [PATCH 12/39] powerpc: Drop dependency between asm/irq.h and linux/irqdomain.h Marc Zyngier
2021-05-20 16:37 ` [PATCH 13/39] irqdomain: Kill irq_domain_add_legacy_isa Marc Zyngier
2021-05-20 16:37 ` [PATCH 14/39] irqdomain: Reimplement irq_linear_revmap() with irq_find_mapping() Marc Zyngier
2021-05-20 16:37 ` [PATCH 15/39] powerpc: Move the use of irq_domain_add_nomap() behind a config option Marc Zyngier
2021-05-20 16:37 ` [PATCH 16/39] irqdomain: Make normal and nomap irqdomains exclusive Marc Zyngier
2021-11-15 19:05   ` Cédric Le Goater
2021-11-16  8:33     ` Marc Zyngier
2021-11-16 10:27       ` Cédric Le Goater
2021-05-20 16:37 ` [PATCH 17/39] irqdomain: Use struct_size() helper when allocating irqdomain Marc Zyngier
2021-05-20 16:37 ` [PATCH 18/39] irqdomain: Cache irq_data instead of a virq number in the revmap Marc Zyngier
2021-05-20 16:37 ` [PATCH 19/39] irqdomain: Implement irq_domain_clear_mapping() with irq_domain_set_mapping() Marc Zyngier
2021-05-20 16:37 ` [PATCH 20/39] irqdomain: Protect the linear revmap with RCU Marc Zyngier
2021-06-19 11:37   ` Thomas Gleixner
2021-05-20 16:37 ` [PATCH 21/39] irqdomain: Introduce irq_resolve_mapping() Marc Zyngier
2021-06-10  2:22   ` Qian Cai
2021-06-10  7:24     ` Marc Zyngier
2021-05-20 16:37 ` [PATCH 22/39] genirq: Use irq_resolve_mapping() to implement __handle_domain_irq() and co Marc Zyngier
2021-05-20 16:37 ` [PATCH 23/39] irqdesc: Fix __handle_domain_irq() comment Marc Zyngier
2021-05-20 16:37 ` [PATCH 24/39] irqchip/nvic: Convert from handle_IRQ() to handle_domain_irq() Marc Zyngier
2021-05-20 16:37 ` [PATCH 25/39] genirq: Add generic_handle_domain_irq() helper Marc Zyngier
2021-05-20 16:37 ` [PATCH 26/39] genirq: Move non-irqdomain handle_domain_irq() handling into ARM's handle_IRQ() Marc Zyngier
2021-05-20 16:37 ` [PATCH 27/39] irqchip: Bulk conversion to generic_handle_domain_irq() Marc Zyngier
2021-05-21  8:54   ` Geert Uytterhoeven
2021-05-21 21:10   ` Krzysztof Kozlowski
2021-05-20 16:37 ` [PATCH 28/39] gpio: " Marc Zyngier
2021-05-21  8:59   ` Geert Uytterhoeven
2021-05-20 16:37 ` [PATCH 29/39] pinctrl: " Marc Zyngier
2021-05-21 21:16   ` Krzysztof Kozlowski
2021-05-20 16:37 ` [PATCH 30/39] PCI: " Marc Zyngier
2021-05-20 17:47   ` Rob Herring
2021-05-24  8:38     ` Marc Zyngier
2021-05-24 13:28       ` Rob Herring
2021-05-24 15:06         ` Marc Zyngier [this message]
2021-05-21  8:57   ` Geert Uytterhoeven
2021-05-20 16:37 ` [PATCH 31/39] mfd: " Marc Zyngier
2021-05-21  7:06   ` Lee Jones
2021-05-20 16:37 ` [PATCH 32/39] gpu: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 33/39] SH: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 34/39] ARM: " Marc Zyngier
2021-05-20 18:04   ` Rob Herring
2021-05-24  8:32     ` Marc Zyngier
2021-05-21 21:17   ` Krzysztof Kozlowski
2021-05-20 16:37 ` [PATCH 35/39] mips: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 36/39] arc: " Marc Zyngier
2021-06-01 18:00   ` Vineet Gupta
2021-05-20 16:37 ` [PATCH 37/39] xtensa: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 38/39] nios2: " Marc Zyngier
2021-05-20 16:37 ` [PATCH 39/39] powerpc: " Marc Zyngier
2021-05-20 23:33 ` [PATCH 00/39] irqdomain: Simplify interrupt handling Linus Walleij
2021-05-24  8:53   ` Marc Zyngier
2021-05-24  9:39     ` Linus Walleij
2021-06-01 14:29 ` 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=87im38w4r6.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=airlied@linux.ie \
    --cc=alexander.deucher@amd.com \
    --cc=benh@kernel.crashing.org \
    --cc=bgolaszewski@baylibre.com \
    --cc=bhelgaas@google.com \
    --cc=chris@zankel.net \
    --cc=christian.koenig@amd.com \
    --cc=dalias@libc.org \
    --cc=daniel@ffwll.ch \
    --cc=geert@linux-m68k.org \
    --cc=jcmvbkbc@gmail.com \
    --cc=kernel-team@android.com \
    --cc=krzysztof.kozlowski@canonical.com \
    --cc=lee.jones@linaro.org \
    --cc=ley.foon.tan@intel.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=robdclark@gmail.com \
    --cc=robert.jarzmik@free.fr \
    --cc=robh@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tsbogend@alpha.franken.de \
    --cc=vgupta@synopsys.com \
    --cc=ysato@users.sourceforge.jp \
    /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