From: Mao Han Date: Thu, 18 Apr 2019 06:20:40 +0000 (+0800) Subject: csky: add page fault perf event support X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=0eaf50deec8d550164b3cf6a5d68ec1072916f0e;p=openwrt%2Fstaging%2Fblogic.git csky: add page fault perf event support This patch add support for page fault count, major fault count and minorfault count. Without this patch page faults are not sampled for perf event. Performance counter stats for '/usr/lib/perf-test/callchain_test': 0 page-faults # 0.000 K/sec Signed-off-by: Mao Han Signed-off-by: Guo Ren --- diff --git a/arch/csky/mm/fault.c b/arch/csky/mm/fault.c index 5beb25ca1c79..aeb9a5f11e00 100644 --- a/arch/csky/mm/fault.c +++ b/arch/csky/mm/fault.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -106,6 +107,8 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write, return; } #endif + + perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); /* * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -153,10 +156,15 @@ good_area: goto bad_area; BUG(); } - if (fault & VM_FAULT_MAJOR) + if (fault & VM_FAULT_MAJOR) { tsk->maj_flt++; - else + 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); + } up_read(&mm->mmap_sem); return;