Re: mpc85xx_edac.c: Should the mpc85xx_l2_isr be shared irqs?
From: Scott Wood <hidden>
Date: 2013-06-25 20:54:19
On Wed, Jul 18, 2012 at 05:00:29PM +0800, Xufeng Zhang wrote:
quoted hunk ↗ jump to hunk
Hi All, I detected below error when booting p1021mds after enabled EDAC feature: EDAC MC: Ver: 2.1.0 Jul 17 2012 Freescale(R) MPC85xx EDAC driver, (C) 2006 Montavista Software EDAC MC0: Giving out device to 'MPC85xx_edac' 'mpc85xx_mc_err': DEV mpc85xx_mc_e rr IRQ 45/[EDAC] MC err: IRQF_DISABLED is not guaranteed on shared IRQs MPC85xx_edac acquired irq 45 for MC MPC85xx_edac MC err registered EDAC DEVICE0: Giving out device to module 'MPC85xx_edac' controller 'mpc85xx_l2_ err': DEV 'mpc85xx_l2_err' (INTERRUPT) mpc85xx_l2_err_probe: Unable to requiest irq 45 for MPC85xx L2 err Then kernel hang. When request irq for l2-cache, since it share the same irq with memory controller, I think the code should be: printk(KERN_ERR Thanks, Xufeng Zhang--- a/drivers/edac/mpc85xx_edac.c +++ b/drivers/edac/mpc85xx_edac.c@@ -577,7 +577,7 @@ static int __devinit mpc85xx_l2_err_probe(structof_device *op, if (edac_op_state == EDAC_OPSTATE_INT) { pdata->irq = irq_of_parse_and_map(op->node, 0); res = devm_request_irq(&op->dev, pdata->irq, - mpc85xx_l2_isr, IRQF_DISABLED, + mpc85xx_l2_isr, IRQF_DISABLED | IRQF_SHARED, "[EDAC] L2 err", edac_dev); if (res < 0) {
Sorry for the delayed response... That "IRQF_DISABLED is not guaranteed" message was removed in v2.6.35 (along with the rest of IRQF_DISABLED support) which was almost two years old even back when your e-mail was sent. Even back then, as far as I can tell your patch would be introducing, not fixing, that message. It does look like this interrupt should be shared, though. The deprecated IRQF_DISABLED should be removed. -Scott