]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
EDAC/altera: Remove IRQF_ONESHOT
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Wed, 28 Jan 2026 09:55:30 +0000 (10:55 +0100)
committerThomas Gleixner <tglx@kernel.org>
Sun, 1 Feb 2026 16:37:15 +0000 (17:37 +0100)
Passing IRQF_ONESHOT ensures that the interrupt source is masked until
the secondary (threaded) handler is done. If only a primary handler is
used then the flag makes no sense because the interrupt can not fire
(again) while its handler is running.

The flag also prevents force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Fixes: a29d64a45eed1 ("EDAC, altera: Add IRQ Flags to disable IRQ while handling")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260128095540.863589-11-bigeasy@linutronix.de
drivers/edac/altera_edac.c

index 0c5b94e64ea15787ff220994b177faf216c5634b..4edd2088c2db6f5a012ab687fb11b88e77fe1ce8 100644 (file)
@@ -1563,8 +1563,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
                goto err_release_group_1;
        }
        rc = devm_request_irq(&altdev->ddev, altdev->sb_irq,
-                             prv->ecc_irq_handler,
-                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             prv->ecc_irq_handler, IRQF_TRIGGER_HIGH,
                              ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "PortB SBERR IRQ error\n");
@@ -1587,8 +1586,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
                goto err_release_group_1;
        }
        rc = devm_request_irq(&altdev->ddev, altdev->db_irq,
-                             prv->ecc_irq_handler,
-                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             prv->ecc_irq_handler, IRQF_TRIGGER_HIGH,
                              ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n");
@@ -1970,8 +1968,7 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,
                goto err_release_group1;
        }
        rc = devm_request_irq(edac->dev, altdev->sb_irq, prv->ecc_irq_handler,
-                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
-                             ecc_name, altdev);
+                             IRQF_TRIGGER_HIGH, ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "No SBERR IRQ resource\n");
                goto err_release_group1;
@@ -1993,7 +1990,7 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,
                goto err_release_group1;
        }
        rc = devm_request_irq(edac->dev, altdev->db_irq, prv->ecc_irq_handler,
-                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             IRQF_TRIGGER_HIGH,
                              ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n");