Re: [URGENT - PATCH FOR 2.6.39] omap: iommu: Return IRQ_HANDLED in fault handler when no fault occured

From: Laurent Pinchart
Date: Tue May 10 2011 - 08:39:13 EST


Hi Tony,

On Friday 29 April 2011 12:03:10 Laurent Pinchart wrote:
> Hi Tony,
>
> On Wednesday 27 April 2011 16:03:02 Laurent Pinchart wrote:
> > The iommu shares an interrupt line with the OMAP3 ISP. The iommu
> > interrupt handler must check the fault status and return IRQ_HANDLED
> > when no fault occured.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
>
> Could you please pick this one up for 2.6.39 ? As far as I know David is on
> holidays so he might not be able to review the patch before the 2.6.39
> release.

Ping. Please.

> > ---
> >
> > arch/arm/plat-omap/iommu.c | 2 ++
> > 1 files changed, 2 insertions(+), 0 deletions(-)
> >
> > The OMAP3 ISP IOMMU got broken in 2.6.39-rc1 by
> >
> > commit d594f1f31afe13edd8c02f3854a65cc58cfb3b74
> > Author: David Cohen <dacohen@xxxxxxxxx>
> > Date: Wed Feb 16 19:35:51 2011 +0000
> >
> > omap: IOMMU: add support to callback during fault handling
> >
> > Add support to register an isr for IOMMU fault situations and adapt
> > it to allow such (*isr)() to be used as fault callback. Drivers
> > using
> >
> > IOMMU module might want to be informed when errors happen in order to
> > debug it or react.
> >
> > Signed-off-by: David Cohen <dacohen@xxxxxxxxx>
> > Acked-by: Hiroshi DOYU <Hiroshi.DOYU@xxxxxxxxx>
> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
> >
> > This patch fixes it and should be pushed to mainline in 2.6.39. The OMAP3
> > ISP driver, new in 2.6.39, would otherwise be totally broken until
> > 2.6.40.
> >
> > diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
> > index 8a51fd5..34fc31e 100644
> > --- a/arch/arm/plat-omap/iommu.c
> > +++ b/arch/arm/plat-omap/iommu.c
> > @@ -793,6 +793,8 @@ static irqreturn_t iommu_fault_handler(int irq, void
> > *data) clk_enable(obj->clk);
> >
> > errs = iommu_report_fault(obj, &da);
> > clk_disable(obj->clk);
> >
> > + if (errs == 0)
> > + return IRQ_HANDLED;
> >
> > /* Fault callback or TLB/PTE Dynamic loading */
> > if (obj->isr && !obj->isr(obj, da, errs, obj->isr_priv))

--
Regards,

Laurent Pinchart
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/