}
 NOKPROBE_SYMBOL(do_user_addr_fault);
 
-/*
- * Explicitly marked noinline such that the function tracer sees this as the
- * page_fault entry point.
- */
-static noinline void
-__do_page_fault(struct pt_regs *regs, unsigned long hw_error_code,
-               unsigned long address)
-{
-       prefetchw(¤t->mm->mmap_sem);
-
-       if (unlikely(kmmio_fault(regs, address)))
-               return;
-
-       /* Was the fault on kernel-controlled part of the address space? */
-       if (unlikely(fault_in_kernel_space(address)))
-               do_kern_addr_fault(regs, hw_error_code, address);
-       else
-               do_user_addr_fault(regs, hw_error_code, address);
-}
-NOKPROBE_SYMBOL(__do_page_fault);
-
 static __always_inline void
 trace_page_fault_entries(struct pt_regs *regs, unsigned long error_code,
                         unsigned long address)
 }
 
 dotraplinkage void
-do_page_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)
+do_page_fault(struct pt_regs *regs, unsigned long hw_error_code,
+               unsigned long address)
 {
-       enum ctx_state prev_state;
+       prefetchw(¤t->mm->mmap_sem);
+       trace_page_fault_entries(regs, hw_error_code, address);
 
-       prev_state = exception_enter();
-       trace_page_fault_entries(regs, error_code, address);
-       __do_page_fault(regs, error_code, address);
-       exception_exit(prev_state);
+       if (unlikely(kmmio_fault(regs, address)))
+               return;
+
+       /* Was the fault on kernel-controlled part of the address space? */
+       if (unlikely(fault_in_kernel_space(address)))
+               do_kern_addr_fault(regs, hw_error_code, address);
+       else
+               do_user_addr_fault(regs, hw_error_code, address);
 }
 NOKPROBE_SYMBOL(do_page_fault);