EDAC, altera: Add IRQ Flags to disable IRQ while handling
Add the IRQF_ONESHOT and IRQF_TRIGGER_HIGH flags to disable the IRQ while executing the IRQ handler. Remove the IRQF_SHARED because these are not shared IRQs in the domain. Exposed when flooding IRQs. Signed-off-by: Thor Thayer <tthayer@opensource.altera.com> Cc: linux-edac <linux-edac@vger.kernel.org> Link: http://lkml.kernel.org/r/1474582419-7053-2-git-send-email-tthayer@opensource.altera.com Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
parent
3763569f4c
commit
a29d64a45e
|
@ -1445,7 +1445,8 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
|
||||||
}
|
}
|
||||||
rc = devm_request_irq(&altdev->ddev, altdev->sb_irq,
|
rc = devm_request_irq(&altdev->ddev, altdev->sb_irq,
|
||||||
prv->ecc_irq_handler,
|
prv->ecc_irq_handler,
|
||||||
IRQF_SHARED, ecc_name, altdev);
|
IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
|
||||||
|
ecc_name, altdev);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
edac_printk(KERN_ERR, EDAC_DEVICE, "PortB SBERR IRQ error\n");
|
edac_printk(KERN_ERR, EDAC_DEVICE, "PortB SBERR IRQ error\n");
|
||||||
goto err_release_group_1;
|
goto err_release_group_1;
|
||||||
|
@ -1459,7 +1460,8 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
|
||||||
}
|
}
|
||||||
rc = devm_request_irq(&altdev->ddev, altdev->db_irq,
|
rc = devm_request_irq(&altdev->ddev, altdev->db_irq,
|
||||||
prv->ecc_irq_handler,
|
prv->ecc_irq_handler,
|
||||||
IRQF_SHARED, ecc_name, altdev);
|
IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
|
||||||
|
ecc_name, altdev);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n");
|
edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n");
|
||||||
goto err_release_group_1;
|
goto err_release_group_1;
|
||||||
|
@ -1745,9 +1747,9 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,
|
||||||
rc = -ENODEV;
|
rc = -ENODEV;
|
||||||
goto err_release_group1;
|
goto err_release_group1;
|
||||||
}
|
}
|
||||||
rc = devm_request_irq(edac->dev, altdev->sb_irq,
|
rc = devm_request_irq(edac->dev, altdev->sb_irq, prv->ecc_irq_handler,
|
||||||
prv->ecc_irq_handler,
|
IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
|
||||||
IRQF_SHARED, ecc_name, altdev);
|
ecc_name, altdev);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
edac_printk(KERN_ERR, EDAC_DEVICE, "No SBERR IRQ resource\n");
|
edac_printk(KERN_ERR, EDAC_DEVICE, "No SBERR IRQ resource\n");
|
||||||
goto err_release_group1;
|
goto err_release_group1;
|
||||||
|
@ -1759,9 +1761,9 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,
|
||||||
rc = -ENODEV;
|
rc = -ENODEV;
|
||||||
goto err_release_group1;
|
goto err_release_group1;
|
||||||
}
|
}
|
||||||
rc = devm_request_irq(edac->dev, altdev->db_irq,
|
rc = devm_request_irq(edac->dev, altdev->db_irq, prv->ecc_irq_handler,
|
||||||
prv->ecc_irq_handler,
|
IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
|
||||||
IRQF_SHARED, ecc_name, altdev);
|
ecc_name, altdev);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n");
|
edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n");
|
||||||
goto err_release_group1;
|
goto err_release_group1;
|
||||||
|
|
Loading…
Reference in New Issue