linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Anju T <anju@linux.vnet.ibm.com>
To: mpe@ellerman.id.au
Cc: khandual@linux.vnet.ibm.com, anju@linux.vnet.ibm.com,
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	maddy@linux.vnet.ibm.com, dsahern@gmail.com, jolsa@redhat.com,
	hemant@linux.vnet.ibm.com, naveen.n.rao@linux.vnet.ibm.com,
	acme@redhat.com, sukadev@linux.vnet.ibm.com
Subject: [PATCH V7 3/4]  tools/perf: Map the ID values with register names
Date: Wed,  6 Jan 2016 15:15:50 +0530	[thread overview]
Message-ID: <1452073551-13737-4-git-send-email-anju@linux.vnet.ibm.com> (raw)
In-Reply-To: <1452073551-13737-1-git-send-email-anju@linux.vnet.ibm.com>

Map ID values with corresponding register names. These names are then
displayed when user issues perf record with the -I option
followed by perf report/script with -D option.

To test this patchset,
Eg:

$ perf record -I ls   # record machine state at interrupt
$ perf script -D      # read the perf.data file

Sample output obtained for this patch / output looks like as follows:

178329381464 0x138 [0x180]: PERF_RECORD_SAMPLE(IP, 0x1): 7803/7803: 0xc00000000000fd9c period: 1 addr: 0
... intr regs: mask 0x3ffffffffff ABI 64-bit
.... gpr0  0xc0000000001a6420
.... gpr1  0xc000001e4df039b0
.... gpr2  0xc000000000cdd100
.... gpr3  0x1
.... gpr4  0xc000001e4a96d000
.... gpr5  0x29854255ba
.... gpr6  0xc000000ffa3050b8
.... gpr7  0x0
.... gpr8  0x0
.... gpr9  0x0
.... gpr10 0x0
.... gpr11 0x0
.... gpr12 0x24022822
.... gpr13 0xc00000000fe03000
.... gpr14 0x0
.... gpr15 0xc000000000d763f8
.... gpr16 0x0
.... gpr17 0xc000001e4ddcf000
.... gpr18 0x0
.... gpr19 0xc000000ffa305000
.... gpr20 0xc000001e4df038c0
.... gpr21 0xc000001e40ed7a00
.... gpr22 0xc0000000000aa28c
.... gpr23 0xc000000000cdd100
.... gpr24 0x0
.... gpr25 0xc000000000cdd100
.... gpr26 0xc000001e4df038b0
.... gpr27 0xfffffffffffffeae
.... gpr28 0xc000001e4df03880
.... gpr29 0xc000000000dce900
.... gpr30 0xc000001e4df03890
.... gpr31 0xc000001e355c7a30
.... nip   0xc0000000001a62d8
.... msr   0x9000000000009032
.... orig_r3 0xc0000000001a6320
.... ctr   0xc0000000000a7be0
.... lnk   0xc0000000001a6428
.... xer   0x0
.... ccr   0x24022888
.... trap  0xf01
.... dar   0xc000001e40ed7a00
.... dsisr 0x3000c0060000004
 ... thread: :7803:7803
 ...... dso: /root/.debug/.build-id/d0/eb47b06c0d294143af13c50616f638c2d88658
           :7803  7803   178.329381:          1 cycles:  c00000000000fd9c .arch_local_irq_restore (/boot/vmlinux)


Signed-off-by: Anju T <anju@linux.vnet.ibm.com>
Reviewed-by  : Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
---
 tools/perf/arch/powerpc/include/perf_regs.h | 65 +++++++++++++++++++++++++++++
 tools/perf/config/Makefile                  |  5 +++
 2 files changed, 70 insertions(+)
 create mode 100644 tools/perf/arch/powerpc/include/perf_regs.h

diff --git a/tools/perf/arch/powerpc/include/perf_regs.h b/tools/perf/arch/powerpc/include/perf_regs.h
new file mode 100644
index 0000000..2114684
--- /dev/null
+++ b/tools/perf/arch/powerpc/include/perf_regs.h
@@ -0,0 +1,65 @@
+#ifndef ARCH_PERF_REGS_H
+#define ARCH_PERF_REGS_H
+
+#include <stdlib.h>
+#include <linux/types.h>
+#include <asm/perf_regs.h>
+
+#define PERF_REGS_MASK  ((1ULL << PERF_REG_POWERPC_MAX) - 1)
+#define PERF_REGS_MAX   PERF_REG_POWERPC_MAX
+#define PERF_SAMPLE_REGS_ABI   PERF_SAMPLE_REGS_ABI_64
+
+#define PERF_REG_IP     PERF_REG_POWERPC_NIP
+#define PERF_REG_SP     PERF_REG_POWERPC_GPR1
+
+static const char *reg_names[] = {
+	[PERF_REG_POWERPC_GPR0] = "gpr0",
+	[PERF_REG_POWERPC_GPR1] = "gpr1",
+	[PERF_REG_POWERPC_GPR2] = "gpr2",
+	[PERF_REG_POWERPC_GPR3] = "gpr3",
+	[PERF_REG_POWERPC_GPR4] = "gpr4",
+	[PERF_REG_POWERPC_GPR5] = "gpr5",
+	[PERF_REG_POWERPC_GPR6] = "gpr6",
+	[PERF_REG_POWERPC_GPR7] = "gpr7",
+	[PERF_REG_POWERPC_GPR8] = "gpr8",
+	[PERF_REG_POWERPC_GPR9] = "gpr9",
+	[PERF_REG_POWERPC_GPR10] = "gpr10",
+	[PERF_REG_POWERPC_GPR11] = "gpr11",
+	[PERF_REG_POWERPC_GPR12] = "gpr12",
+	[PERF_REG_POWERPC_GPR13] = "gpr13",
+	[PERF_REG_POWERPC_GPR14] = "gpr14",
+	[PERF_REG_POWERPC_GPR15] = "gpr15",
+	[PERF_REG_POWERPC_GPR16] = "gpr16",
+	[PERF_REG_POWERPC_GPR17] = "gpr17",
+	[PERF_REG_POWERPC_GPR18] = "gpr18",
+	[PERF_REG_POWERPC_GPR19] = "gpr19",
+	[PERF_REG_POWERPC_GPR20] = "gpr20",
+	[PERF_REG_POWERPC_GPR21] = "gpr21",
+	[PERF_REG_POWERPC_GPR22] = "gpr22",
+	[PERF_REG_POWERPC_GPR23] = "gpr23",
+	[PERF_REG_POWERPC_GPR24] = "gpr24",
+	[PERF_REG_POWERPC_GPR25] = "gpr25",
+	[PERF_REG_POWERPC_GPR26] = "gpr26",
+	[PERF_REG_POWERPC_GPR27] = "gpr27",
+	[PERF_REG_POWERPC_GPR28] = "gpr28",
+	[PERF_REG_POWERPC_GPR29] = "gpr29",
+	[PERF_REG_POWERPC_GPR30] = "gpr30",
+	[PERF_REG_POWERPC_GPR31] = "gpr31",
+	[PERF_REG_POWERPC_NIP] = "nip",
+	[PERF_REG_POWERPC_MSR] = "msr",
+	[PERF_REG_POWERPC_ORIG_R3] = "orig_r3",
+	[PERF_REG_POWERPC_CTR] = "ctr",
+	[PERF_REG_POWERPC_LNK] = "lnk",
+	[PERF_REG_POWERPC_XER] = "xer",
+	[PERF_REG_POWERPC_CCR] = "ccr",
+	[PERF_REG_POWERPC_TRAP] = "trap",
+	[PERF_REG_POWERPC_DAR] = "dar",
+	[PERF_REG_POWERPC_DSISR] = "dsisr"
+};
+
+static inline const char *perf_reg_name(int id)
+{
+
+	return reg_names[id];
+}
+#endif /* ARCH_PERF_REGS_H */
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 38a0853..acf0302 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -23,6 +23,11 @@ $(call detected_var,ARCH)
 
 NO_PERF_REGS := 1
 
+# Additional ARCH settings for ppc64
+ifeq ($(ARCH),powerpc)
+	NO_PERF_REGS := 0
+endif
+
 # Additional ARCH settings for x86
 ifeq ($(ARCH),x86)
   $(call detected,CONFIG_X86)
-- 
2.1.0

  parent reply	other threads:[~2016-01-06  9:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-06  9:45 [PATCH V7 0/4] perf/powerpc: Add ability to sample intr machine state in powerpc Anju T
2016-01-06  9:45 ` [PATCH V7 1/4] perf/powerpc: assign an id to each powerpc register Anju T
2016-01-06  9:45 ` [PATCH V7 2/4] perf/powerpc: add support for sampling intr machine state Anju T
2016-01-06  9:45 ` Anju T [this message]
2016-01-06 17:44   ` [PATCH V7 3/4] tools/perf: Map the ID values with register names Jiri Olsa
2016-01-06  9:45 ` [PATCH V1 4/4] tool/perf: Add sample_reg_mask to include all perf_regs regs Anju T

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1452073551-13737-4-git-send-email-anju@linux.vnet.ibm.com \
    --to=anju@linux.vnet.ibm.com \
    --cc=acme@redhat.com \
    --cc=dsahern@gmail.com \
    --cc=hemant@linux.vnet.ibm.com \
    --cc=jolsa@redhat.com \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.vnet.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=naveen.n.rao@linux.vnet.ibm.com \
    --cc=sukadev@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).