x86/mm: remove vmalloc faulting
[linux-2.6-microblaze.git] / arch / x86 / mm / tlb.c
index 66f96f2..f3fe261 100644 (file)
@@ -161,34 +161,6 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
        local_irq_restore(flags);
 }
 
-static void sync_current_stack_to_mm(struct mm_struct *mm)
-{
-       unsigned long sp = current_stack_pointer;
-       pgd_t *pgd = pgd_offset(mm, sp);
-
-       if (pgtable_l5_enabled()) {
-               if (unlikely(pgd_none(*pgd))) {
-                       pgd_t *pgd_ref = pgd_offset_k(sp);
-
-                       set_pgd(pgd, *pgd_ref);
-               }
-       } else {
-               /*
-                * "pgd" is faked.  The top level entries are "p4d"s, so sync
-                * the p4d.  This compiles to approximately the same code as
-                * the 5-level case.
-                */
-               p4d_t *p4d = p4d_offset(pgd, sp);
-
-               if (unlikely(p4d_none(*p4d))) {
-                       pgd_t *pgd_ref = pgd_offset_k(sp);
-                       p4d_t *p4d_ref = p4d_offset(pgd_ref, sp);
-
-                       set_p4d(p4d, *p4d_ref);
-               }
-       }
-}
-
 static inline unsigned long mm_mangle_tif_spec_ib(struct task_struct *next)
 {
        unsigned long next_tif = task_thread_info(next)->flags;
@@ -377,15 +349,6 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,
                 */
                cond_ibpb(tsk);
 
-               if (IS_ENABLED(CONFIG_VMAP_STACK)) {
-                       /*
-                        * If our current stack is in vmalloc space and isn't
-                        * mapped in the new pgd, we'll double-fault.  Forcibly
-                        * map it.
-                        */
-                       sync_current_stack_to_mm(next);
-               }
-
                /*
                 * Stop remote flushes for the previous mm.
                 * Skip kernel threads; we never send init_mm TLB flushing IPIs,