diff options
Diffstat (limited to 'arch/arc/mm/fault.c')
| -rw-r--r-- | arch/arc/mm/fault.c | 19 | 
1 files changed, 3 insertions, 16 deletions
diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c index 72f5405a7ec5..f5657cb68e4f 100644 --- a/arch/arc/mm/fault.c +++ b/arch/arc/mm/fault.c @@ -13,7 +13,6 @@  #include <linux/kdebug.h>  #include <linux/perf_event.h>  #include <linux/mm_types.h> -#include <asm/pgalloc.h>  #include <asm/mmu.h>  /* @@ -106,6 +105,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)  	if (write)  		flags |= FAULT_FLAG_WRITE; +	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);  retry:  	mmap_read_lock(mm); @@ -131,7 +131,7 @@ retry:  		goto bad_area;  	} -	fault = handle_mm_fault(vma, address, flags); +	fault = handle_mm_fault(vma, address, flags, regs);  	/* Quick path to respond to signals */  	if (fault_signal_pending(fault, regs)) { @@ -156,22 +156,9 @@ bad_area:  	 * Major/minor page fault accounting  	 * (in case of retry we only land here once)  	 */ -	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); - -	if (likely(!(fault & VM_FAULT_ERROR))) { -		if (fault & VM_FAULT_MAJOR) { -			tsk->maj_flt++; -			perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, -				      regs, address); -		} else { -			tsk->min_flt++; -			perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, -				      regs, address); -		} - +	if (likely(!(fault & VM_FAULT_ERROR)))  		/* Normal return path: fault Handled Gracefully */  		return; -	}  	if (!user_mode(regs))  		goto no_context;  |