On Sat, 27 Jun 2009 00:24:32 +0100, Ralf Baechle <firstname.lastname@example.org> 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) ?