... and this patch of yours breaks MTRR setting subtly:
because it's not just an open-coded __tlb_flush_all(), it _disables PGE
and keeps it so while the MTRR's are changed on all CPUs_.
Your patch adds __flush_tlb_all() which re-enables the PGE bit in cr4,
see asm-x86/tlbflush.h:
/* clear PGE */
write_cr4(cr4 & ~X86_CR4_PGE);
/* write old PGE again and flush TLBs */
write_cr4(cr4);
so we'll keep PGE enabled during the MTRR setting - which changes
behavior.
Ingo
--