diff mbox series

[linux,dev-6.6,v1] i2c: npcm7xx: disable I2C interrupt before devm_request_irq

Message ID 20240709105412.1685181-1-tmaimon77@gmail.com
State New
Headers show
Series [linux,dev-6.6,v1] i2c: npcm7xx: disable I2C interrupt before devm_request_irq | expand

Commit Message

Tomer Maimon July 9, 2024, 10:54 a.m. UTC
This patch fix NPCM I2C driver issue that causing a soft lockup issue.

Upon investigation, it was found that during an I2C transaction, the BMC
machine reboots unexpectedly, leaving the I2C module in an unchanged
state. As a result, the I2C interrupt (IRQ) handler continues to be
triggered. To address this, NPCM I2C probe function disable the I2C
interrupt enable bit in the I2C module before invoking devm_request_irq
function.

Signed-off-by: Tyrone Ting <kfting@nuvoton.com>
Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
---
 drivers/i2c/busses/i2c-npcm7xx.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Andrew Jeffery July 16, 2024, 3:26 a.m. UTC | #1
On Tue, 2024-07-09 at 13:54 +0300, Tomer Maimon wrote:
> This patch fix NPCM I2C driver issue that causing a soft lockup issue.
> 
> Upon investigation, it was found that during an I2C transaction, the BMC
> machine reboots unexpectedly, leaving the I2C module in an unchanged
> state. As a result, the I2C interrupt (IRQ) handler continues to be
> triggered. To address this, NPCM I2C probe function disable the I2C
> interrupt enable bit in the I2C module before invoking devm_request_irq
> function.
> 
> Signed-off-by: Tyrone Ting <kfting@nuvoton.com>
> Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
> ---
>  drivers/i2c/busses/i2c-npcm7xx.c | 2 ++
>  1 file changed, 2 insertions(+)

What's the state of this patch with respect to upstream? Is this
something specific to the openbmc/linux dev-6.6 tree, or is there an
upstream equivalent? If the latter, can you please link to the relevant
patch?

Andrew
Tomer Maimon July 16, 2024, 2 p.m. UTC | #2
Hi Andrew,

On Tue, 16 Jul 2024 at 06:26, Andrew Jeffery
<andrew@codeconstruct.com.au> wrote:
>
> On Tue, 2024-07-09 at 13:54 +0300, Tomer Maimon wrote:
> > This patch fix NPCM I2C driver issue that causing a soft lockup issue.
> >
> > Upon investigation, it was found that during an I2C transaction, the BMC
> > machine reboots unexpectedly, leaving the I2C module in an unchanged
> > state. As a result, the I2C interrupt (IRQ) handler continues to be
> > triggered. To address this, NPCM I2C probe function disable the I2C
> > interrupt enable bit in the I2C module before invoking devm_request_irq
> > function.
> >
> > Signed-off-by: Tyrone Ting <kfting@nuvoton.com>
> > Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
> > ---
> >  drivers/i2c/busses/i2c-npcm7xx.c | 2 ++
> >  1 file changed, 2 insertions(+)
>
> What's the state of this patch with respect to upstream? Is this
> something specific to the openbmc/linux dev-6.6 tree, or is there an
> upstream equivalent? If the latter, can you please link to the relevant
> patch?
This patch set hasn't been upstream yet to OpenBMC vanilla and  Its
not specific to openbmc/linux dev-6.6 tree.
We plan to upstream it to Linux version 6.11 (I believe it the next
few weeks), since we need to upgrade the NPCM from dev-6.1 to dev-6.6,
we would appreciate if you could add it now to dev-6.6
>
> Andrew

Thanks,

Tomer
diff mbox series

Patch

diff --git a/drivers/i2c/busses/i2c-npcm7xx.c b/drivers/i2c/busses/i2c-npcm7xx.c
index ae4bae63ad4f..ca73760522f5 100644
--- a/drivers/i2c/busses/i2c-npcm7xx.c
+++ b/drivers/i2c/busses/i2c-npcm7xx.c
@@ -2333,6 +2333,8 @@  static int npcm_i2c_probe_bus(struct platform_device *pdev)
 	if (irq < 0)
 		return irq;
 
+	npcm_i2c_int_enable(bus, false);
+
 	ret = devm_request_irq(bus->dev, irq, npcm_i2c_bus_irq, 0,
 			       dev_name(bus->dev), bus);
 	if (ret)