Thread (39 messages) 39 messages, 8 authors, 2021-02-06

Re: [PATCH v5 05/20] Input: axp20x-pek: Bail out if AXP has no interrupt line connected

From: Andre Przywara <andre.przywara@arm.com>
Date: 2021-01-28 12:33:25
Also in: linux-input, lkml

On Thu, 28 Jan 2021 11:36:01 +0000
Mark Brown [off-list ref] wrote:
On Thu, Jan 28, 2021 at 11:11:28AM +0000, Andre Przywara wrote:
quoted
Dmitry Torokhov [off-list ref] wrote:  
quoted
On Wed, Jan 27, 2021 at 05:24:45PM +0000, Andre Przywara wrote:  
quoted
quoted
quoted
Check for the regmap_irqc member to be not NULL before proceeding with
probe. This gets normally filled by the call to regmap_add_irq_chip(),
which we allow to skip now, when the DT node lacks an interrupt
property.    
It sounds like you're trying to register an IRQ chip with a somehow
bogus configuration?
Quick background: Those AXP PMICs have an IRQ pin, that was always
connected to the NMI pin on Allwinner SoCs. This was used for the power
button GPIO interrupt. Now the H616 does not have this pin anymore, and
the board does not use a GPIO either.
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.

[1]
http://lists.infradead.org/pipermail/linux-arm-kernel/2021-January/634971.html
quoted
quoted
No, the driver is not the right place to patch this; regmap should be
fixed so it does not crash instead.  
quoted
I am not sure this is the right approach, those regmap functions look
more like an internal interface to me, with lots of wrapper functions
happily dereferencing pointers and reaching into structs. Moving
NULL checks into those does not sound like the right thing. CC:ing Mark
for more opinions on this.  
Without having seen the actual issue if you're trying to register an
interrupt controller with a known broken hardware configuration that
does seem like something the caller just shouldn't be doing, it's not
something that's going to transiently happen at runtime and we're very
much trusting that the caller got things right.
quoted
A more general solution would be to not instantiate this driver here
at all, when we don't have an interrupt line.
However at the moment the AXP MFD driver uses a const struct to hold
all MFD cells, so there is no easy way of omitting the power key
device dynamically. And even then it would hard code the requirement
for an interrupt into the MFD driver, when this could be considered an
implementation detail of the axp20x-pek driver.  
Another approach is to just register the optional device separately.
I will have a look at how much this takes.

Thanks,
Andre

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help