Ralf I remember now that we have applied to our tree the proposed patch titled "MIPS HIGHMEM fixes for cache aliasing and non-DMA I/O". This patch changes the semantics of flush_dcache_page() by using page_mapped() instead of mapping_mapped() to decide if the flush should be lazy. Is it this change that makes us get lazy flushes for code mappings and therefore exposing the problem ? The ARM port which has made a similar change to set_pte_at() also uses page_mapped() to decide if lazy flushing is possible. If this is true, then upstream might not need my patch. - Lars On ons, 2014-12-03 at 14:42 +0100, Ralf Baechle wrote: > Lars, > > normally set_pte_at() is invoked in a > > cache_flush_*() > set_pte_at() > tlb_flush_*() > > sequence. So I'm wondering if you're trying to fix something in set_pte_at > that actually ought to be fixed in the cache_flush_*() function. > > I'm wondering, have you identified which cache flush function in particular > was used in the sequence in your particular bug's case? > > Ralf