Re: Broadcom Swarm support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jun 28, 2009 at 01:09:06AM +0900, Atsushi Nemoto wrote:

> > The I-cache for page just being loaded is clean so no flushing needed.  It
> > is clean because when the page has been unmapped it was flushed or because
> > the CPU switched to a fresh ASID.
> 
> Then, flush_cache_range or flush_cache_page should be called then the
> page was unmmapped, right?  How about flush_cache_mm?  It does not
> flush icache currently.

If that is being called then we're either about to terminate a process or
to exec a new process.  In either case flush_tlb_cache (on VIVT I-cache)
will drop the tlb context which effectively is a full I-cache flush.

> And how about kernel __init code pages?  These pages are just freed on
> free_initmem.  Also how about code pages used by a module which is to
> be unloaded from kernel?

Init code pages won't be used to store code that will be executed at
KSEG0 or XKPHYS addresses so I-cache coherency is not of interest.

For modules the I-cache is being flushed on loading of the module, see
calls to flush_icache_range() in kernel/module.c so I-cache coherency is
not of concern on module unload.

> > The reason for this bug is that when data is being shoveled around by the
> > processor (as opposed to DMA) as on PIO block devices it'll end up sitting
> > in the D-cache so I-cache refills will grab stale data from S-cache or
> > memory.
> 
> Yes, I suppose so on this swarm case, but I'm just thinking of other
> case breaking icache coherency...

Be careful with that - you might succeed ;-)

  Ralf


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux