--- linux-2.5.62/arch/i386/mm/pageattr.c.orig Wed Feb 19 16:44:56 2003 +++ linux-2.5.62/arch/i386/mm/pageattr.c Wed Feb 19 16:46:11 2003 @@ -45,17 +45,6 @@ return base; } -static void flush_kernel_map(void *dummy) -{ - /* Could use CLFLUSH here if the CPU supports it (Hammer,P4) */ - if (boot_cpu_data.x86_model >= 4) - asm volatile("wbinvd":::"memory"); - /* Flush all to work around Errata in early athlons regarding - * large page flushing. - */ - __flush_tlb_all(); -} - static void set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte) { set_pte_atomic(kpte, pte); /* change init_mm */ @@ -129,14 +118,6 @@ return 0; } -static inline void flush_map(void) -{ -#ifdef CONFIG_SMP - smp_call_function(flush_kernel_map, NULL, 1, 1); -#endif - flush_kernel_map(NULL); -} - struct deferred_page { struct deferred_page *next; struct page *fpage; @@ -172,7 +153,7 @@ struct deferred_page *df; df = kmalloc(sizeof(struct deferred_page), GFP_KERNEL); if (!df) { - flush_map(); + flush_tlb_all(); __free_page(fpage); } else { df->next = df_list; @@ -192,7 +173,7 @@ down_read(&init_mm.mmap_sem); df = xchg(&df_list, NULL); up_read(&init_mm.mmap_sem); - flush_map(); + flush_tlb_all(); for (; df; df = next_df) { next_df = df->next; if (df->fpage)