linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Add some perf support for mips
@ 2021-02-04  3:35 Tiezhu Yang
  2021-02-04  3:35 ` [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf Tiezhu Yang
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Tiezhu Yang @ 2021-02-04  3:35 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar,
	Arnaldo Carvalho de Melo, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim
  Cc: linux-mips, linux-kernel, Xuefeng Li, Juxin Gao

v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1

Tiezhu Yang (3):
  MIPS: kernel: Support extracting off-line stack traces from user-space
    with perf
  perf tools: Support mips unwinding and dwarf-regs
  perf tools: Generate mips syscalls_n64.c syscall table

 arch/mips/Kconfig                                  |   2 +
 arch/mips/include/uapi/asm/perf_regs.h             |  40 +++
 arch/mips/kernel/Makefile                          |   2 +-
 arch/mips/kernel/perf_regs.c                       |  68 ++++
 tools/perf/Makefile.config                         |   9 +-
 tools/perf/arch/mips/Makefile                      |  22 ++
 tools/perf/arch/mips/entry/syscalls/mksyscalltbl   |  32 ++
 .../perf/arch/mips/entry/syscalls/syscall_n64.tbl  | 358 +++++++++++++++++++++
 tools/perf/arch/mips/include/dwarf-regs-table.h    |  31 ++
 tools/perf/arch/mips/include/perf_regs.h           |  84 +++++
 tools/perf/arch/mips/util/Build                    |   3 +
 tools/perf/arch/mips/util/dwarf-regs.c             |  38 +++
 tools/perf/arch/mips/util/perf_regs.c              |   6 +
 tools/perf/arch/mips/util/unwind-libunwind.c       |  22 ++
 tools/perf/check-headers.sh                        |   1 +
 tools/perf/util/dwarf-regs.c                       |   3 +
 tools/perf/util/syscalltbl.c                       |   4 +
 17 files changed, 723 insertions(+), 2 deletions(-)
 create mode 100644 arch/mips/include/uapi/asm/perf_regs.h
 create mode 100644 arch/mips/kernel/perf_regs.c
 create mode 100644 tools/perf/arch/mips/Makefile
 create mode 100644 tools/perf/arch/mips/entry/syscalls/mksyscalltbl
 create mode 100644 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl
 create mode 100644 tools/perf/arch/mips/include/dwarf-regs-table.h
 create mode 100644 tools/perf/arch/mips/include/perf_regs.h
 create mode 100644 tools/perf/arch/mips/util/Build
 create mode 100644 tools/perf/arch/mips/util/dwarf-regs.c
 create mode 100644 tools/perf/arch/mips/util/perf_regs.c
 create mode 100644 tools/perf/arch/mips/util/unwind-libunwind.c

-- 
2.1.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf
  2021-02-04  3:35 [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
@ 2021-02-04  3:35 ` Tiezhu Yang
  2021-02-04 20:59   ` Thomas Bogendoerfer
  2021-02-04  3:35 ` [PATCH v2 2/3] perf tools: Support mips unwinding and dwarf-regs Tiezhu Yang
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 13+ messages in thread
From: Tiezhu Yang @ 2021-02-04  3:35 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar,
	Arnaldo Carvalho de Melo, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim
  Cc: linux-mips, linux-kernel, Xuefeng Li, Juxin Gao, David Daney,
	Ralf Baechle, Archer Yan

Add perf_event_mips_regs/perf_reg_value/perf_reg_validate to support
features HAVE_PERF_REGS/HAVE_PERF_USER_STACK_DUMP in kernel.

[ayan@wavecomp.com: Repick this patch for unwinding userstack backtrace
 by perf and libunwind on MIPS based CPU.]

[ralf@linux-mips.org: Add perf_get_regs_user() which is required after
'commit 88a7c26af8da ("perf: Move task_pt_regs sampling into arch code")'.]

[yangtiezhu@loongson.cn: Fix build error about perf_get_regs_user() after
commit 76a4efa80900 ("perf/arch: Remove perf_sample_data::regs_user_copy"),
and also separate the original patches into two parts (MIPS kernel and perf
tools) to merge easily.]

The original patches:
https://lore.kernel.org/patchwork/patch/1126521/
https://lore.kernel.org/patchwork/patch/1126520/

Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Archer Yan <ayan@wavecomp.com>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---

v2: add R26 and R27 to the enum perf_event_mips_regs

 arch/mips/Kconfig                      |  2 +
 arch/mips/include/uapi/asm/perf_regs.h | 40 ++++++++++++++++++++
 arch/mips/kernel/Makefile              |  2 +-
 arch/mips/kernel/perf_regs.c           | 68 ++++++++++++++++++++++++++++++++++
 4 files changed, 111 insertions(+), 1 deletion(-)
 create mode 100644 arch/mips/include/uapi/asm/perf_regs.h
 create mode 100644 arch/mips/kernel/perf_regs.c

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 62475fc..743b8f7 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -77,6 +77,8 @@ config MIPS
 	select HAVE_NMI
 	select HAVE_OPROFILE
 	select HAVE_PERF_EVENTS
+	select HAVE_PERF_REGS
+	select HAVE_PERF_USER_STACK_DUMP
 	select HAVE_REGS_AND_STACK_ACCESS_API
 	select HAVE_RSEQ
 	select HAVE_SPARSE_SYSCALL_NR
diff --git a/arch/mips/include/uapi/asm/perf_regs.h b/arch/mips/include/uapi/asm/perf_regs.h
new file mode 100644
index 0000000..d0f4ecd
--- /dev/null
+++ b/arch/mips/include/uapi/asm/perf_regs.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _ASM_MIPS_PERF_REGS_H
+#define _ASM_MIPS_PERF_REGS_H
+
+enum perf_event_mips_regs {
+	PERF_REG_MIPS_PC,
+	PERF_REG_MIPS_R1,
+	PERF_REG_MIPS_R2,
+	PERF_REG_MIPS_R3,
+	PERF_REG_MIPS_R4,
+	PERF_REG_MIPS_R5,
+	PERF_REG_MIPS_R6,
+	PERF_REG_MIPS_R7,
+	PERF_REG_MIPS_R8,
+	PERF_REG_MIPS_R9,
+	PERF_REG_MIPS_R10,
+	PERF_REG_MIPS_R11,
+	PERF_REG_MIPS_R12,
+	PERF_REG_MIPS_R13,
+	PERF_REG_MIPS_R14,
+	PERF_REG_MIPS_R15,
+	PERF_REG_MIPS_R16,
+	PERF_REG_MIPS_R17,
+	PERF_REG_MIPS_R18,
+	PERF_REG_MIPS_R19,
+	PERF_REG_MIPS_R20,
+	PERF_REG_MIPS_R21,
+	PERF_REG_MIPS_R22,
+	PERF_REG_MIPS_R23,
+	PERF_REG_MIPS_R24,
+	PERF_REG_MIPS_R25,
+	PERF_REG_MIPS_R26,
+	PERF_REG_MIPS_R27,
+	PERF_REG_MIPS_R28,
+	PERF_REG_MIPS_R29,
+	PERF_REG_MIPS_R30,
+	PERF_REG_MIPS_R31,
+	PERF_REG_MIPS_MAX = PERF_REG_MIPS_R31 + 1,
+};
+#endif /* _ASM_MIPS_PERF_REGS_H */
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index 2303a58..a893ea0 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -103,7 +103,7 @@ obj-$(CONFIG_MIPSR2_TO_R6_EMULATOR)	+= mips-r2-to-r6-emul.o
 
 CFLAGS_cpu-bugs64.o	= $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -x c /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi)
 
-obj-$(CONFIG_PERF_EVENTS)	+= perf_event.o
+obj-$(CONFIG_PERF_EVENTS)	+= perf_event.o perf_regs.o
 obj-$(CONFIG_HW_PERF_EVENTS)	+= perf_event_mipsxx.o
 
 obj-$(CONFIG_JUMP_LABEL)	+= jump_label.o
diff --git a/arch/mips/kernel/perf_regs.c b/arch/mips/kernel/perf_regs.c
new file mode 100644
index 0000000..e686780
--- /dev/null
+++ b/arch/mips/kernel/perf_regs.c
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Some parts derived from x86 version of this file.
+ *
+ * Copyright (C) 2013 Cavium, Inc.
+ */
+
+#include <linux/perf_event.h>
+
+#include <asm/ptrace.h>
+
+#ifdef CONFIG_32BIT
+u64 perf_reg_abi(struct task_struct *tsk)
+{
+	return PERF_SAMPLE_REGS_ABI_32;
+}
+#else /* Must be CONFIG_64BIT */
+u64 perf_reg_abi(struct task_struct *tsk)
+{
+	if (test_tsk_thread_flag(tsk, TIF_32BIT_REGS))
+		return PERF_SAMPLE_REGS_ABI_32;
+	else
+		return PERF_SAMPLE_REGS_ABI_64;
+}
+#endif /* CONFIG_32BIT */
+
+int perf_reg_validate(u64 mask)
+{
+	if (!mask)
+		return -EINVAL;
+	if (mask & ~((1ull << PERF_REG_MIPS_MAX) - 1))
+		return -EINVAL;
+	return 0;
+}
+
+u64 perf_reg_value(struct pt_regs *regs, int idx)
+{
+	long v;
+
+	switch (idx) {
+	case PERF_REG_MIPS_PC:
+		v = regs->cp0_epc;
+		break;
+	case PERF_REG_MIPS_R1 ... PERF_REG_MIPS_R25:
+		v = regs->regs[idx - PERF_REG_MIPS_R1 + 1];
+		break;
+	case PERF_REG_MIPS_R28 ... PERF_REG_MIPS_R31:
+		v = regs->regs[idx - PERF_REG_MIPS_R28 + 28];
+		break;
+
+	default:
+		WARN_ON_ONCE(1);
+		return 0;
+	}
+
+	return (s64)v; /* Sign extend if 32-bit. */
+}
+
+void perf_get_regs_user(struct perf_regs *regs_user,
+			struct pt_regs *regs)
+{
+	regs_user->regs = task_pt_regs(current);
+	regs_user->abi = perf_reg_abi(current);
+}
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/3] perf tools: Support mips unwinding and dwarf-regs
  2021-02-04  3:35 [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
  2021-02-04  3:35 ` [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf Tiezhu Yang
@ 2021-02-04  3:35 ` Tiezhu Yang
  2021-02-04  3:35 ` [PATCH v2 3/3] perf tools: Generate mips syscalls_n64.c syscall table Tiezhu Yang
  2021-02-22  6:43 ` [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
  3 siblings, 0 replies; 13+ messages in thread
From: Tiezhu Yang @ 2021-02-04  3:35 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar,
	Arnaldo Carvalho de Melo, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim
  Cc: linux-mips, linux-kernel, Xuefeng Li, Juxin Gao, David Daney,
	Ralf Baechle, Archer Yan

Map perf APIs(perf_reg_name/get_arch_regstr/unwind__arch_reg_id)
with MIPS specific registers.

[ayan@wavecomp.com: repick this patch for unwinding userstack
backtrace by perf and libunwind on MIPS based CPU.]

[yangtiezhu@loongson.cn: Add sample_reg_masks[] to fix build
error, silence some checkpatch errors and warnings, and also
separate the original patches into two parts (MIPS kernel and
perf tools) to merge easily.]

The original patches:
https://lore.kernel.org/patchwork/patch/1126521/
https://lore.kernel.org/patchwork/patch/1126520/

Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Archer Yan <ayan@wavecomp.com>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---

v2: no changes

 tools/perf/Makefile.config                      |  6 ++
 tools/perf/arch/mips/Makefile                   |  4 ++
 tools/perf/arch/mips/include/dwarf-regs-table.h | 31 +++++++++
 tools/perf/arch/mips/include/perf_regs.h        | 84 +++++++++++++++++++++++++
 tools/perf/arch/mips/util/Build                 |  3 +
 tools/perf/arch/mips/util/dwarf-regs.c          | 38 +++++++++++
 tools/perf/arch/mips/util/perf_regs.c           |  6 ++
 tools/perf/arch/mips/util/unwind-libunwind.c    | 22 +++++++
 tools/perf/util/dwarf-regs.c                    |  3 +
 9 files changed, 197 insertions(+)
 create mode 100644 tools/perf/arch/mips/Makefile
 create mode 100644 tools/perf/arch/mips/include/dwarf-regs-table.h
 create mode 100644 tools/perf/arch/mips/include/perf_regs.h
 create mode 100644 tools/perf/arch/mips/util/Build
 create mode 100644 tools/perf/arch/mips/util/dwarf-regs.c
 create mode 100644 tools/perf/arch/mips/util/perf_regs.c
 create mode 100644 tools/perf/arch/mips/util/unwind-libunwind.c

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index ce8516e..e378add 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -87,6 +87,12 @@ ifeq ($(ARCH),s390)
   CFLAGS += -fPIC -I$(OUTPUT)arch/s390/include/generated
 endif
 
+ifeq ($(ARCH),mips)
+  NO_PERF_REGS := 0
+  CFLAGS += -I../../arch/mips/include/uapi -I../../arch/mips/include/generated/uapi
+  LIBUNWIND_LIBS = -lunwind -lunwind-mips
+endif
+
 ifeq ($(NO_PERF_REGS),0)
   $(call detected,CONFIG_PERF_REGS)
 endif
diff --git a/tools/perf/arch/mips/Makefile b/tools/perf/arch/mips/Makefile
new file mode 100644
index 0000000..6e1106f
--- /dev/null
+++ b/tools/perf/arch/mips/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
+ifndef NO_DWARF
+PERF_HAVE_DWARF_REGS := 1
+endif
diff --git a/tools/perf/arch/mips/include/dwarf-regs-table.h b/tools/perf/arch/mips/include/dwarf-regs-table.h
new file mode 100644
index 0000000..5badbcd
--- /dev/null
+++ b/tools/perf/arch/mips/include/dwarf-regs-table.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * dwarf-regs-table.h : Mapping of DWARF debug register numbers into
+ * register names.
+ *
+ * Copyright (C) 2013 Cavium, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifdef DEFINE_DWARF_REGSTR_TABLE
+#undef REG_DWARFNUM_NAME
+#define REG_DWARFNUM_NAME(reg, idx)	[idx] = "$" #reg
+static const char * const mips_regstr_tbl[] = {
+	"$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9",
+	"$10", "$11", "$12", "$13", "$14", "$15", "$16", "$17", "$18", "$19",
+	"$20", "$21", "$22", "$23", "$24", "$25", "$26", "$27", "$28", "%29",
+	"$30", "$31",
+	REG_DWARFNUM_NAME(hi, 64),
+	REG_DWARFNUM_NAME(lo, 65),
+};
+#endif
diff --git a/tools/perf/arch/mips/include/perf_regs.h b/tools/perf/arch/mips/include/perf_regs.h
new file mode 100644
index 0000000..7a7908b
--- /dev/null
+++ b/tools/perf/arch/mips/include/perf_regs.h
@@ -0,0 +1,84 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#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_MAX PERF_REG_MIPS_MAX
+#define PERF_REG_IP PERF_REG_MIPS_PC
+#define PERF_REG_SP PERF_REG_MIPS_R29
+
+#define PERF_REGS_MASK ((1ULL << PERF_REG_MIPS_MAX) - 1)
+
+static inline const char *perf_reg_name(int id)
+{
+	switch (id) {
+	case PERF_REG_MIPS_PC:
+		return "PC";
+	case PERF_REG_MIPS_R1:
+		return "$1";
+	case PERF_REG_MIPS_R2:
+		return "$2";
+	case PERF_REG_MIPS_R3:
+		return "$3";
+	case PERF_REG_MIPS_R4:
+		return "$4";
+	case PERF_REG_MIPS_R5:
+		return "$5";
+	case PERF_REG_MIPS_R6:
+		return "$6";
+	case PERF_REG_MIPS_R7:
+		return "$7";
+	case PERF_REG_MIPS_R8:
+		return "$8";
+	case PERF_REG_MIPS_R9:
+		return "$9";
+	case PERF_REG_MIPS_R10:
+		return "$10";
+	case PERF_REG_MIPS_R11:
+		return "$11";
+	case PERF_REG_MIPS_R12:
+		return "$12";
+	case PERF_REG_MIPS_R13:
+		return "$13";
+	case PERF_REG_MIPS_R14:
+		return "$14";
+	case PERF_REG_MIPS_R15:
+		return "$15";
+	case PERF_REG_MIPS_R16:
+		return "$16";
+	case PERF_REG_MIPS_R17:
+		return "$17";
+	case PERF_REG_MIPS_R18:
+		return "$18";
+	case PERF_REG_MIPS_R19:
+		return "$19";
+	case PERF_REG_MIPS_R20:
+		return "$20";
+	case PERF_REG_MIPS_R21:
+		return "$21";
+	case PERF_REG_MIPS_R22:
+		return "$22";
+	case PERF_REG_MIPS_R23:
+		return "$23";
+	case PERF_REG_MIPS_R24:
+		return "$24";
+	case PERF_REG_MIPS_R25:
+		return "$25";
+	case PERF_REG_MIPS_R28:
+		return "$28";
+	case PERF_REG_MIPS_R29:
+		return "$29";
+	case PERF_REG_MIPS_R30:
+		return "$30";
+	case PERF_REG_MIPS_R31:
+		return "$31";
+	default:
+		break;
+	}
+	return NULL;
+}
+
+#endif /* ARCH_PERF_REGS_H */
diff --git a/tools/perf/arch/mips/util/Build b/tools/perf/arch/mips/util/Build
new file mode 100644
index 0000000..51c8900
--- /dev/null
+++ b/tools/perf/arch/mips/util/Build
@@ -0,0 +1,3 @@
+perf-y += perf_regs.o
+perf-$(CONFIG_DWARF) += dwarf-regs.o
+perf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o
diff --git a/tools/perf/arch/mips/util/dwarf-regs.c b/tools/perf/arch/mips/util/dwarf-regs.c
new file mode 100644
index 0000000..25c13a9
--- /dev/null
+++ b/tools/perf/arch/mips/util/dwarf-regs.c
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dwarf-regs.c : Mapping of DWARF debug register numbers into register names.
+ *
+ * Copyright (C) 2013 Cavium, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <stdio.h>
+#include <dwarf-regs.h>
+
+static const char *mips_gpr_names[32] = {
+	"$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9",
+	"$10", "$11", "$12", "$13", "$14", "$15", "$16", "$17", "$18", "$19",
+	"$20", "$21", "$22", "$23", "$24", "$25", "$26", "$27", "$28", "$29",
+	"$30", "$31"
+};
+
+const char *get_arch_regstr(unsigned int n)
+{
+	if (n < 32)
+		return mips_gpr_names[n];
+	if (n == 64)
+		return "hi";
+	if (n == 65)
+		return "lo";
+	return NULL;
+}
diff --git a/tools/perf/arch/mips/util/perf_regs.c b/tools/perf/arch/mips/util/perf_regs.c
new file mode 100644
index 0000000..2864e2e
--- /dev/null
+++ b/tools/perf/arch/mips/util/perf_regs.c
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "../../util/perf_regs.h"
+
+const struct sample_reg sample_reg_masks[] = {
+	SMPL_REG_END
+};
diff --git a/tools/perf/arch/mips/util/unwind-libunwind.c b/tools/perf/arch/mips/util/unwind-libunwind.c
new file mode 100644
index 0000000..0d8c99c
--- /dev/null
+++ b/tools/perf/arch/mips/util/unwind-libunwind.c
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <errno.h>
+#include <libunwind.h>
+#include "perf_regs.h"
+#include "../../util/unwind.h"
+#include "util/debug.h"
+
+int libunwind__arch_reg_id(int regnum)
+{
+	switch (regnum) {
+	case UNW_MIPS_R1 ... UNW_MIPS_R25:
+		return regnum - UNW_MIPS_R1 + PERF_REG_MIPS_R1;
+	case UNW_MIPS_R28 ... UNW_MIPS_R31:
+		return regnum - UNW_MIPS_R28 + PERF_REG_MIPS_R28;
+	case UNW_MIPS_PC:
+		return PERF_REG_MIPS_PC;
+	default:
+		pr_err("unwind: invalid reg id %d\n", regnum);
+		return -EINVAL;
+	}
+}
diff --git a/tools/perf/util/dwarf-regs.c b/tools/perf/util/dwarf-regs.c
index 1b49ece..3fa4486 100644
--- a/tools/perf/util/dwarf-regs.c
+++ b/tools/perf/util/dwarf-regs.c
@@ -24,6 +24,7 @@
 #include "../arch/s390/include/dwarf-regs-table.h"
 #include "../arch/sparc/include/dwarf-regs-table.h"
 #include "../arch/xtensa/include/dwarf-regs-table.h"
+#include "../arch/mips/include/dwarf-regs-table.h"
 
 #define __get_dwarf_regstr(tbl, n) (((n) < ARRAY_SIZE(tbl)) ? (tbl)[(n)] : NULL)
 
@@ -53,6 +54,8 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine)
 		return __get_dwarf_regstr(sparc_regstr_tbl, n);
 	case EM_XTENSA:
 		return __get_dwarf_regstr(xtensa_regstr_tbl, n);
+	case EM_MIPS:
+		return __get_dwarf_regstr(mips_regstr_tbl, n);
 	default:
 		pr_err("ELF MACHINE %x is not supported.\n", machine);
 	}
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/3] perf tools: Generate mips syscalls_n64.c syscall table
  2021-02-04  3:35 [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
  2021-02-04  3:35 ` [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf Tiezhu Yang
  2021-02-04  3:35 ` [PATCH v2 2/3] perf tools: Support mips unwinding and dwarf-regs Tiezhu Yang
@ 2021-02-04  3:35 ` Tiezhu Yang
  2021-02-22  6:43 ` [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
  3 siblings, 0 replies; 13+ messages in thread
From: Tiezhu Yang @ 2021-02-04  3:35 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar,
	Arnaldo Carvalho de Melo, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim
  Cc: linux-mips, linux-kernel, Xuefeng Li, Juxin Gao

Grab a copy of arch/mips/kernel/syscalls/syscall_n64.tbl and use it to
generate tools/perf/arch/mips/include/generated/asm/syscalls_n64.c file,
this is similar with commit 1b700c997500 ("perf tools: Build syscall table
.c header from kernel's syscall_64.tbl")

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---

v2: no changes

 tools/perf/Makefile.config                         |   3 +-
 tools/perf/arch/mips/Makefile                      |  18 ++
 tools/perf/arch/mips/entry/syscalls/mksyscalltbl   |  32 ++
 .../perf/arch/mips/entry/syscalls/syscall_n64.tbl  | 358 +++++++++++++++++++++
 tools/perf/check-headers.sh                        |   1 +
 tools/perf/util/syscalltbl.c                       |   4 +
 6 files changed, 415 insertions(+), 1 deletion(-)
 create mode 100644 tools/perf/arch/mips/entry/syscalls/mksyscalltbl
 create mode 100644 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index e378add..3280366 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -32,7 +32,7 @@ ifneq ($(NO_SYSCALL_TABLE),1)
       NO_SYSCALL_TABLE := 0
     endif
   else
-    ifeq ($(SRCARCH),$(filter $(SRCARCH),powerpc arm64 s390))
+    ifeq ($(SRCARCH),$(filter $(SRCARCH),powerpc arm64 s390 mips))
       NO_SYSCALL_TABLE := 0
     endif
   endif
@@ -89,6 +89,7 @@ endif
 
 ifeq ($(ARCH),mips)
   NO_PERF_REGS := 0
+  CFLAGS += -I$(OUTPUT)arch/mips/include/generated
   CFLAGS += -I../../arch/mips/include/uapi -I../../arch/mips/include/generated/uapi
   LIBUNWIND_LIBS = -lunwind -lunwind-mips
 endif
diff --git a/tools/perf/arch/mips/Makefile b/tools/perf/arch/mips/Makefile
index 6e1106f..8bc0907 100644
--- a/tools/perf/arch/mips/Makefile
+++ b/tools/perf/arch/mips/Makefile
@@ -2,3 +2,21 @@
 ifndef NO_DWARF
 PERF_HAVE_DWARF_REGS := 1
 endif
+
+# Syscall table generation for perf
+out    := $(OUTPUT)arch/mips/include/generated/asm
+header := $(out)/syscalls_n64.c
+sysprf := $(srctree)/tools/perf/arch/mips/entry/syscalls
+sysdef := $(sysprf)/syscall_n64.tbl
+systbl := $(sysprf)/mksyscalltbl
+
+# Create output directory if not already present
+_dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)')
+
+$(header): $(sysdef) $(systbl)
+	$(Q)$(SHELL) '$(systbl)' $(sysdef) > $@
+
+clean::
+	$(call QUIET_CLEAN, mips) $(RM) $(header)
+
+archheaders: $(header)
diff --git a/tools/perf/arch/mips/entry/syscalls/mksyscalltbl b/tools/perf/arch/mips/entry/syscalls/mksyscalltbl
new file mode 100644
index 0000000..fb1f494
--- /dev/null
+++ b/tools/perf/arch/mips/entry/syscalls/mksyscalltbl
@@ -0,0 +1,32 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+#
+# Generate system call table for perf. Derived from
+# s390 script.
+#
+# Author(s):  Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
+# Changed by: Tiezhu Yang <yangtiezhu@loongson.cn>
+
+SYSCALL_TBL=$1
+
+if ! test -r $SYSCALL_TBL; then
+	echo "Could not read input file" >&2
+	exit 1
+fi
+
+create_table()
+{
+	local max_nr nr abi sc discard
+
+	echo 'static const char *syscalltbl_mips_n64[] = {'
+	while read nr abi sc discard; do
+		printf '\t[%d] = "%s",\n' $nr $sc
+		max_nr=$nr
+	done
+	echo '};'
+	echo "#define SYSCALLTBL_MIPS_N64_MAX_ID $max_nr"
+}
+
+grep -E "^[[:digit:]]+[[:space:]]+(n64)" $SYSCALL_TBL	\
+	|sort -k1 -n					\
+	|create_table
diff --git a/tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl b/tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl
new file mode 100644
index 0000000..9164969
--- /dev/null
+++ b/tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl
@@ -0,0 +1,358 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for mips
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "n64" for this file.
+#
+0	n64	read				sys_read
+1	n64	write				sys_write
+2	n64	open				sys_open
+3	n64	close				sys_close
+4	n64	stat				sys_newstat
+5	n64	fstat				sys_newfstat
+6	n64	lstat				sys_newlstat
+7	n64	poll				sys_poll
+8	n64	lseek				sys_lseek
+9	n64	mmap				sys_mips_mmap
+10	n64	mprotect			sys_mprotect
+11	n64	munmap				sys_munmap
+12	n64	brk				sys_brk
+13	n64	rt_sigaction			sys_rt_sigaction
+14	n64	rt_sigprocmask			sys_rt_sigprocmask
+15	n64	ioctl				sys_ioctl
+16	n64	pread64				sys_pread64
+17	n64	pwrite64			sys_pwrite64
+18	n64	readv				sys_readv
+19	n64	writev				sys_writev
+20	n64	access				sys_access
+21	n64	pipe				sysm_pipe
+22	n64	_newselect			sys_select
+23	n64	sched_yield			sys_sched_yield
+24	n64	mremap				sys_mremap
+25	n64	msync				sys_msync
+26	n64	mincore				sys_mincore
+27	n64	madvise				sys_madvise
+28	n64	shmget				sys_shmget
+29	n64	shmat				sys_shmat
+30	n64	shmctl				sys_old_shmctl
+31	n64	dup				sys_dup
+32	n64	dup2				sys_dup2
+33	n64	pause				sys_pause
+34	n64	nanosleep			sys_nanosleep
+35	n64	getitimer			sys_getitimer
+36	n64	setitimer			sys_setitimer
+37	n64	alarm				sys_alarm
+38	n64	getpid				sys_getpid
+39	n64	sendfile			sys_sendfile64
+40	n64	socket				sys_socket
+41	n64	connect				sys_connect
+42	n64	accept				sys_accept
+43	n64	sendto				sys_sendto
+44	n64	recvfrom			sys_recvfrom
+45	n64	sendmsg				sys_sendmsg
+46	n64	recvmsg				sys_recvmsg
+47	n64	shutdown			sys_shutdown
+48	n64	bind				sys_bind
+49	n64	listen				sys_listen
+50	n64	getsockname			sys_getsockname
+51	n64	getpeername			sys_getpeername
+52	n64	socketpair			sys_socketpair
+53	n64	setsockopt			sys_setsockopt
+54	n64	getsockopt			sys_getsockopt
+55	n64	clone				__sys_clone
+56	n64	fork				__sys_fork
+57	n64	execve				sys_execve
+58	n64	exit				sys_exit
+59	n64	wait4				sys_wait4
+60	n64	kill				sys_kill
+61	n64	uname				sys_newuname
+62	n64	semget				sys_semget
+63	n64	semop				sys_semop
+64	n64	semctl				sys_old_semctl
+65	n64	shmdt				sys_shmdt
+66	n64	msgget				sys_msgget
+67	n64	msgsnd				sys_msgsnd
+68	n64	msgrcv				sys_msgrcv
+69	n64	msgctl				sys_old_msgctl
+70	n64	fcntl				sys_fcntl
+71	n64	flock				sys_flock
+72	n64	fsync				sys_fsync
+73	n64	fdatasync			sys_fdatasync
+74	n64	truncate			sys_truncate
+75	n64	ftruncate			sys_ftruncate
+76	n64	getdents			sys_getdents
+77	n64	getcwd				sys_getcwd
+78	n64	chdir				sys_chdir
+79	n64	fchdir				sys_fchdir
+80	n64	rename				sys_rename
+81	n64	mkdir				sys_mkdir
+82	n64	rmdir				sys_rmdir
+83	n64	creat				sys_creat
+84	n64	link				sys_link
+85	n64	unlink				sys_unlink
+86	n64	symlink				sys_symlink
+87	n64	readlink			sys_readlink
+88	n64	chmod				sys_chmod
+89	n64	fchmod				sys_fchmod
+90	n64	chown				sys_chown
+91	n64	fchown				sys_fchown
+92	n64	lchown				sys_lchown
+93	n64	umask				sys_umask
+94	n64	gettimeofday			sys_gettimeofday
+95	n64	getrlimit			sys_getrlimit
+96	n64	getrusage			sys_getrusage
+97	n64	sysinfo				sys_sysinfo
+98	n64	times				sys_times
+99	n64	ptrace				sys_ptrace
+100	n64	getuid				sys_getuid
+101	n64	syslog				sys_syslog
+102	n64	getgid				sys_getgid
+103	n64	setuid				sys_setuid
+104	n64	setgid				sys_setgid
+105	n64	geteuid				sys_geteuid
+106	n64	getegid				sys_getegid
+107	n64	setpgid				sys_setpgid
+108	n64	getppid				sys_getppid
+109	n64	getpgrp				sys_getpgrp
+110	n64	setsid				sys_setsid
+111	n64	setreuid			sys_setreuid
+112	n64	setregid			sys_setregid
+113	n64	getgroups			sys_getgroups
+114	n64	setgroups			sys_setgroups
+115	n64	setresuid			sys_setresuid
+116	n64	getresuid			sys_getresuid
+117	n64	setresgid			sys_setresgid
+118	n64	getresgid			sys_getresgid
+119	n64	getpgid				sys_getpgid
+120	n64	setfsuid			sys_setfsuid
+121	n64	setfsgid			sys_setfsgid
+122	n64	getsid				sys_getsid
+123	n64	capget				sys_capget
+124	n64	capset				sys_capset
+125	n64	rt_sigpending			sys_rt_sigpending
+126	n64	rt_sigtimedwait			sys_rt_sigtimedwait
+127	n64	rt_sigqueueinfo			sys_rt_sigqueueinfo
+128	n64	rt_sigsuspend			sys_rt_sigsuspend
+129	n64	sigaltstack			sys_sigaltstack
+130	n64	utime				sys_utime
+131	n64	mknod				sys_mknod
+132	n64	personality			sys_personality
+133	n64	ustat				sys_ustat
+134	n64	statfs				sys_statfs
+135	n64	fstatfs				sys_fstatfs
+136	n64	sysfs				sys_sysfs
+137	n64	getpriority			sys_getpriority
+138	n64	setpriority			sys_setpriority
+139	n64	sched_setparam			sys_sched_setparam
+140	n64	sched_getparam			sys_sched_getparam
+141	n64	sched_setscheduler		sys_sched_setscheduler
+142	n64	sched_getscheduler		sys_sched_getscheduler
+143	n64	sched_get_priority_max		sys_sched_get_priority_max
+144	n64	sched_get_priority_min		sys_sched_get_priority_min
+145	n64	sched_rr_get_interval		sys_sched_rr_get_interval
+146	n64	mlock				sys_mlock
+147	n64	munlock				sys_munlock
+148	n64	mlockall			sys_mlockall
+149	n64	munlockall			sys_munlockall
+150	n64	vhangup				sys_vhangup
+151	n64	pivot_root			sys_pivot_root
+152	n64	_sysctl				sys_ni_syscall
+153	n64	prctl				sys_prctl
+154	n64	adjtimex			sys_adjtimex
+155	n64	setrlimit			sys_setrlimit
+156	n64	chroot				sys_chroot
+157	n64	sync				sys_sync
+158	n64	acct				sys_acct
+159	n64	settimeofday			sys_settimeofday
+160	n64	mount				sys_mount
+161	n64	umount2				sys_umount
+162	n64	swapon				sys_swapon
+163	n64	swapoff				sys_swapoff
+164	n64	reboot				sys_reboot
+165	n64	sethostname			sys_sethostname
+166	n64	setdomainname			sys_setdomainname
+167	n64	create_module			sys_ni_syscall
+168	n64	init_module			sys_init_module
+169	n64	delete_module			sys_delete_module
+170	n64	get_kernel_syms			sys_ni_syscall
+171	n64	query_module			sys_ni_syscall
+172	n64	quotactl			sys_quotactl
+173	n64	nfsservctl			sys_ni_syscall
+174	n64	getpmsg				sys_ni_syscall
+175	n64	putpmsg				sys_ni_syscall
+176	n64	afs_syscall			sys_ni_syscall
+# 177 reserved for security
+177	n64	reserved177			sys_ni_syscall
+178	n64	gettid				sys_gettid
+179	n64	readahead			sys_readahead
+180	n64	setxattr			sys_setxattr
+181	n64	lsetxattr			sys_lsetxattr
+182	n64	fsetxattr			sys_fsetxattr
+183	n64	getxattr			sys_getxattr
+184	n64	lgetxattr			sys_lgetxattr
+185	n64	fgetxattr			sys_fgetxattr
+186	n64	listxattr			sys_listxattr
+187	n64	llistxattr			sys_llistxattr
+188	n64	flistxattr			sys_flistxattr
+189	n64	removexattr			sys_removexattr
+190	n64	lremovexattr			sys_lremovexattr
+191	n64	fremovexattr			sys_fremovexattr
+192	n64	tkill				sys_tkill
+193	n64	reserved193			sys_ni_syscall
+194	n64	futex				sys_futex
+195	n64	sched_setaffinity		sys_sched_setaffinity
+196	n64	sched_getaffinity		sys_sched_getaffinity
+197	n64	cacheflush			sys_cacheflush
+198	n64	cachectl			sys_cachectl
+199	n64	sysmips				__sys_sysmips
+200	n64	io_setup			sys_io_setup
+201	n64	io_destroy			sys_io_destroy
+202	n64	io_getevents			sys_io_getevents
+203	n64	io_submit			sys_io_submit
+204	n64	io_cancel			sys_io_cancel
+205	n64	exit_group			sys_exit_group
+206	n64	lookup_dcookie			sys_lookup_dcookie
+207	n64	epoll_create			sys_epoll_create
+208	n64	epoll_ctl			sys_epoll_ctl
+209	n64	epoll_wait			sys_epoll_wait
+210	n64	remap_file_pages		sys_remap_file_pages
+211	n64	rt_sigreturn			sys_rt_sigreturn
+212	n64	set_tid_address			sys_set_tid_address
+213	n64	restart_syscall			sys_restart_syscall
+214	n64	semtimedop			sys_semtimedop
+215	n64	fadvise64			sys_fadvise64_64
+216	n64	timer_create			sys_timer_create
+217	n64	timer_settime			sys_timer_settime
+218	n64	timer_gettime			sys_timer_gettime
+219	n64	timer_getoverrun		sys_timer_getoverrun
+220	n64	timer_delete			sys_timer_delete
+221	n64	clock_settime			sys_clock_settime
+222	n64	clock_gettime			sys_clock_gettime
+223	n64	clock_getres			sys_clock_getres
+224	n64	clock_nanosleep			sys_clock_nanosleep
+225	n64	tgkill				sys_tgkill
+226	n64	utimes				sys_utimes
+227	n64	mbind				sys_mbind
+228	n64	get_mempolicy			sys_get_mempolicy
+229	n64	set_mempolicy			sys_set_mempolicy
+230	n64	mq_open				sys_mq_open
+231	n64	mq_unlink			sys_mq_unlink
+232	n64	mq_timedsend			sys_mq_timedsend
+233	n64	mq_timedreceive			sys_mq_timedreceive
+234	n64	mq_notify			sys_mq_notify
+235	n64	mq_getsetattr			sys_mq_getsetattr
+236	n64	vserver				sys_ni_syscall
+237	n64	waitid				sys_waitid
+# 238 was sys_setaltroot
+239	n64	add_key				sys_add_key
+240	n64	request_key			sys_request_key
+241	n64	keyctl				sys_keyctl
+242	n64	set_thread_area			sys_set_thread_area
+243	n64	inotify_init			sys_inotify_init
+244	n64	inotify_add_watch		sys_inotify_add_watch
+245	n64	inotify_rm_watch		sys_inotify_rm_watch
+246	n64	migrate_pages			sys_migrate_pages
+247	n64	openat				sys_openat
+248	n64	mkdirat				sys_mkdirat
+249	n64	mknodat				sys_mknodat
+250	n64	fchownat			sys_fchownat
+251	n64	futimesat			sys_futimesat
+252	n64	newfstatat			sys_newfstatat
+253	n64	unlinkat			sys_unlinkat
+254	n64	renameat			sys_renameat
+255	n64	linkat				sys_linkat
+256	n64	symlinkat			sys_symlinkat
+257	n64	readlinkat			sys_readlinkat
+258	n64	fchmodat			sys_fchmodat
+259	n64	faccessat			sys_faccessat
+260	n64	pselect6			sys_pselect6
+261	n64	ppoll				sys_ppoll
+262	n64	unshare				sys_unshare
+263	n64	splice				sys_splice
+264	n64	sync_file_range			sys_sync_file_range
+265	n64	tee				sys_tee
+266	n64	vmsplice			sys_vmsplice
+267	n64	move_pages			sys_move_pages
+268	n64	set_robust_list			sys_set_robust_list
+269	n64	get_robust_list			sys_get_robust_list
+270	n64	kexec_load			sys_kexec_load
+271	n64	getcpu				sys_getcpu
+272	n64	epoll_pwait			sys_epoll_pwait
+273	n64	ioprio_set			sys_ioprio_set
+274	n64	ioprio_get			sys_ioprio_get
+275	n64	utimensat			sys_utimensat
+276	n64	signalfd			sys_signalfd
+277	n64	timerfd				sys_ni_syscall
+278	n64	eventfd				sys_eventfd
+279	n64	fallocate			sys_fallocate
+280	n64	timerfd_create			sys_timerfd_create
+281	n64	timerfd_gettime			sys_timerfd_gettime
+282	n64	timerfd_settime			sys_timerfd_settime
+283	n64	signalfd4			sys_signalfd4
+284	n64	eventfd2			sys_eventfd2
+285	n64	epoll_create1			sys_epoll_create1
+286	n64	dup3				sys_dup3
+287	n64	pipe2				sys_pipe2
+288	n64	inotify_init1			sys_inotify_init1
+289	n64	preadv				sys_preadv
+290	n64	pwritev				sys_pwritev
+291	n64	rt_tgsigqueueinfo		sys_rt_tgsigqueueinfo
+292	n64	perf_event_open			sys_perf_event_open
+293	n64	accept4				sys_accept4
+294	n64	recvmmsg			sys_recvmmsg
+295	n64	fanotify_init			sys_fanotify_init
+296	n64	fanotify_mark			sys_fanotify_mark
+297	n64	prlimit64			sys_prlimit64
+298	n64	name_to_handle_at		sys_name_to_handle_at
+299	n64	open_by_handle_at		sys_open_by_handle_at
+300	n64	clock_adjtime			sys_clock_adjtime
+301	n64	syncfs				sys_syncfs
+302	n64	sendmmsg			sys_sendmmsg
+303	n64	setns				sys_setns
+304	n64	process_vm_readv		sys_process_vm_readv
+305	n64	process_vm_writev		sys_process_vm_writev
+306	n64	kcmp				sys_kcmp
+307	n64	finit_module			sys_finit_module
+308	n64	getdents64			sys_getdents64
+309	n64	sched_setattr			sys_sched_setattr
+310	n64	sched_getattr			sys_sched_getattr
+311	n64	renameat2			sys_renameat2
+312	n64	seccomp				sys_seccomp
+313	n64	getrandom			sys_getrandom
+314	n64	memfd_create			sys_memfd_create
+315	n64	bpf				sys_bpf
+316	n64	execveat			sys_execveat
+317	n64	userfaultfd			sys_userfaultfd
+318	n64	membarrier			sys_membarrier
+319	n64	mlock2				sys_mlock2
+320	n64	copy_file_range			sys_copy_file_range
+321	n64	preadv2				sys_preadv2
+322	n64	pwritev2			sys_pwritev2
+323	n64	pkey_mprotect			sys_pkey_mprotect
+324	n64	pkey_alloc			sys_pkey_alloc
+325	n64	pkey_free			sys_pkey_free
+326	n64	statx				sys_statx
+327	n64	rseq				sys_rseq
+328	n64	io_pgetevents			sys_io_pgetevents
+# 329 through 423 are reserved to sync up with other architectures
+424	n64	pidfd_send_signal		sys_pidfd_send_signal
+425	n64	io_uring_setup			sys_io_uring_setup
+426	n64	io_uring_enter			sys_io_uring_enter
+427	n64	io_uring_register		sys_io_uring_register
+428	n64	open_tree			sys_open_tree
+429	n64	move_mount			sys_move_mount
+430	n64	fsopen				sys_fsopen
+431	n64	fsconfig			sys_fsconfig
+432	n64	fsmount				sys_fsmount
+433	n64	fspick				sys_fspick
+434	n64	pidfd_open			sys_pidfd_open
+435	n64	clone3				__sys_clone3
+436	n64	close_range			sys_close_range
+437	n64	openat2				sys_openat2
+438	n64	pidfd_getfd			sys_pidfd_getfd
+439	n64	faccessat2			sys_faccessat2
+440	n64	process_madvise			sys_process_madvise
+441	n64	epoll_pwait2			sys_epoll_pwait2
diff --git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh
index dded93a..39eada9 100755
--- a/tools/perf/check-headers.sh
+++ b/tools/perf/check-headers.sh
@@ -146,6 +146,7 @@ check arch/x86/lib/insn.c             '-I "^#include [\"<]\(../include/\)*asm/in
 check_2 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
 check_2 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
 check_2 tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl
+check_2 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl arch/mips/kernel/syscalls/syscall_n64.tbl
 
 for i in $BEAUTY_FILES; do
   beauty_check $i -B
diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c
index 03bd99d..a2e9068 100644
--- a/tools/perf/util/syscalltbl.c
+++ b/tools/perf/util/syscalltbl.c
@@ -34,6 +34,10 @@ static const char **syscalltbl_native = syscalltbl_powerpc_32;
 #include <asm/syscalls.c>
 const int syscalltbl_native_max_id = SYSCALLTBL_ARM64_MAX_ID;
 static const char **syscalltbl_native = syscalltbl_arm64;
+#elif defined(__mips__)
+#include <asm/syscalls_n64.c>
+const int syscalltbl_native_max_id = SYSCALLTBL_MIPS_N64_MAX_ID;
+static const char **syscalltbl_native = syscalltbl_mips_n64;
 #endif
 
 struct syscall {
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf
  2021-02-04  3:35 ` [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf Tiezhu Yang
@ 2021-02-04 20:59   ` Thomas Bogendoerfer
  0 siblings, 0 replies; 13+ messages in thread
From: Thomas Bogendoerfer @ 2021-02-04 20:59 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-mips, linux-kernel, Xuefeng Li, Juxin Gao, David Daney,
	Ralf Baechle, Archer Yan

On Thu, Feb 04, 2021 at 11:35:22AM +0800, Tiezhu Yang wrote:
> Add perf_event_mips_regs/perf_reg_value/perf_reg_validate to support
> features HAVE_PERF_REGS/HAVE_PERF_USER_STACK_DUMP in kernel.
> 
> [ayan@wavecomp.com: Repick this patch for unwinding userstack backtrace
>  by perf and libunwind on MIPS based CPU.]
> 
> [ralf@linux-mips.org: Add perf_get_regs_user() which is required after
> 'commit 88a7c26af8da ("perf: Move task_pt_regs sampling into arch code")'.]
> 
> [yangtiezhu@loongson.cn: Fix build error about perf_get_regs_user() after
> commit 76a4efa80900 ("perf/arch: Remove perf_sample_data::regs_user_copy"),
> and also separate the original patches into two parts (MIPS kernel and perf
> tools) to merge easily.]
> 
> The original patches:
> https://lore.kernel.org/patchwork/patch/1126521/
> https://lore.kernel.org/patchwork/patch/1126520/
> 
> Signed-off-by: David Daney <david.daney@cavium.com>
> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
> Signed-off-by: Archer Yan <ayan@wavecomp.com>
> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
> 
> v2: add R26 and R27 to the enum perf_event_mips_regs
> 
>  arch/mips/Kconfig                      |  2 +
>  arch/mips/include/uapi/asm/perf_regs.h | 40 ++++++++++++++++++++
>  arch/mips/kernel/Makefile              |  2 +-
>  arch/mips/kernel/perf_regs.c           | 68 ++++++++++++++++++++++++++++++++++
>  4 files changed, 111 insertions(+), 1 deletion(-)
>  create mode 100644 arch/mips/include/uapi/asm/perf_regs.h
>  create mode 100644 arch/mips/kernel/perf_regs.c

applied to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-04  3:35 [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
                   ` (2 preceding siblings ...)
  2021-02-04  3:35 ` [PATCH v2 3/3] perf tools: Generate mips syscalls_n64.c syscall table Tiezhu Yang
@ 2021-02-22  6:43 ` Tiezhu Yang
  2021-02-24 13:16   ` Arnaldo Carvalho de Melo
  3 siblings, 1 reply; 13+ messages in thread
From: Tiezhu Yang @ 2021-02-22  6:43 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar,
	Arnaldo Carvalho de Melo, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim
  Cc: linux-mips, linux-kernel, Xuefeng Li, Juxin Gao

On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
> v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
>
> Tiezhu Yang (3):
>    MIPS: kernel: Support extracting off-line stack traces from user-space
>      with perf
>    perf tools: Support mips unwinding and dwarf-regs
>    perf tools: Generate mips syscalls_n64.c syscall table

Hi Arnaldo,

The kernel part patch #1 has been merged.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da

Could the perf tool patches #2 and #3 have a chance to be merged before 
5.12-rc1?
If yes, we can use this feature in 5.12-rc1.

https://lore.kernel.org/patchwork/patch/1375476/
https://lore.kernel.org/patchwork/patch/1375475/


Thanks,
Tiezhu

>
>   arch/mips/Kconfig                                  |   2 +
>   arch/mips/include/uapi/asm/perf_regs.h             |  40 +++
>   arch/mips/kernel/Makefile                          |   2 +-
>   arch/mips/kernel/perf_regs.c                       |  68 ++++
>   tools/perf/Makefile.config                         |   9 +-
>   tools/perf/arch/mips/Makefile                      |  22 ++
>   tools/perf/arch/mips/entry/syscalls/mksyscalltbl   |  32 ++
>   .../perf/arch/mips/entry/syscalls/syscall_n64.tbl  | 358 +++++++++++++++++++++
>   tools/perf/arch/mips/include/dwarf-regs-table.h    |  31 ++
>   tools/perf/arch/mips/include/perf_regs.h           |  84 +++++
>   tools/perf/arch/mips/util/Build                    |   3 +
>   tools/perf/arch/mips/util/dwarf-regs.c             |  38 +++
>   tools/perf/arch/mips/util/perf_regs.c              |   6 +
>   tools/perf/arch/mips/util/unwind-libunwind.c       |  22 ++
>   tools/perf/check-headers.sh                        |   1 +
>   tools/perf/util/dwarf-regs.c                       |   3 +
>   tools/perf/util/syscalltbl.c                       |   4 +
>   17 files changed, 723 insertions(+), 2 deletions(-)
>   create mode 100644 arch/mips/include/uapi/asm/perf_regs.h
>   create mode 100644 arch/mips/kernel/perf_regs.c
>   create mode 100644 tools/perf/arch/mips/Makefile
>   create mode 100644 tools/perf/arch/mips/entry/syscalls/mksyscalltbl
>   create mode 100644 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl
>   create mode 100644 tools/perf/arch/mips/include/dwarf-regs-table.h
>   create mode 100644 tools/perf/arch/mips/include/perf_regs.h
>   create mode 100644 tools/perf/arch/mips/util/Build
>   create mode 100644 tools/perf/arch/mips/util/dwarf-regs.c
>   create mode 100644 tools/perf/arch/mips/util/perf_regs.c
>   create mode 100644 tools/perf/arch/mips/util/unwind-libunwind.c
>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-22  6:43 ` [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
@ 2021-02-24 13:16   ` Arnaldo Carvalho de Melo
  2021-02-25 12:49     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-24 13:16 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-mips,
	linux-kernel, Xuefeng Li, Juxin Gao

Em Mon, Feb 22, 2021 at 02:43:39PM +0800, Tiezhu Yang escreveu:
> On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
> > v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
> > 
> > Tiezhu Yang (3):
> >    MIPS: kernel: Support extracting off-line stack traces from user-space
> >      with perf
> >    perf tools: Support mips unwinding and dwarf-regs
> >    perf tools: Generate mips syscalls_n64.c syscall table
> 
> Hi Arnaldo,
> 
> The kernel part patch #1 has been merged.
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da
> 
> Could the perf tool patches #2 and #3 have a chance to be merged before
> 5.12-rc1?
> If yes, we can use this feature in 5.12-rc1.

Thanks, applied, should make it into 5.12-rc1.

- Arnaldo
 
> https://lore.kernel.org/patchwork/patch/1375476/
> https://lore.kernel.org/patchwork/patch/1375475/
> 
> 
> Thanks,
> Tiezhu
> 
> > 
> >   arch/mips/Kconfig                                  |   2 +
> >   arch/mips/include/uapi/asm/perf_regs.h             |  40 +++
> >   arch/mips/kernel/Makefile                          |   2 +-
> >   arch/mips/kernel/perf_regs.c                       |  68 ++++
> >   tools/perf/Makefile.config                         |   9 +-
> >   tools/perf/arch/mips/Makefile                      |  22 ++
> >   tools/perf/arch/mips/entry/syscalls/mksyscalltbl   |  32 ++
> >   .../perf/arch/mips/entry/syscalls/syscall_n64.tbl  | 358 +++++++++++++++++++++
> >   tools/perf/arch/mips/include/dwarf-regs-table.h    |  31 ++
> >   tools/perf/arch/mips/include/perf_regs.h           |  84 +++++
> >   tools/perf/arch/mips/util/Build                    |   3 +
> >   tools/perf/arch/mips/util/dwarf-regs.c             |  38 +++
> >   tools/perf/arch/mips/util/perf_regs.c              |   6 +
> >   tools/perf/arch/mips/util/unwind-libunwind.c       |  22 ++
> >   tools/perf/check-headers.sh                        |   1 +
> >   tools/perf/util/dwarf-regs.c                       |   3 +
> >   tools/perf/util/syscalltbl.c                       |   4 +
> >   17 files changed, 723 insertions(+), 2 deletions(-)
> >   create mode 100644 arch/mips/include/uapi/asm/perf_regs.h
> >   create mode 100644 arch/mips/kernel/perf_regs.c
> >   create mode 100644 tools/perf/arch/mips/Makefile
> >   create mode 100644 tools/perf/arch/mips/entry/syscalls/mksyscalltbl
> >   create mode 100644 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl
> >   create mode 100644 tools/perf/arch/mips/include/dwarf-regs-table.h
> >   create mode 100644 tools/perf/arch/mips/include/perf_regs.h
> >   create mode 100644 tools/perf/arch/mips/util/Build
> >   create mode 100644 tools/perf/arch/mips/util/dwarf-regs.c
> >   create mode 100644 tools/perf/arch/mips/util/perf_regs.c
> >   create mode 100644 tools/perf/arch/mips/util/unwind-libunwind.c
> > 
> 

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-24 13:16   ` Arnaldo Carvalho de Melo
@ 2021-02-25 12:49     ` Arnaldo Carvalho de Melo
  2021-02-25 13:10       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-25 12:49 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-mips,
	linux-kernel, Xuefeng Li, Juxin Gao

Em Wed, Feb 24, 2021 at 10:16:55AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Mon, Feb 22, 2021 at 02:43:39PM +0800, Tiezhu Yang escreveu:
> > On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
> > > v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
> > > 
> > > Tiezhu Yang (3):
> > >    MIPS: kernel: Support extracting off-line stack traces from user-space
> > >      with perf
> > >    perf tools: Support mips unwinding and dwarf-regs
> > >    perf tools: Generate mips syscalls_n64.c syscall table
> > 
> > Hi Arnaldo,
> > 
> > The kernel part patch #1 has been merged.
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da
> > 
> > Could the perf tool patches #2 and #3 have a chance to be merged before
> > 5.12-rc1?
> > If yes, we can use this feature in 5.12-rc1.
> 
> Thanks, applied, should make it into 5.12-rc1.

First we'll have to fix this problem:

  28    12.45 debian:experimental-x-mips64  : FAIL gcc version 10.2.1 20201224 (Debian 10.2.1-3)
                     from builtin-diff.c:12:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/branch.h:15,
                     from util/callchain.h:8,
                     from builtin-record.c:16:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/session.h:6,
                     from builtin-buildid-list.c:17:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/session.h:6,
                     from builtin-evlist.c:16:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/session.h:6,
                     from builtin-buildid-cache.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from builtin-annotate.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/thread.h:16,
                     from builtin-sched.c:11:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/branch.h:15,
                     from builtin-report.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from builtin-stat.c:49:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/thread.h:16,
                     from builtin-timechart.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
  29    12.79 debian:experimental-x-mipsel  : FAIL gcc version 10.2.1 20201224 (Debian 10.2.1-3)
                     from builtin-diff.c:12:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/branch.h:15,
                     from util/callchain.h:8,
                     from builtin-record.c:16:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/session.h:6,
                     from builtin-buildid-list.c:17:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from builtin-stat.c:49:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from builtin-annotate.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/session.h:6,
                     from builtin-evlist.c:16:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/thread.h:16,
                     from builtin-sched.c:11:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/thread.h:16,
                     from builtin-timechart.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/branch.h:15,
                     from builtin-report.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from util/session.h:6,
                     from builtin-buildid-cache.c:24:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from util/perf_regs.h:30,
                     from util/event.h:15,
                     from builtin-top.c:31:
    /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
        7 | #include <asm/perf_regs.h>
          |          ^~~~~~~~~~~~~~~~~
    compilation terminated.




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-25 12:49     ` Arnaldo Carvalho de Melo
@ 2021-02-25 13:10       ` Arnaldo Carvalho de Melo
  2021-02-25 13:12         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-25 13:10 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-mips,
	linux-kernel, Xuefeng Li, Juxin Gao

Em Thu, Feb 25, 2021 at 09:49:56AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Feb 24, 2021 at 10:16:55AM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Mon, Feb 22, 2021 at 02:43:39PM +0800, Tiezhu Yang escreveu:
> > > On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
> > > > v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
> > > > 
> > > > Tiezhu Yang (3):
> > > >    MIPS: kernel: Support extracting off-line stack traces from user-space
> > > >      with perf
> > > >    perf tools: Support mips unwinding and dwarf-regs
> > > >    perf tools: Generate mips syscalls_n64.c syscall table
> > > 
> > > Hi Arnaldo,
> > > 
> > > The kernel part patch #1 has been merged.
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da
> > > 
> > > Could the perf tool patches #2 and #3 have a chance to be merged before
> > > 5.12-rc1?
> > > If yes, we can use this feature in 5.12-rc1.
> > 
> > Thanks, applied, should make it into 5.12-rc1.
> 
> First we'll have to fix this problem:
> 
>   28    12.45 debian:experimental-x-mips64  : FAIL gcc version 10.2.1 20201224 (Debian 10.2.1-3)
>                      from builtin-diff.c:12:
>     /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
>         7 | #include <asm/perf_regs.h>
>           |          ^~~~~~~~~~~~~~~~~
>     compilation terminated.
>     In file included from util/perf_regs.h:30,
>                      from util/event.h:15,
>                      from util/branch.h:15,
>                      from util/callchain.h:8,
>                      from builtin-record.c:16:
>     /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory

I'm not finding it in the debian cross build packages:

root@d77a78c0aa1c:/# apt-file find perf_regs.h | grep cross
linux-libc-dev-amd64-cross: /usr/x86_64-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-arm64-cross: /usr/aarch64-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-armel-cross: /usr/arm-linux-gnueabi/include/asm/perf_regs.h
linux-libc-dev-armhf-cross: /usr/arm-linux-gnueabihf/include/asm/perf_regs.h
linux-libc-dev-i386-cross: /usr/i686-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-powerpc-cross: /usr/powerpc-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-ppc64-cross: /usr/powerpc64-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-ppc64el-cross: /usr/powerpc64le-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-riscv64-cross: /usr/riscv64-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-s390x-cross: /usr/s390x-linux-gnu/include/asm/perf_regs.h
linux-libc-dev-x32-cross: /usr/x86_64-linux-gnux32/include/asm/perf_regs.h
root@d77a78c0aa1c:/#

Ideas?

- Arnaldo

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-25 13:10       ` Arnaldo Carvalho de Melo
@ 2021-02-25 13:12         ` Arnaldo Carvalho de Melo
  2021-02-26  1:11           ` Tiezhu Yang
  0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-25 13:12 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-mips,
	linux-kernel, Xuefeng Li, Juxin Gao

Em Thu, Feb 25, 2021 at 10:10:12AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Thu, Feb 25, 2021 at 09:49:56AM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Wed, Feb 24, 2021 at 10:16:55AM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Em Mon, Feb 22, 2021 at 02:43:39PM +0800, Tiezhu Yang escreveu:
> > > > On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
> > > > > v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
> > > > > 
> > > > > Tiezhu Yang (3):
> > > > >    MIPS: kernel: Support extracting off-line stack traces from user-space
> > > > >      with perf
> > > > >    perf tools: Support mips unwinding and dwarf-regs
> > > > >    perf tools: Generate mips syscalls_n64.c syscall table
> > > > 
> > > > Hi Arnaldo,
> > > > 
> > > > The kernel part patch #1 has been merged.
> > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da
> > > > 
> > > > Could the perf tool patches #2 and #3 have a chance to be merged before
> > > > 5.12-rc1?
> > > > If yes, we can use this feature in 5.12-rc1.
> > > 
> > > Thanks, applied, should make it into 5.12-rc1.
> > 
> > First we'll have to fix this problem:
> > 
> >   28    12.45 debian:experimental-x-mips64  : FAIL gcc version 10.2.1 20201224 (Debian 10.2.1-3)
> >                      from builtin-diff.c:12:
> >     /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
> >         7 | #include <asm/perf_regs.h>
> >           |          ^~~~~~~~~~~~~~~~~
> >     compilation terminated.
> >     In file included from util/perf_regs.h:30,
> >                      from util/event.h:15,
> >                      from util/branch.h:15,
> >                      from util/callchain.h:8,
> >                      from builtin-record.c:16:
> >     /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
> 
> I'm not finding it in the debian cross build packages:
> 
> root@d77a78c0aa1c:/# apt-file find perf_regs.h | grep cross
> linux-libc-dev-amd64-cross: /usr/x86_64-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-arm64-cross: /usr/aarch64-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-armel-cross: /usr/arm-linux-gnueabi/include/asm/perf_regs.h
> linux-libc-dev-armhf-cross: /usr/arm-linux-gnueabihf/include/asm/perf_regs.h
> linux-libc-dev-i386-cross: /usr/i686-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-powerpc-cross: /usr/powerpc-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-ppc64-cross: /usr/powerpc64-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-ppc64el-cross: /usr/powerpc64le-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-riscv64-cross: /usr/riscv64-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-s390x-cross: /usr/s390x-linux-gnu/include/asm/perf_regs.h
> linux-libc-dev-x32-cross: /usr/x86_64-linux-gnux32/include/asm/perf_regs.h
> root@d77a78c0aa1c:/#
> 
> Ideas?

Trying with:

[perfbuilder@five x-mips]$ db
acmel/linux-perf-tools-build-ubuntu:19.10-x-mips
STEP 1: FROM ubuntu:21.04
STEP 2: MAINTAINER Arnaldo Carvalho de Melo <acme@kernel.org>
STEP 3: ENV ARCH mips
STEP 4: ENV TARGET mips-linux-gnu
STEP 5: ENV CROSS_COMPILE=${TARGET}-
STEP 6: RUN apt-get -y update &&     apt-get -y install make gcc-${TARGET} g++-${TARGET} flex bison git python3 &&     apt-get -y install curl wget bzip2 xz-utils file &&     export ELFUTILS_VER=0.173 &&     export ZLIB_VER=1.2.11 &&     export INSTALLDIR=/usr/${TARGET} &&     export PATH=$INSTALLDIR/bin:$PATH &&     export TARGETMACH=${TARGET} &&     export CROSS=${TARGET}- &&     export CC=${CROSS}gcc &&     export LD=${CROSS}ld &&     export AS=${CROSS}as &&     wget -q http://zlib.net/zlib-${ZLIB_VER}.tar.gz &&     wget -q https://fedorahosted.org/releases/e/l/elfutils/${ELFUTILS_VER}/elfutils-${ELFUTILS_VER}.tar.bz2 &&     tar xf zlib-${ZLIB_VER}.tar.gz &&     cd zlib-${ZLIB_VER} &&     ./configure --prefix=${INSTALLDIR} &&     make &&     make install &&     cd .. &&     rm -rf zlib-${ZLIB_VER} &&     rm -f zlib-${ZLIB_VER}.tar.gz &&     tar xf elfutils-${ELFUTILS_VER}.tar.bz2 &&     cd elfutils-${ELFUTILS_VER} &&     ./configure --host=${TARGET} --prefix=${INSTALLDIR} &&     make &&     make install &&     cd .. &&     rm -rf elfutils-${ELFUTILS_VER}* &&     git clone https://github.com/Linaro/OpenCSD.git &&     make -C OpenCSD/decoder/build/linux/ CROSS_COMPILE=${CROSS} install &&     rm -rf OpenCSD &&     apt-get -y remove wget bzip2 &&     apt-get -y clean &&     unset TARGET INSTALLDIR TARGETMACH CROSS CC LD AS &&     mkdir -m 777 -p /git /tmp/build/perf /tmp/build/objtool /tmp/build/linux &&     groupadd -r perfbuilder &&     useradd -m -r -g perfbuilder perfbuilder &&     chown -R perfbuilder.perfbuilder /tmp/build/ /git/


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-25 13:12         ` Arnaldo Carvalho de Melo
@ 2021-02-26  1:11           ` Tiezhu Yang
  2021-02-26 23:49             ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 13+ messages in thread
From: Tiezhu Yang @ 2021-02-26  1:11 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-mips,
	linux-kernel, Xuefeng Li, Juxin Gao

On 02/25/2021 09:12 PM, Arnaldo Carvalho de Melo wrote:
> Em Thu, Feb 25, 2021 at 10:10:12AM -0300, Arnaldo Carvalho de Melo escreveu:
>> Em Thu, Feb 25, 2021 at 09:49:56AM -0300, Arnaldo Carvalho de Melo escreveu:
>>> Em Wed, Feb 24, 2021 at 10:16:55AM -0300, Arnaldo Carvalho de Melo escreveu:
>>>> Em Mon, Feb 22, 2021 at 02:43:39PM +0800, Tiezhu Yang escreveu:
>>>>> On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
>>>>>> v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
>>>>>>
>>>>>> Tiezhu Yang (3):
>>>>>>     MIPS: kernel: Support extracting off-line stack traces from user-space
>>>>>>       with perf
>>>>>>     perf tools: Support mips unwinding and dwarf-regs
>>>>>>     perf tools: Generate mips syscalls_n64.c syscall table
>>>>> Hi Arnaldo,
>>>>>
>>>>> The kernel part patch #1 has been merged.
>>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da
>>>>>
>>>>> Could the perf tool patches #2 and #3 have a chance to be merged before
>>>>> 5.12-rc1?
>>>>> If yes, we can use this feature in 5.12-rc1.
>>>> Thanks, applied, should make it into 5.12-rc1.
>>> First we'll have to fix this problem:
>>>
>>>    28    12.45 debian:experimental-x-mips64  : FAIL gcc version 10.2.1 20201224 (Debian 10.2.1-3)
>>>                       from builtin-diff.c:12:
>>>      /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
>>>          7 | #include <asm/perf_regs.h>
>>>            |          ^~~~~~~~~~~~~~~~~
>>>      compilation terminated.
>>>      In file included from util/perf_regs.h:30,
>>>                       from util/event.h:15,
>>>                       from util/branch.h:15,
>>>                       from util/callchain.h:8,
>>>                       from builtin-record.c:16:
>>>      /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory

Sorry for the late reply. I asked for a leave yesterday.

asm/perf_regs.h is a new added file in the patch #1,
the patch link is:
https://lore.kernel.org/patchwork/patch/1375477/
the commit is:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/perf_regs.h?id=1ddc96bd42da

So we should build patch #2 based on patch #1.

Thanks,
Tiezhu

>> I'm not finding it in the debian cross build packages:
>>
>> root@d77a78c0aa1c:/# apt-file find perf_regs.h | grep cross
>> linux-libc-dev-amd64-cross: /usr/x86_64-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-arm64-cross: /usr/aarch64-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-armel-cross: /usr/arm-linux-gnueabi/include/asm/perf_regs.h
>> linux-libc-dev-armhf-cross: /usr/arm-linux-gnueabihf/include/asm/perf_regs.h
>> linux-libc-dev-i386-cross: /usr/i686-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-powerpc-cross: /usr/powerpc-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-ppc64-cross: /usr/powerpc64-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-ppc64el-cross: /usr/powerpc64le-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-riscv64-cross: /usr/riscv64-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-s390x-cross: /usr/s390x-linux-gnu/include/asm/perf_regs.h
>> linux-libc-dev-x32-cross: /usr/x86_64-linux-gnux32/include/asm/perf_regs.h
>> root@d77a78c0aa1c:/#
>>
>> Ideas?
> Trying with:
>
> [perfbuilder@five x-mips]$ db
> acmel/linux-perf-tools-build-ubuntu:19.10-x-mips
> STEP 1: FROM ubuntu:21.04
> STEP 2: MAINTAINER Arnaldo Carvalho de Melo <acme@kernel.org>
> STEP 3: ENV ARCH mips
> STEP 4: ENV TARGET mips-linux-gnu
> STEP 5: ENV CROSS_COMPILE=${TARGET}-
> STEP 6: RUN apt-get -y update &&     apt-get -y install make gcc-${TARGET} g++-${TARGET} flex bison git python3 &&     apt-get -y install curl wget bzip2 xz-utils file &&     export ELFUTILS_VER=0.173 &&     export ZLIB_VER=1.2.11 &&     export INSTALLDIR=/usr/${TARGET} &&     export PATH=$INSTALLDIR/bin:$PATH &&     export TARGETMACH=${TARGET} &&     export CROSS=${TARGET}- &&     export CC=${CROSS}gcc &&     export LD=${CROSS}ld &&     export AS=${CROSS}as &&     wget -q http://zlib.net/zlib-${ZLIB_VER}.tar.gz &&     wget -q https://fedorahosted.org/releases/e/l/elfutils/${ELFUTILS_VER}/elfutils-${ELFUTILS_VER}.tar.bz2 &&     tar xf zlib-${ZLIB_VER}.tar.gz &&     cd zlib-${ZLIB_VER} &&     ./configure --prefix=${INSTALLDIR} &&     make &&     make install &&     cd .. &&     rm -rf zlib-${ZLIB_VER} &&     rm -f zlib-${ZLIB_VER}.tar.gz &&     tar xf elfutils-${ELFUTILS_VER}.tar.bz2 &&     cd elfutils-${ELFUTILS_VER} &&     ./configure --host=${TARGET} --prefix=${INSTALLDIR} &&    
  make &&     make install &&     cd .. &&     rm -rf elfutils-${ELFUTILS_VER}* &&     git clone https://github.com/Linaro/OpenCSD.git &&     make -C OpenCSD/decoder/build/linux/ CROSS_COMPILE=${CROSS} install &&     rm -rf OpenCSD &&     apt-get -y remove wget bzip2 &&     apt-get -y clean &&     unset TARGET INSTALLDIR TARGETMACH CROSS CC LD AS &&     mkdir -m 777 -p /git /tmp/build/perf /tmp/build/objtool /tmp/build/linux &&     groupadd -r perfbuilder &&     useradd -m -r -g perfbuilder perfbuilder &&     chown -R perfbuilder.perfbuilder /tmp/build/ /git/


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-26  1:11           ` Tiezhu Yang
@ 2021-02-26 23:49             ` Arnaldo Carvalho de Melo
  2021-03-01 17:50               ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-26 23:49 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-mips,
	linux-kernel, Xuefeng Li, Juxin Gao

Em Fri, Feb 26, 2021 at 09:11:17AM +0800, Tiezhu Yang escreveu:
> On 02/25/2021 09:12 PM, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Feb 25, 2021 at 10:10:12AM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Em Thu, Feb 25, 2021 at 09:49:56AM -0300, Arnaldo Carvalho de Melo escreveu:
> > > > Em Wed, Feb 24, 2021 at 10:16:55AM -0300, Arnaldo Carvalho de Melo escreveu:
> > > > > Em Mon, Feb 22, 2021 at 02:43:39PM +0800, Tiezhu Yang escreveu:
> > > > > > On 02/04/2021 11:35 AM, Tiezhu Yang wrote:
> > > > > > > v2: add R26 and R27 to the enum perf_event_mips_regs in patch #1
> > > > > > > 
> > > > > > > Tiezhu Yang (3):
> > > > > > >     MIPS: kernel: Support extracting off-line stack traces from user-space
> > > > > > >       with perf
> > > > > > >     perf tools: Support mips unwinding and dwarf-regs
> > > > > > >     perf tools: Generate mips syscalls_n64.c syscall table
> > > > > > Hi Arnaldo,
> > > > > > 
> > > > > > The kernel part patch #1 has been merged.
> > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1ddc96bd42da
> > > > > > 
> > > > > > Could the perf tool patches #2 and #3 have a chance to be merged before
> > > > > > 5.12-rc1?
> > > > > > If yes, we can use this feature in 5.12-rc1.
> > > > > Thanks, applied, should make it into 5.12-rc1.
> > > > First we'll have to fix this problem:
> > > > 
> > > >    28    12.45 debian:experimental-x-mips64  : FAIL gcc version 10.2.1 20201224 (Debian 10.2.1-3)
> > > >                       from builtin-diff.c:12:
> > > >      /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
> > > >          7 | #include <asm/perf_regs.h>
> > > >            |          ^~~~~~~~~~~~~~~~~
> > > >      compilation terminated.
> > > >      In file included from util/perf_regs.h:30,
> > > >                       from util/event.h:15,
> > > >                       from util/branch.h:15,
> > > >                       from util/callchain.h:8,
> > > >                       from builtin-record.c:16:
> > > >      /git/linux/tools/perf/arch/mips/include/perf_regs.h:7:10: fatal error: asm/perf_regs.h: No such file or directory
> 
> Sorry for the late reply. I asked for a leave yesterday.
> 
> asm/perf_regs.h is a new added file in the patch #1,
> the patch link is:
> https://lore.kernel.org/patchwork/patch/1375477/
> the commit is:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/perf_regs.h?id=1ddc96bd42da
> 
> So we should build patch #2 based on patch #1.

yeah, my bad, since perf wasn't supported on MIPS, how could cross build
environments have the needed files? Stooooopid me, sorry. :-) I'll
retest after adding the needed files to my test containers.

- Arnaldo
 
> Thanks,
> Tiezhu
> 
> > > I'm not finding it in the debian cross build packages:
> > > 
> > > root@d77a78c0aa1c:/# apt-file find perf_regs.h | grep cross
> > > linux-libc-dev-amd64-cross: /usr/x86_64-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-arm64-cross: /usr/aarch64-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-armel-cross: /usr/arm-linux-gnueabi/include/asm/perf_regs.h
> > > linux-libc-dev-armhf-cross: /usr/arm-linux-gnueabihf/include/asm/perf_regs.h
> > > linux-libc-dev-i386-cross: /usr/i686-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-powerpc-cross: /usr/powerpc-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-ppc64-cross: /usr/powerpc64-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-ppc64el-cross: /usr/powerpc64le-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-riscv64-cross: /usr/riscv64-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-s390x-cross: /usr/s390x-linux-gnu/include/asm/perf_regs.h
> > > linux-libc-dev-x32-cross: /usr/x86_64-linux-gnux32/include/asm/perf_regs.h
> > > root@d77a78c0aa1c:/#
> > > 
> > > Ideas?
> > Trying with:
> > 
> > [perfbuilder@five x-mips]$ db
> > acmel/linux-perf-tools-build-ubuntu:19.10-x-mips
> > STEP 1: FROM ubuntu:21.04
> > STEP 2: MAINTAINER Arnaldo Carvalho de Melo <acme@kernel.org>
> > STEP 3: ENV ARCH mips
> > STEP 4: ENV TARGET mips-linux-gnu
> > STEP 5: ENV CROSS_COMPILE=${TARGET}-
> > STEP 6: RUN apt-get -y update &&     apt-get -y install make gcc-${TARGET} g++-${TARGET} flex bison git python3 &&     apt-get -y install curl wget bzip2 xz-utils file &&     export ELFUTILS_VER=0.173 &&     export ZLIB_VER=1.2.11 &&     export INSTALLDIR=/usr/${TARGET} &&     export PATH=$INSTALLDIR/bin:$PATH &&     export TARGETMACH=${TARGET} &&     export CROSS=${TARGET}- &&     export CC=${CROSS}gcc &&     export LD=${CROSS}ld &&     export AS=${CROSS}as &&     wget -q http://zlib.net/zlib-${ZLIB_VER}.tar.gz &&     wget -q https://fedorahosted.org/releases/e/l/elfutils/${ELFUTILS_VER}/elfutils-${ELFUTILS_VER}.tar.bz2 &&     tar xf zlib-${ZLIB_VER}.tar.gz &&     cd zlib-${ZLIB_VER} &&     ./configure --prefix=${INSTALLDIR} &&     make &&     make install &&     cd .. &&     rm -rf zlib-${ZLIB_VER} &&     rm -f zlib-${ZLIB_VER}.tar.gz &&     tar xf elfutils-${ELFUTILS_VER}.tar.bz2 &&     cd elfutils-${ELFUTILS_VER} &&     ./configure --host=${TARGET} --prefix=${INSTALLDIR} &&     make &&     make install &&     cd .. &&     rm -rf elfutils-${ELFUTILS_VER}* &&     git clone https://github.com/Linaro/OpenCSD.git &&     make -C OpenCSD/decoder/build/linux/ CROSS_COMPILE=${CROSS} install &&     rm -rf OpenCSD &&     apt-get -y remove wget bzip2 &&     apt-get -y clean &&     unset TARGET INSTALLDIR TARGETMACH CROSS CC LD AS &&     mkdir -m 777 -p /git /tmp/build/perf /tmp/build/objtool /tmp/build/linux &&     groupadd -r perfbuilder &&     useradd -m -r -g perfbuilder perfbuilder &&     chown -R perfbuilder.perfbuilder /tmp/build/ /git/
> 

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/3] Add some perf support for mips
  2021-02-26 23:49             ` Arnaldo Carvalho de Melo
@ 2021-03-01 17:50               ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-03-01 17:50 UTC (permalink / raw)
  To: Tiezhu Yang
  Cc: Jianlin Lv, Thomas Bogendoerfer, Peter Zijlstra, Ingo Molnar,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-mips, linux-kernel, Xuefeng Li, Juxin Gao

Em Fri, Feb 26, 2021 at 08:49:29PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Feb 26, 2021 at 09:11:17AM +0800, Tiezhu Yang escreveu:
> > Sorry for the late reply. I asked for a leave yesterday.

> > asm/perf_regs.h is a new added file in the patch #1,
> > the patch link is:
> > https://lore.kernel.org/patchwork/patch/1375477/
> > the commit is:
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/perf_regs.h?id=1ddc96bd42da
> > 
> > So we should build patch #2 based on patch #1.

> yeah, my bad, since perf wasn't supported on MIPS, how could cross build
> environments have the needed files? Stooooopid me, sorry. :-) I'll
> retest after adding the needed files to my test containers.

Then I had to add this one on top:

Committer notes:

Do it as __perf_reg_name() to cope with:

  067012974c8ae31a ("perf tools: Fix arm64 build error with gcc-11")

- Arnaldo

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-03-02  2:28 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-04  3:35 [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
2021-02-04  3:35 ` [PATCH v2 1/3] MIPS: kernel: Support extracting off-line stack traces from user-space with perf Tiezhu Yang
2021-02-04 20:59   ` Thomas Bogendoerfer
2021-02-04  3:35 ` [PATCH v2 2/3] perf tools: Support mips unwinding and dwarf-regs Tiezhu Yang
2021-02-04  3:35 ` [PATCH v2 3/3] perf tools: Generate mips syscalls_n64.c syscall table Tiezhu Yang
2021-02-22  6:43 ` [PATCH v2 0/3] Add some perf support for mips Tiezhu Yang
2021-02-24 13:16   ` Arnaldo Carvalho de Melo
2021-02-25 12:49     ` Arnaldo Carvalho de Melo
2021-02-25 13:10       ` Arnaldo Carvalho de Melo
2021-02-25 13:12         ` Arnaldo Carvalho de Melo
2021-02-26  1:11           ` Tiezhu Yang
2021-02-26 23:49             ` Arnaldo Carvalho de Melo
2021-03-01 17:50               ` Arnaldo Carvalho de Melo

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).