|
@@ -897,7 +897,8 @@ static irqreturn_t altr_edac_a10_ecc_irq(int irq, void *dev_id)
|
|
|
writel(ALTR_A10_ECC_DERRPENA,
|
|
|
base + ALTR_A10_ECC_INTSTAT_OFST);
|
|
|
edac_device_handle_ue(dci->edac_dev, 0, 0, dci->edac_dev_name);
|
|
|
- panic("\nEDAC:ECC_DEVICE[Uncorrectable errors]\n");
|
|
|
+ if (dci->data->panic)
|
|
|
+ panic("\nEDAC:ECC_DEVICE[Uncorrectable errors]\n");
|
|
|
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
@@ -936,6 +937,12 @@ static const struct edac_device_prv_data a10_ocramecc_data = {
|
|
|
.set_err_ofst = ALTR_A10_ECC_INTTEST_OFST,
|
|
|
.ecc_irq_handler = altr_edac_a10_ecc_irq,
|
|
|
.inject_fops = &altr_edac_a10_device_inject_fops,
|
|
|
+ /*
|
|
|
+ * OCRAM panic on uncorrectable error because sleep/resume
|
|
|
+ * functions and FPGA contents are stored in OCRAM. Prefer
|
|
|
+ * a kernel panic over executing/loading corrupted data.
|
|
|
+ */
|
|
|
+ .panic = true,
|
|
|
};
|
|
|
|
|
|
#endif /* CONFIG_EDAC_ALTERA_OCRAM */
|