On Sat, 27 Jun 2009 16:48:11 +0100, Ralf Baechle <firstname.lastname@example.org> wrote:
> On Sat, Jun 27, 2009 at 10:59:33PM +0900, Atsushi Nemoto wrote:
> > A bit off-topic question. The update_mmu_cache (or __update_cache)
> > itself does not flush icache. When icache is invalidated (especially
> > VIPT case) ?
> Not off-topic at all in this thread.
> 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.
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?
> 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
Yes, I suppose so on this swarm case, but I'm just thinking of other
case breaking icache coherency...