On Wed, 24 Jun 2009 15:18:24 -0700, "Kaz Kylheku" <KKylheku@xxxxxxxxxxxxxxxxx> wrote: > At some point in the kernel history, Ralfie decided that > the flush_icache_page function is unnecessary and > turned it into a MIPS-wide noop. But the SB1 core, which has > a VIVT instruction cache, it appears that there > is some kind of issue whereby when it > is handling a fault for a not-present virtual page, > it somehow ends up with bad data in the instruction > cache---perhaps an inconsistent state due to not having > been able to complete the fetch, but having initiated > a cache update on the expectation that the fetch > will complete. It seems that the the fault handler > is expected to do a flush. Looking at current code, I also have some questions aboud icache flushing. * flush_cache_mm does not flush icache. Is it OK? * flush_cache_{vmap,vunmap} does not flush icache. When icache used by modules flushed after unloading? * __update_cache, copy_user_highpage does not flush icache even if !cpu_has_ic_fills_f_dc. Is it OK? * free_initmem does not flush icache. When these init pages are reused, how corresponding icache will be flushed? I suppose flushing icache in flush_icache_page() will hide real bugs somewhere else... --- Atsushi Nemoto