All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@kernel.org>
To: Andre Przywara <andre.przywara@arm.com>
Cc: "Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Chen-Yu Tsai" <wens@csie.org>,
	"Jernej Skrabec" <jernej.skrabec@siol.net>,
	"Samuel Holland" <samuel@sholland.org>,
	"Icenowy Zheng" <icenowy@aosc.io>,
	"Rob Herring" <robh@kernel.org>,
	"Clément Péron" <peron.clem@gmail.com>,
	"Shuosheng Huang" <huangshuosheng@allwinnertech.com>,
	"Yangtao Li" <tiny.windzz@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com,
	"Lee Jones" <lee.jones@linaro.org>,
	linux-input@vger.kernel.org
Subject: Re: [PATCH v5 05/20] Input: axp20x-pek: Bail out if AXP has no interrupt line connected
Date: Thu, 28 Jan 2021 15:05:55 +0000	[thread overview]
Message-ID: <20210128150555.GD4537@sirena.org.uk> (raw)
In-Reply-To: <20210128123136.417eea7c@slackpad.fritz.box>

[-- Attachment #1: Type: text/plain, Size: 1916 bytes --]

On Thu, Jan 28, 2021 at 12:31:36PM +0000, Andre Przywara wrote:
> Mark Brown <broonie@kernel.org> wrote:

> > It sounds like you're trying to register an IRQ chip with a somehow
> > bogus configuration?

> I patched the AXP MFD driver [1] to skip the regmap-irq creation when no
> interrupts DT property was found, but this NULL pointer now
> understandably confuses the -pek driver, and leads to this crash:

> http://lists.infradead.org/pipermail/linux-arm-kernel/2021-January/634969.html

> Hence I wanted to plug this hole, which seems useful regardless of this
> particular issue.

The driver code here looks pretty confused.  It appears to be looking up
the interrupt to use from a resource (which is what I'd expect for a MFD
child) then for reasons I can't fathom trying to pass that resource into
regmap_irq_get_virq() which is at best going to just return the value
that was passed in but may potentially end up just returning a random
interrupt other than the one that was asked for since we're passing in a
global interrupt number rather than a controller relative one.  I really
can't tell what's supposed to be going on there.  A driver should either
use resources or it should use regmap_irq_get_virq(), using both is a
bug.

The MFD for this device is also just plain buggy in that it is providing
IRQ resources to the children when there is in fact no support for the
interrupts on the device in the system.  This means that the MFD core
sees that it has no interrupt domain, assumes that those interrupt
resources are in fact absolute interrupt numbers and passes them
straight through to the children.  This means that the children will
just be requesting random interrupts in the system which may actually
exist and be requestable which probably isn't going to end well.  When
there is no interrupt controller the parent should not be trying to
supply interrupt resources to the children at all.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Mark Brown <broonie@kernel.org>
To: Andre Przywara <andre.przywara@arm.com>
Cc: "Jernej Skrabec" <jernej.skrabec@siol.net>,
	"Samuel Holland" <samuel@sholland.org>,
	"Yangtao Li" <tiny.windzz@gmail.com>,
	linux-sunxi@googlegroups.com,
	"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	linux-kernel@vger.kernel.org,
	"Maxime Ripard" <mripard@kernel.org>,
	"Chen-Yu Tsai" <wens@csie.org>,
	"Clément Péron" <peron.clem@gmail.com>,
	linux-input@vger.kernel.org,
	"Shuosheng Huang" <huangshuosheng@allwinnertech.com>,
	"Lee Jones" <lee.jones@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	"Icenowy Zheng" <icenowy@aosc.io>
Subject: Re: [PATCH v5 05/20] Input: axp20x-pek: Bail out if AXP has no interrupt line connected
Date: Thu, 28 Jan 2021 15:05:55 +0000	[thread overview]
Message-ID: <20210128150555.GD4537@sirena.org.uk> (raw)
In-Reply-To: <20210128123136.417eea7c@slackpad.fritz.box>


[-- Attachment #1.1: Type: text/plain, Size: 1916 bytes --]

On Thu, Jan 28, 2021 at 12:31:36PM +0000, Andre Przywara wrote:
> Mark Brown <broonie@kernel.org> wrote:

> > It sounds like you're trying to register an IRQ chip with a somehow
> > bogus configuration?

> I patched the AXP MFD driver [1] to skip the regmap-irq creation when no
> interrupts DT property was found, but this NULL pointer now
> understandably confuses the -pek driver, and leads to this crash:

> http://lists.infradead.org/pipermail/linux-arm-kernel/2021-January/634969.html

> Hence I wanted to plug this hole, which seems useful regardless of this
> particular issue.

The driver code here looks pretty confused.  It appears to be looking up
the interrupt to use from a resource (which is what I'd expect for a MFD
child) then for reasons I can't fathom trying to pass that resource into
regmap_irq_get_virq() which is at best going to just return the value
that was passed in but may potentially end up just returning a random
interrupt other than the one that was asked for since we're passing in a
global interrupt number rather than a controller relative one.  I really
can't tell what's supposed to be going on there.  A driver should either
use resources or it should use regmap_irq_get_virq(), using both is a
bug.

The MFD for this device is also just plain buggy in that it is providing
IRQ resources to the children when there is in fact no support for the
interrupts on the device in the system.  This means that the MFD core
sees that it has no interrupt domain, assumes that those interrupt
resources are in fact absolute interrupt numbers and passes them
straight through to the children.  This means that the children will
just be requesting random interrupts in the system which may actually
exist and be requestable which probably isn't going to end well.  When
there is no interrupt controller the parent should not be trying to
supply interrupt resources to the children at all.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

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

  reply	other threads:[~2021-01-28 15:08 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-27 17:24 [PATCH v5 00/20] arm64: sunxi: Initial Allwinner H616 SoC support Andre Przywara
2021-01-27 17:24 ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 01/20] dt-bindings: clk: sunxi-ccu: Add compatible string for Allwinner H616 Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 02/20] clk: sunxi-ng: Add support for the Allwinner H616 R-CCU Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 03/20] clk: sunxi-ng: Add support for the Allwinner H616 CCU Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 04/20] dt-bindings: mfd: axp20x: Add AXP305 compatible (plus optional IRQ) Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-28 10:15   ` Maxime Ripard
2021-01-28 10:15     ` Maxime Ripard
2021-02-02  7:55   ` [linux-sunxi] " Chen-Yu Tsai
2021-02-02  7:55     ` Chen-Yu Tsai
2021-02-02 10:11     ` Andre Przywara
2021-02-02 10:11       ` Andre Przywara
2021-02-05 21:56   ` Rob Herring
2021-02-05 21:56     ` Rob Herring
2021-01-27 17:24 ` [PATCH v5 05/20] Input: axp20x-pek: Bail out if AXP has no interrupt line connected Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 19:42   ` Dmitry Torokhov
2021-01-27 19:42     ` Dmitry Torokhov
2021-01-28 11:11     ` Andre Przywara
2021-01-28 11:11       ` Andre Przywara
2021-01-28 11:36       ` Mark Brown
2021-01-28 11:36         ` Mark Brown
2021-01-28 12:31         ` Andre Przywara
2021-01-28 12:31           ` Andre Przywara
2021-01-28 15:05           ` Mark Brown [this message]
2021-01-28 15:05             ` Mark Brown
2021-01-27 17:24 ` [PATCH v5 06/20] mfd: axp20x: Allow AXP chips without interrupt lines Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-28 10:15   ` Maxime Ripard
2021-01-28 10:15     ` Maxime Ripard
2021-02-02  7:58     ` [linux-sunxi] " Chen-Yu Tsai
2021-02-02  7:58       ` Chen-Yu Tsai
2021-02-02  8:12   ` Lee Jones
2021-02-02  8:12     ` Lee Jones
2021-01-27 17:24 ` [PATCH v5 07/20] dt-bindings: sram: sunxi-sram: Add H616 compatible string Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 08/20] soc: sunxi: sram: Add support for more than one EMAC clock Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 09/20] dt-bindings: watchdog: sun4i: Add H616 compatible string Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 10/20] dt-bindings: i2c: mv64xxx: " Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-28  8:44   ` Wolfram Sang
2021-01-28  8:44     ` Wolfram Sang
2021-01-27 17:24 ` [PATCH v5 11/20] dt-bindings: media: IR: Add H616 IR " Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 12/20] dt-bindings: rtc: sun6i: Add H616 " Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-28 10:20   ` Maxime Ripard
2021-01-28 10:20     ` Maxime Ripard
2021-01-31 13:44   ` Jernej Škrabec
2021-02-02  0:05     ` Andre Przywara
2021-02-02  0:05       ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 13/20] dt-bindings: spi: sunxi: " Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 14/20] dt-bindings: bus: rsb: " Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-02-02  7:57   ` Chen-Yu Tsai
2021-02-02  7:57     ` Chen-Yu Tsai
2021-01-27 17:24 ` [PATCH v5 15/20] dt-bindings: net: sun8i-emac: " Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-28 10:21   ` Maxime Ripard
2021-01-28 10:21     ` Maxime Ripard
2021-02-05 21:58   ` Rob Herring
2021-02-05 21:58     ` Rob Herring
2021-01-27 17:24 ` [PATCH v5 16/20] net: stmmac: dwmac-sun8i: Prepare for second EMAC clock register Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-28 10:21   ` Maxime Ripard
2021-01-28 10:21     ` Maxime Ripard
2021-01-27 17:24 ` [PATCH v5 17/20] phy: sun4i-usb: Rework HCI PHY (aka. "pmu_unk1") handling Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 18/20] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:24 ` [PATCH v5 19/20] dt-bindings: arm: sunxi: Add OrangePi Zero 2 binding Andre Przywara
2021-01-27 17:24   ` Andre Przywara
2021-01-27 17:25 ` [PATCH v5 20/20] arm64: dts: allwinner: Add OrangePi Zero 2 .dts Andre Przywara
2021-01-27 17:25   ` Andre Przywara

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=20210128150555.GD4537@sirena.org.uk \
    --to=broonie@kernel.org \
    --cc=andre.przywara@arm.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=huangshuosheng@allwinnertech.com \
    --cc=icenowy@aosc.io \
    --cc=jernej.skrabec@siol.net \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=mripard@kernel.org \
    --cc=peron.clem@gmail.com \
    --cc=robh@kernel.org \
    --cc=samuel@sholland.org \
    --cc=tiny.windzz@gmail.com \
    --cc=wens@csie.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.