[patch 2/2] arm: Implement l2x0 cache disable functions

Catalin Marinas catalin.marinas at arm.com
Mon Jul 5 07:14:50 EDT 2010


On Mon, 2010-07-05 at 12:10 +0100, Thomas Gleixner wrote:
> 
> On Mon, 5 Jul 2010, Catalin Marinas wrote:
> 
> > On Mon, 2010-07-05 at 10:25 +0100, Thomas Gleixner wrote:
> > > --- linux-2.6.orig/arch/arm/mm/cache-l2x0.c
> > > +++ linux-2.6/arch/arm/mm/cache-l2x0.c
> > > @@ -103,7 +103,19 @@ static void l2x0_cache_sync(void)
> > >         spin_unlock_irqrestore(&l2x0_lock, flags);
> > >  }
> > >
> > > -static inline void l2x0_inv_all(void)
> > > +static void l2x0_flush_all(void)
> > > +{
> > > +       unsigned long flags;
> > > +
> > > +       /* clean all ways */
> > > +       spin_lock_irqsave(&l2x0_lock, flags);
> > > +       writel(l2x0_way_mask, l2x0_base + L2X0_CLEAN_WAY);
> > > +       cache_wait(l2x0_base + L2X0_CLEAN_WAY, l2x0_way_mask);
> > > +       cache_sync();
> > > +       spin_unlock_irqrestore(&l2x0_lock, flags);
> > > +}
> >
> > Since it only does cleaning, we should probably call it l2x0_clean_all
> > (the same for the outer_cache_fns entry). I think on ARM we
> > traditionally referred to flush as clean+invalidate.
> 
> So CLEAN_INV_WAY is the right opcode ?

Yes.

-- 
Catalin




More information about the linux-arm-kernel mailing list