* [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded
@ 2018-03-25 21:43 Andrew Lunn
2018-03-25 21:43 ` [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode Andrew Lunn
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Andrew Lunn @ 2018-03-25 21:43 UTC (permalink / raw)
To: David Miller; +Cc: netdev, u.kleine-koenig, Andrew Lunn
As reported by Uwe Kleine-König, the interrupt trigger is first
configured by DT and then reconfigured to edge. This results in a
failure on EPROBE_DEFER, or if the module is unloaded and reloaded.
A second crash happens on module reload due to a missing call to the
common IRQ free code when using polled interrupts.
With these fixes in place, it becomes possible to load and unload the
kernel modules a few times without it crashing.
v2: Fix the ü in Künig a couple of times
v3: But the ü should be an ö!
Andrew Lunn (2):
net: dsa: mv88e6xxx: Use the DT IRQ trigger mode
net: dsa: mv88e6xxx: Call the common IRQ free code
drivers/net/dsa/mv88e6xxx/chip.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--
2.16.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode
2018-03-25 21:43 [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded Andrew Lunn
@ 2018-03-25 21:43 ` Andrew Lunn
2018-03-25 21:54 ` Uwe Kleine-König
2018-03-25 21:43 ` [PATCH v3 net-next 2/2] net: dsa: mv88e6xxx: Call the common IRQ free code Andrew Lunn
2018-03-26 0:43 ` [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded David Miller
2 siblings, 1 reply; 7+ messages in thread
From: Andrew Lunn @ 2018-03-25 21:43 UTC (permalink / raw)
To: David Miller; +Cc: netdev, u.kleine-koenig, Andrew Lunn
By calling request_threaded_irq() with the flag IRQF_TRIGGER_FALLING
we override the trigger mode provided in device tree. And the
interrupt is actually active low, which is what all the current device
tree descriptions use.
Suggested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
v2: Fix the ü in Künig
v3: Which should actually be an ö
---
drivers/net/dsa/mv88e6xxx/chip.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index fd78378ad6b1..3ba77067a3dc 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -425,7 +425,7 @@ static int mv88e6xxx_g1_irq_setup(struct mv88e6xxx_chip *chip)
err = request_threaded_irq(chip->irq, NULL,
mv88e6xxx_g1_irq_thread_fn,
- IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
+ IRQF_ONESHOT,
dev_name(chip->dev), chip);
if (err)
mv88e6xxx_g1_irq_free_common(chip);
--
2.16.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode
2018-03-25 21:43 ` [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode Andrew Lunn
@ 2018-03-25 21:54 ` Uwe Kleine-König
2018-03-25 22:02 ` Andrew Lunn
0 siblings, 1 reply; 7+ messages in thread
From: Uwe Kleine-König @ 2018-03-25 21:54 UTC (permalink / raw)
To: Andrew Lunn; +Cc: David Miller, netdev
On Sun, Mar 25, 2018 at 11:43:14PM +0200, Andrew Lunn wrote:
> By calling request_threaded_irq() with the flag IRQF_TRIGGER_FALLING
> we override the trigger mode provided in device tree. And the
> interrupt is actually active low, which is what all the current device
> tree descriptions use.
>
> Suggested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Thanks Andrew for the respin.
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode
2018-03-25 21:54 ` Uwe Kleine-König
@ 2018-03-25 22:02 ` Andrew Lunn
2018-03-25 22:04 ` Uwe Kleine-König
0 siblings, 1 reply; 7+ messages in thread
From: Andrew Lunn @ 2018-03-25 22:02 UTC (permalink / raw)
To: Uwe Kleine-König; +Cc: David Miller, netdev
On Sun, Mar 25, 2018 at 11:54:24PM +0200, Uwe Kleine-König wrote:
> On Sun, Mar 25, 2018 at 11:43:14PM +0200, Andrew Lunn wrote:
> > By calling request_threaded_irq() with the flag IRQF_TRIGGER_FALLING
> > we override the trigger mode provided in device tree. And the
> > interrupt is actually active low, which is what all the current device
> > tree descriptions use.
> >
> > Suggested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > Signed-off-by: Andrew Lunn <andrew@lunn.ch>
> Thanks Andrew for the respin.
Hi Uwe
Sorry for getting your name wrong so many time. I should know better,
'little king' makes sense.
Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode
2018-03-25 22:02 ` Andrew Lunn
@ 2018-03-25 22:04 ` Uwe Kleine-König
0 siblings, 0 replies; 7+ messages in thread
From: Uwe Kleine-König @ 2018-03-25 22:04 UTC (permalink / raw)
To: Andrew Lunn; +Cc: David Miller, netdev
Hi Andrew,
On Mon, Mar 26, 2018 at 12:02:37AM +0200, Andrew Lunn wrote:
> On Sun, Mar 25, 2018 at 11:54:24PM +0200, Uwe Kleine-König wrote:
> > On Sun, Mar 25, 2018 at 11:43:14PM +0200, Andrew Lunn wrote:
> > > By calling request_threaded_irq() with the flag IRQF_TRIGGER_FALLING
> > > we override the trigger mode provided in device tree. And the
> > > interrupt is actually active low, which is what all the current device
> > > tree descriptions use.
> > >
> > > Suggested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > > Signed-off-by: Andrew Lunn <andrew@lunn.ch>
> > Thanks Andrew for the respin.
>
> Sorry for getting your name wrong so many time. I should know better,
> 'little king' makes sense.
No problem. Making mistakes is fine if you're ready to correct them :-)
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 net-next 2/2] net: dsa: mv88e6xxx: Call the common IRQ free code
2018-03-25 21:43 [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded Andrew Lunn
2018-03-25 21:43 ` [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode Andrew Lunn
@ 2018-03-25 21:43 ` Andrew Lunn
2018-03-26 0:43 ` [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded David Miller
2 siblings, 0 replies; 7+ messages in thread
From: Andrew Lunn @ 2018-03-25 21:43 UTC (permalink / raw)
To: David Miller; +Cc: netdev, u.kleine-koenig, Andrew Lunn
When free'ing the polled IRQs, call the common irq free code.
Otherwise the interrupts are left registered, and when we come to load
the driver a second time, we get an Opps.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/dsa/mv88e6xxx/chip.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 3ba77067a3dc..9a5d786b4885 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -467,6 +467,8 @@ static int mv88e6xxx_irq_poll_setup(struct mv88e6xxx_chip *chip)
static void mv88e6xxx_irq_poll_free(struct mv88e6xxx_chip *chip)
{
+ mv88e6xxx_g1_irq_free_common(chip);
+
kthread_cancel_delayed_work_sync(&chip->irq_poll_work);
kthread_destroy_worker(chip->kworker);
}
--
2.16.2
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded
2018-03-25 21:43 [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded Andrew Lunn
2018-03-25 21:43 ` [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode Andrew Lunn
2018-03-25 21:43 ` [PATCH v3 net-next 2/2] net: dsa: mv88e6xxx: Call the common IRQ free code Andrew Lunn
@ 2018-03-26 0:43 ` David Miller
2 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2018-03-26 0:43 UTC (permalink / raw)
To: andrew; +Cc: netdev, u.kleine-koenig
From: Andrew Lunn <andrew@lunn.ch>
Date: Sun, 25 Mar 2018 23:43:13 +0200
> As reported by Uwe Kleine-König, the interrupt trigger is first
> configured by DT and then reconfigured to edge. This results in a
> failure on EPROBE_DEFER, or if the module is unloaded and reloaded.
>
> A second crash happens on module reload due to a missing call to the
> common IRQ free code when using polled interrupts.
>
> With these fixes in place, it becomes possible to load and unload the
> kernel modules a few times without it crashing.
>
> v2: Fix the ü in Künig a couple of times
> v3: But the ü should be an ö!
Series applied.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-03-26 0:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-25 21:43 [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded Andrew Lunn
2018-03-25 21:43 ` [PATCH v3 net-next 1/2] net: dsa: mv88e6xxx: Use the DT IRQ trigger mode Andrew Lunn
2018-03-25 21:54 ` Uwe Kleine-König
2018-03-25 22:02 ` Andrew Lunn
2018-03-25 22:04 ` Uwe Kleine-König
2018-03-25 21:43 ` [PATCH v3 net-next 2/2] net: dsa: mv88e6xxx: Call the common IRQ free code Andrew Lunn
2018-03-26 0:43 ` [PATCH v3 net-next 0/2] Fixes to allow mv88e6xxx module to be reloaded David Miller
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).