On Sat, 27 Jun 2009 00:24:32 +0100, Ralf Baechle <ralf@xxxxxxxxxxxxxx> 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. > > > > Anyway, see if you can work this patch (based on 2.6.26) > > into your kernel, and report whether it makes any difference. > > The functionality of flush_icache_page() is being handled update_mmu_cache. A bit off-topic question. The update_mmu_cache (or __update_cache) itself does not flush icache. When icache is invalidated (especially VIPT case) ? --- Atsushi Nemoto