forked from luck/tmp_suning_uos_patched
[S390] Wire up page fault events for software perf counters.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
5c0b912e75
commit
bde69af2ab
@ -10,6 +10,7 @@
|
|||||||
* Copyright (C) 1995 Linus Torvalds
|
* Copyright (C) 1995 Linus Torvalds
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/perf_counter.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
@ -305,7 +306,7 @@ do_exception(struct pt_regs *regs, unsigned long error_code, int write)
|
|||||||
* interrupts again and then search the VMAs
|
* interrupts again and then search the VMAs
|
||||||
*/
|
*/
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address);
|
||||||
down_read(&mm->mmap_sem);
|
down_read(&mm->mmap_sem);
|
||||||
|
|
||||||
si_code = SEGV_MAPERR;
|
si_code = SEGV_MAPERR;
|
||||||
@ -363,11 +364,15 @@ do_exception(struct pt_regs *regs, unsigned long error_code, int write)
|
|||||||
}
|
}
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
if (fault & VM_FAULT_MAJOR)
|
if (fault & VM_FAULT_MAJOR) {
|
||||||
tsk->maj_flt++;
|
tsk->maj_flt++;
|
||||||
else
|
perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0,
|
||||||
|
regs, address);
|
||||||
|
} else {
|
||||||
tsk->min_flt++;
|
tsk->min_flt++;
|
||||||
|
perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0,
|
||||||
|
regs, address);
|
||||||
|
}
|
||||||
up_read(&mm->mmap_sem);
|
up_read(&mm->mmap_sem);
|
||||||
/*
|
/*
|
||||||
* The instruction that caused the program check will
|
* The instruction that caused the program check will
|
||||||
|
Loading…
Reference in New Issue
Block a user