Skip to content

Commit 9259f13

Browse files
committed
Merge branch 'mv88e6xxx-module-reloading'
Andrew Lunn says: ==================== Fixes to allow mv88e6xxx module to be reloaded 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 ö! ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 808679e + 71f74ae commit 9259f13

File tree

1 file changed

+3
-1
lines changed
  • drivers/net/dsa/mv88e6xxx

1 file changed

+3
-1
lines changed

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ static int mv88e6xxx_g1_irq_setup(struct mv88e6xxx_chip *chip)
425425

426426
err = request_threaded_irq(chip->irq, NULL,
427427
mv88e6xxx_g1_irq_thread_fn,
428-
IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
428+
IRQF_ONESHOT,
429429
dev_name(chip->dev), chip);
430430
if (err)
431431
mv88e6xxx_g1_irq_free_common(chip);
@@ -467,6 +467,8 @@ static int mv88e6xxx_irq_poll_setup(struct mv88e6xxx_chip *chip)
467467

468468
static void mv88e6xxx_irq_poll_free(struct mv88e6xxx_chip *chip)
469469
{
470+
mv88e6xxx_g1_irq_free_common(chip);
471+
470472
kthread_cancel_delayed_work_sync(&chip->irq_poll_work);
471473
kthread_destroy_worker(chip->kworker);
472474
}

0 commit comments

Comments
 (0)