[BUG?] vic MULTI_IRQ_HANDLER (was [PATCH] ep93xx: Implement double buffering for M2M DMA channels)

Will Deacon will.deacon at arm.com
Wed Apr 4 05:11:10 EDT 2012


On Tue, Apr 03, 2012 at 06:46:40PM +0100, H Hartley Sweeten wrote:
> On Tuesday, April 03, 2012 10:08 AM, Will Deacon wrote:
> > diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c
> > index dcb004a..cb6b49a 100644
> > --- a/arch/arm/common/vic.c
> > +++ b/arch/arm/common/vic.c
> > @@ -441,11 +441,9 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
> >         u32 stat, irq;
> >         int handled = 0;
> >  
> > -       stat = readl_relaxed(vic->base + VIC_IRQ_STATUS);
> > -       while (stat) {
> > +       while ((stat = readl_relaxed(vic->base + VIC_IRQ_STATUS))) {
> >                 irq = ffs(stat) - 1;
> >                 handle_IRQ(irq_domain_to_irq(&vic->domain, irq), regs);
> > -               stat &= ~(1 << irq);
> >                 handled = 1;
> >         }
> 
> This should be posted as a proper patch with your Signed-off-by.

If Jamie's happy with the change, I'll repost.

> But for what it's worth, on ep93xx:
> 
> Tested-by: H Hartley Sweeten <hsweeten at visionengravers.com>
> Acked-by: H Hartley Sweeten <hsweeten at visionengravers.com>

Thanks,

Will



More information about the linux-arm-kernel mailing list