---
 arch/x86/mm/init.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6/arch/x86/mm/init.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init.c
+++ linux-2.6/arch/x86/mm/init.c
@@ -448,7 +448,8 @@ void __init init_mem_mapping(void)
 	early_ioremap_page_table_range_init();
 #endif
 
-	load_cr3(swapper_pg_dir);
+	if (read_cr3() != __pa(swapper_pg_dir))
+		load_cr3(swapper_pg_dir);
 	__flush_tlb_all();
 
 	early_memtest(0, max_pfn_mapped << PAGE_SHIFT);
