From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752460AbbGRIan (ORCPT ); Sat, 18 Jul 2015 04:30:43 -0400 Received: from mail-la0-f48.google.com ([209.85.215.48]:36402 "EHLO mail-la0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751408AbbGRIak (ORCPT ); Sat, 18 Jul 2015 04:30:40 -0400 From: Max Filippov To: linux-xtensa@linux-xtensa.org, linux-kernel@vger.kernel.org Cc: Chris Zankel , Marc Gauthier , Max Filippov Subject: [PATCH v2 00/13] Support hardware perf counters on xtensa Date: Sat, 18 Jul 2015 11:30:03 +0300 Message-Id: <1437208216-15729-1-git-send-email-jcmvbkbc@gmail.com> X-Mailer: git-send-email 1.8.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, this series adds support for hardware performance counters in counting and sampling modes as well as for page fault counting. Perf IRQ is handled as NMI when configured properly (as the only topmost medium-priority interrupt). It reorganizes stack tracing code to share it between old oprofile and new perf interfaces, and improves kernel stack traces both for builtin debug functions and for gdb. There's also fixes and cleanups for the areas touched by the new features. Changes v1->v2: - make continuous stack changes conditional; - replace l32i/s32i + add used to access spilled registers with l32e/s32e; - use -EINVAL instead of -ENOENT for invalid PMU event configuratons; - fix kernel register spilling code; - optionally treat perf IRQ as NMI. Max Filippov (13): xtensa: clean up Kconfig dependencies for custom cores xtensa: keep exception/interrupt stack continuous xtensa: move oprofile stack tracing to stacktrace.c xtensa: select PERF_USE_VMALLOC for cache-aliasing configurations xtensa: add profiling IRQ type to xtensa_irq_map xtensa: count software page fault perf events xtensa: implement counting and sampling perf events perf tools: xtensa: add DWARF register names xtensa: reorganize irq flags tracing xtensa: fix kernel register spilling xtensa: don't touch EXC_TABLE_FIXUP in _switch_to xtensa: implement fake NMI xtensa: drop unused irq_err_count arch/xtensa/Kconfig | 22 +- arch/xtensa/include/asm/atomic.h | 10 +- arch/xtensa/include/asm/cmpxchg.h | 4 +- arch/xtensa/include/asm/irqflags.h | 22 +- arch/xtensa/include/asm/processor.h | 31 ++- arch/xtensa/include/asm/stacktrace.h | 8 + arch/xtensa/include/asm/traps.h | 29 +- arch/xtensa/kernel/Makefile | 1 + arch/xtensa/kernel/entry.S | 197 ++++++++++---- arch/xtensa/kernel/irq.c | 17 +- arch/xtensa/kernel/perf_event.c | 454 +++++++++++++++++++++++++++++++ arch/xtensa/kernel/stacktrace.c | 167 +++++++++++- arch/xtensa/kernel/traps.c | 31 ++- arch/xtensa/kernel/vectors.S | 10 +- arch/xtensa/mm/fault.c | 7 + arch/xtensa/oprofile/backtrace.c | 158 +---------- tools/perf/arch/xtensa/Build | 1 + tools/perf/arch/xtensa/Makefile | 3 + tools/perf/arch/xtensa/util/Build | 1 + tools/perf/arch/xtensa/util/dwarf-regs.c | 25 ++ 20 files changed, 954 insertions(+), 244 deletions(-) create mode 100644 arch/xtensa/kernel/perf_event.c create mode 100644 tools/perf/arch/xtensa/Build create mode 100644 tools/perf/arch/xtensa/Makefile create mode 100644 tools/perf/arch/xtensa/util/Build create mode 100644 tools/perf/arch/xtensa/util/dwarf-regs.c -- 1.8.1.4