On Sat, 27 Jun 2009 16:48:11 +0100, Ralf Baechle <ralf@xxxxxxxxxxxxxx> 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 > memory. Yes, I suppose so on this swarm case, but I'm just thinking of other case breaking icache coherency... --- Atsushi Nemoto