}
        rc = devm_request_irq(&altdev->ddev, altdev->sb_irq,
                              prv->ecc_irq_handler,
-                             IRQF_SHARED, ecc_name, altdev);
+                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "PortB SBERR IRQ error\n");
                goto err_release_group_1;
        }
        rc = devm_request_irq(&altdev->ddev, altdev->db_irq,
                              prv->ecc_irq_handler,
-                             IRQF_SHARED, ecc_name, altdev);
+                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n");
                goto err_release_group_1;
                rc = -ENODEV;
                goto err_release_group1;
        }
-       rc = devm_request_irq(edac->dev, altdev->sb_irq,
-                             prv->ecc_irq_handler,
-                             IRQF_SHARED, ecc_name, altdev);
+       rc = devm_request_irq(edac->dev, altdev->sb_irq, prv->ecc_irq_handler,
+                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "No SBERR IRQ resource\n");
                goto err_release_group1;
                rc = -ENODEV;
                goto err_release_group1;
        }
-       rc = devm_request_irq(edac->dev, altdev->db_irq,
-                             prv->ecc_irq_handler,
-                             IRQF_SHARED, ecc_name, altdev);
+       rc = devm_request_irq(edac->dev, altdev->db_irq, prv->ecc_irq_handler,
+                             IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+                             ecc_name, altdev);
        if (rc) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n");
                goto err_release_group1;