The following changes were made since v6: o Remove the conditional code in mipspmu_get_irq(), a new member (irq) is added to the struct mips_pmu. o Remove function code from pmu.h, keep them duplicated in Oprofile and Perf-events. The duplication would be resolved by the idea of using Perf-events as the Oprofile backend. I'll submit a separate patchset to do this after this one gets merged. o The atomic64_read/set/... are replaced with local64_read/set/..., in order to keep aligned with the changes of the Perf-events core. o The patch order is adjusted. v6: http://www.linux-mips.org/archives/linux-mips/2010-06/msg00143.html Deng-Cheng Zhu (6): MIPS: define local_xchg from xchg_local to atomic_long_xchg MIPS/Oprofile: extract PMU defines for sharing MIPS: add support for software performance events MIPS: add support for hardware performance events (skeleton) MIPS/Perf-events: add callchain support MIPS: add support for hardware performance events (mipsxx) arch/mips/Kconfig | 10 + arch/mips/include/asm/local.h | 2 +- arch/mips/include/asm/perf_event.h | 25 + arch/mips/include/asm/pmu.h | 94 +++ arch/mips/kernel/Makefile | 2 + arch/mips/kernel/perf_event.c | 600 ++++++++++++++++++ arch/mips/kernel/perf_event_mipsxx.c | 1020 +++++++++++++++++++++++++++++++ arch/mips/kernel/traps.c | 18 +- arch/mips/kernel/unaligned.c | 6 + arch/mips/math-emu/cp1emu.c | 3 + arch/mips/mm/fault.c | 11 +- arch/mips/oprofile/op_model_loongson2.c | 18 +- arch/mips/oprofile/op_model_mipsxx.c | 21 +- arch/mips/oprofile/op_model_rm9000.c | 16 +- 14 files changed, 1789 insertions(+), 57 deletions(-) create mode 100644 arch/mips/include/asm/perf_event.h create mode 100644 arch/mips/include/asm/pmu.h create mode 100644 arch/mips/kernel/perf_event.c create mode 100644 arch/mips/kernel/perf_event_mipsxx.c