summaryrefslogtreecommitdiffstats
path: root/meta-toradex-extras
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@theqtcompany.com>2016-02-09 15:10:59 +0200
committerSamuli Piippo <samuli.piippo@theqtcompany.com>2016-02-12 10:14:41 +0000
commite8a3c3509903716ebacc9e73927f586b94994574 (patch)
tree9360999cd2c869d13672190850e8c80b5d40aaa3 /meta-toradex-extras
parent5a886d5f37f22c40ab292cfd35bb625b905902f9 (diff)
downloadmeta-boot2qt-e8a3c3509903716ebacc9e73927f586b94994574.tar.gz
toradex: update to V2.5Beta3_20151215
Change-Id: I8d25f96bd4a2f127acf4f0eba8e8b150ec44ef42 Reviewed-by: Teemu Holappa <teemu.holappa@theqtcompany.com>
Diffstat (limited to 'meta-toradex-extras')
-rw-r--r--meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff126
-rw-r--r--meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch172
-rw-r--r--meta-toradex-extras/recipes/linux/linux-toradex-fsl_git.bbappend6
-rw-r--r--meta-toradex-extras/recipes/u-boot/u-boot-toradex-fsl/0001-Update-default-args-for-apalis-imx6.patch14
4 files changed, 7 insertions, 311 deletions
diff --git a/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff b/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff
deleted file mode 100644
index e6f44fd..0000000
--- a/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff
+++ /dev/null
@@ -1,126 +0,0 @@
1From 49863894db3ed7bd41541b1c17733273966cea71 Mon Sep 17 00:00:00 2001
2From: Will Deacon <will.deacon@arm.com>
3Date: Thu, 26 Sep 2013 12:36:35 +0100
4Subject: [PATCH] ARM: perf: add support for perf registers API
5
6This patch implements the functions required for the perf registers API,
7allowing the perf tool to interface kernel register dumps with libunwind
8in order to provide userspace backtracing.
9
10Cc: Jean Pihet <jean.pihet@linaro.org>
11Signed-off-by: Will Deacon <will.deacon@arm.com>
12---
13 arch/arm/Kconfig | 2 ++
14 arch/arm/include/uapi/asm/Kbuild | 1 +
15 arch/arm/include/uapi/asm/perf_regs.h | 23 +++++++++++++++++++++++
16 arch/arm/kernel/Makefile | 1 +
17 arch/arm/kernel/perf_regs.c | 30 ++++++++++++++++++++++++++++++
18 5 files changed, 57 insertions(+)
19 create mode 100644 arch/arm/include/uapi/asm/perf_regs.h
20 create mode 100644 arch/arm/kernel/perf_regs.c
21
22diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
23index 1ad6fb6..899d0c6 100644
24--- a/arch/arm/Kconfig
25+++ b/arch/arm/Kconfig
26@@ -51,6 +51,8 @@ config ARM
27 select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
28 select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
29 select HAVE_PERF_EVENTS
30+ select HAVE_PERF_REGS
31+ select HAVE_PERF_USER_STACK_DUMP
32 select HAVE_REGS_AND_STACK_ACCESS_API
33 select HAVE_SYSCALL_TRACEPOINTS
34 select HAVE_UID16
35diff --git a/arch/arm/include/uapi/asm/Kbuild b/arch/arm/include/uapi/asm/Kbuild
36index 18d76fd..70a1c9d 100644
37--- a/arch/arm/include/uapi/asm/Kbuild
38+++ b/arch/arm/include/uapi/asm/Kbuild
39@@ -7,6 +7,7 @@ header-y += hwcap.h
40 header-y += ioctls.h
41 header-y += kvm_para.h
42 header-y += mman.h
43+header-y += perf_regs.h
44 header-y += posix_types.h
45 header-y += ptrace.h
46 header-y += setup.h
47diff --git a/arch/arm/include/uapi/asm/perf_regs.h b/arch/arm/include/uapi/asm/perf_regs.h
48new file mode 100644
49index 0000000..ce59448
50--- /dev/null
51+++ b/arch/arm/include/uapi/asm/perf_regs.h
52@@ -0,0 +1,23 @@
53+#ifndef _ASM_ARM_PERF_REGS_H
54+#define _ASM_ARM_PERF_REGS_H
55+
56+enum perf_event_arm_regs {
57+ PERF_REG_ARM_R0,
58+ PERF_REG_ARM_R1,
59+ PERF_REG_ARM_R2,
60+ PERF_REG_ARM_R3,
61+ PERF_REG_ARM_R4,
62+ PERF_REG_ARM_R5,
63+ PERF_REG_ARM_R6,
64+ PERF_REG_ARM_R7,
65+ PERF_REG_ARM_R8,
66+ PERF_REG_ARM_R9,
67+ PERF_REG_ARM_R10,
68+ PERF_REG_ARM_FP,
69+ PERF_REG_ARM_IP,
70+ PERF_REG_ARM_SP,
71+ PERF_REG_ARM_LR,
72+ PERF_REG_ARM_PC,
73+ PERF_REG_ARM_MAX,
74+};
75+#endif /* _ASM_ARM_PERF_REGS_H */
76diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
77index 5140df5f..9b818ca 100644
78--- a/arch/arm/kernel/Makefile
79+++ b/arch/arm/kernel/Makefile
80@@ -78,6 +78,7 @@ obj-$(CONFIG_CPU_XSC3) += xscale-cp0.o
81 obj-$(CONFIG_CPU_MOHAWK) += xscale-cp0.o
82 obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o
83 obj-$(CONFIG_IWMMXT) += iwmmxt.o
84+obj-$(CONFIG_PERF_EVENTS) += perf_regs.o
85 obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o perf_event_cpu.o
86 AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
87 obj-$(CONFIG_ARM_CPU_TOPOLOGY) += topology.o
88diff --git a/arch/arm/kernel/perf_regs.c b/arch/arm/kernel/perf_regs.c
89new file mode 100644
90index 0000000..6e4379c
91--- /dev/null
92+++ b/arch/arm/kernel/perf_regs.c
93@@ -0,0 +1,30 @@
94+
95+#include <linux/errno.h>
96+#include <linux/kernel.h>
97+#include <linux/perf_event.h>
98+#include <linux/bug.h>
99+#include <asm/perf_regs.h>
100+#include <asm/ptrace.h>
101+
102+u64 perf_reg_value(struct pt_regs *regs, int idx)
103+{
104+ if (WARN_ON_ONCE((u32)idx >= PERF_REG_ARM_MAX))
105+ return 0;
106+
107+ return regs->uregs[idx];
108+}
109+
110+#define REG_RESERVED (~((1ULL << PERF_REG_ARM_MAX) - 1))
111+
112+int perf_reg_validate(u64 mask)
113+{
114+ if (!mask || mask & REG_RESERVED)
115+ return -EINVAL;
116+
117+ return 0;
118+}
119+
120+u64 perf_reg_abi(struct task_struct *task)
121+{
122+ return PERF_SAMPLE_REGS_ABI_32;
123+}
124--
1251.9.1
126
diff --git a/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch b/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch
deleted file mode 100644
index 1e497c6..0000000
--- a/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch
+++ /dev/null
@@ -1,172 +0,0 @@
1From 8abd7519c1fd2b6ae35eddbb41f93f44d3886000 Mon Sep 17 00:00:00 2001
2From: Will Deacon <will.deacon@arm.com>
3Date: Thu, 26 Sep 2013 12:36:36 +0100
4Subject: [PATCH] ARM: perf: wire up perf_regs and unwind support for ARM
5
6This patch hooks in the perf_regs and libunwind code for ARM.
7
8B2Qt: Backported for 3.10 kernel
9
10Cc: Jean Pihet <jean.pihet@linaro.org>
11Signed-off-by: Will Deacon <will.deacon@arm.com>
12---
13 tools/perf/Makefile | 6 +++-
14 tools/perf/arch/arm/Makefile | 3 ++
15 tools/perf/arch/arm/include/perf_regs.h | 54 +++++++++++++++++++++++++++++++++
16 tools/perf/arch/arm/util/unwind.c | 48 +++++++++++++++++++++++++++++
17 4 files changed, 110 insertions(+), 1 deletion(-)
18 create mode 100644 tools/perf/arch/arm/include/perf_regs.h
19 create mode 100644 tools/perf/arch/arm/util/unwind.c
20
21diff --git a/tools/perf/Makefile b/tools/perf/Makefile
22index b0f164b..f8fdad5 100644
23--- a/tools/perf/Makefile
24+++ b/tools/perf/Makefile
25@@ -87,6 +87,10 @@ ifeq ($(ARCH),x86_64)
26 NO_PERF_REGS := 0
27 LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
28 endif
29+ifeq ($(ARCH),arm)
30+ NO_PERF_REGS := 0
31+ LIBUNWIND_LIBS = -lunwind -lunwind-arm
32+endif
33
34 # Treat warnings as errors unless directed not to
35 ifneq ($(WERROR),0)
36@@ -607,7 +611,7 @@ endif # SOURCE_LIBELF
37 endif # NO_LIBELF
38
39 # There's only x86 (both 32 and 64) support for CFI unwind so far
40-ifneq ($(ARCH),x86)
41+ifeq ($(LIBUNWIND_LIBS),)
42 NO_LIBUNWIND := 1
43 endif
44
45diff --git a/tools/perf/arch/arm/Makefile b/tools/perf/arch/arm/Makefile
46index 15130b5..fe9b61e 100644
47--- a/tools/perf/arch/arm/Makefile
48+++ b/tools/perf/arch/arm/Makefile
49@@ -2,3 +2,6 @@ ifndef NO_DWARF
50 PERF_HAVE_DWARF_REGS := 1
51 LIB_OBJS += $(OUTPUT)arch/$(ARCH)/util/dwarf-regs.o
52 endif
53+ifndef NO_LIBUNWIND
54+LIB_OBJS += $(OUTPUT)arch/$(ARCH)/util/unwind.o
55+endif
56diff --git a/tools/perf/arch/arm/include/perf_regs.h b/tools/perf/arch/arm/include/perf_regs.h
57new file mode 100644
58index 0000000..2a1cfde
59--- /dev/null
60+++ b/tools/perf/arch/arm/include/perf_regs.h
61@@ -0,0 +1,54 @@
62+#ifndef ARCH_PERF_REGS_H
63+#define ARCH_PERF_REGS_H
64+
65+#include <stdlib.h>
66+#include "../../util/types.h"
67+#include <asm/perf_regs.h>
68+
69+#define PERF_REGS_MASK ((1ULL << PERF_REG_ARM_MAX) - 1)
70+#define PERF_REG_IP PERF_REG_ARM_PC
71+#define PERF_REG_SP PERF_REG_ARM_SP
72+
73+static inline const char *perf_reg_name(int id)
74+{
75+ switch (id) {
76+ case PERF_REG_ARM_R0:
77+ return "r0";
78+ case PERF_REG_ARM_R1:
79+ return "r1";
80+ case PERF_REG_ARM_R2:
81+ return "r2";
82+ case PERF_REG_ARM_R3:
83+ return "r3";
84+ case PERF_REG_ARM_R4:
85+ return "r4";
86+ case PERF_REG_ARM_R5:
87+ return "r5";
88+ case PERF_REG_ARM_R6:
89+ return "r6";
90+ case PERF_REG_ARM_R7:
91+ return "r7";
92+ case PERF_REG_ARM_R8:
93+ return "r8";
94+ case PERF_REG_ARM_R9:
95+ return "r9";
96+ case PERF_REG_ARM_R10:
97+ return "r10";
98+ case PERF_REG_ARM_FP:
99+ return "fp";
100+ case PERF_REG_ARM_IP:
101+ return "ip";
102+ case PERF_REG_ARM_SP:
103+ return "sp";
104+ case PERF_REG_ARM_LR:
105+ return "lr";
106+ case PERF_REG_ARM_PC:
107+ return "pc";
108+ default:
109+ return NULL;
110+ }
111+
112+ return NULL;
113+}
114+
115+#endif /* ARCH_PERF_REGS_H */
116diff --git a/tools/perf/arch/arm/util/unwind.c b/tools/perf/arch/arm/util/unwind.c
117new file mode 100644
118index 0000000..da3dc95
119--- /dev/null
120+++ b/tools/perf/arch/arm/util/unwind.c
121@@ -0,0 +1,48 @@
122+
123+#include <errno.h>
124+#include <libunwind.h>
125+#include "perf_regs.h"
126+#include "../../util/unwind.h"
127+
128+int unwind__arch_reg_id(int regnum)
129+{
130+ switch (regnum) {
131+ case UNW_ARM_R0:
132+ return PERF_REG_ARM_R0;
133+ case UNW_ARM_R1:
134+ return PERF_REG_ARM_R1;
135+ case UNW_ARM_R2:
136+ return PERF_REG_ARM_R2;
137+ case UNW_ARM_R3:
138+ return PERF_REG_ARM_R3;
139+ case UNW_ARM_R4:
140+ return PERF_REG_ARM_R4;
141+ case UNW_ARM_R5:
142+ return PERF_REG_ARM_R5;
143+ case UNW_ARM_R6:
144+ return PERF_REG_ARM_R6;
145+ case UNW_ARM_R7:
146+ return PERF_REG_ARM_R7;
147+ case UNW_ARM_R8:
148+ return PERF_REG_ARM_R8;
149+ case UNW_ARM_R9:
150+ return PERF_REG_ARM_R9;
151+ case UNW_ARM_R10:
152+ return PERF_REG_ARM_R10;
153+ case UNW_ARM_R11:
154+ return PERF_REG_ARM_FP;
155+ case UNW_ARM_R12:
156+ return PERF_REG_ARM_IP;
157+ case UNW_ARM_R13:
158+ return PERF_REG_ARM_SP;
159+ case UNW_ARM_R14:
160+ return PERF_REG_ARM_LR;
161+ case UNW_ARM_R15:
162+ return PERF_REG_ARM_PC;
163+ default:
164+ pr_err("unwind: invalid reg id %d\n", regnum);
165+ return -EINVAL;
166+ }
167+
168+ return -EINVAL;
169+}
170--
1711.9.1
172
diff --git a/meta-toradex-extras/recipes/linux/linux-toradex-fsl_git.bbappend b/meta-toradex-extras/recipes/linux/linux-toradex-fsl_git.bbappend
index 25d756f..977ef47 100644
--- a/meta-toradex-extras/recipes/linux/linux-toradex-fsl_git.bbappend
+++ b/meta-toradex-extras/recipes/linux/linux-toradex-fsl_git.bbappend
@@ -19,12 +19,6 @@
19## 19##
20############################################################################## 20##############################################################################
21 21
22FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
23SRC_URI += "\
24 file://ARM-perf-add-support-for-perf-registers-API.diff \
25 file://ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch \
26 "
27
28# kernel image files are not needed in the image 22# kernel image files are not needed in the image
29RDEPENDS_kernel-base = "" 23RDEPENDS_kernel-base = ""
30 24
diff --git a/meta-toradex-extras/recipes/u-boot/u-boot-toradex-fsl/0001-Update-default-args-for-apalis-imx6.patch b/meta-toradex-extras/recipes/u-boot/u-boot-toradex-fsl/0001-Update-default-args-for-apalis-imx6.patch
index 174f3b0..b7c7d63 100644
--- a/meta-toradex-extras/recipes/u-boot/u-boot-toradex-fsl/0001-Update-default-args-for-apalis-imx6.patch
+++ b/meta-toradex-extras/recipes/u-boot/u-boot-toradex-fsl/0001-Update-default-args-for-apalis-imx6.patch
@@ -1,4 +1,4 @@
1From 1d5baa56ff177d7858727d1c4428096781e3817c Mon Sep 17 00:00:00 2001 1From 94531a3ecaea073316b9e4c341085ce5e277bd9f Mon Sep 17 00:00:00 2001
2From: Samuli Piippo <samuli.piippo@digia.com> 2From: Samuli Piippo <samuli.piippo@digia.com>
3Date: Mon, 27 Oct 2014 14:53:25 +0200 3Date: Mon, 27 Oct 2014 14:53:25 +0200
4Subject: [PATCH] Update default args for apalis imx6 4Subject: [PATCH] Update default args for apalis imx6
@@ -10,10 +10,10 @@ disable cursor blinking.
10 1 file changed, 8 insertions(+), 7 deletions(-) 10 1 file changed, 8 insertions(+), 7 deletions(-)
11 11
12diff --git a/include/configs/apalis_imx6.h b/include/configs/apalis_imx6.h 12diff --git a/include/configs/apalis_imx6.h b/include/configs/apalis_imx6.h
13index 162be2e..f659384 100644 13index e7d0d20..a1d425d 100644
14--- a/include/configs/apalis_imx6.h 14--- a/include/configs/apalis_imx6.h
15+++ b/include/configs/apalis_imx6.h 15+++ b/include/configs/apalis_imx6.h
16@@ -246,14 +246,14 @@ 16@@ -251,14 +251,14 @@
17 "&& setenv dtbparam \" - ${fdt_addr_r}\" && true\0" 17 "&& setenv dtbparam \" - ${fdt_addr_r}\" && true\0"
18 18
19 #define SD_BOOTCMD \ 19 #define SD_BOOTCMD \
@@ -24,7 +24,7 @@ index 162be2e..f659384 100644
24- "setenv bootargs ${defargs} ${sdargs} ${setupargs} " \ 24- "setenv bootargs ${defargs} ${sdargs} ${setupargs} " \
25+ "setenv bootargs ${defargs} ip=off root=/dev/mmcblk${drive}p2 " \ 25+ "setenv bootargs ${defargs} ip=off root=/dev/mmcblk${drive}p2 " \
26+ "rw,noatime rootfstype=ext3 rootwait ${setupargs} " \ 26+ "rw,noatime rootfstype=ext3 rootwait ${setupargs} " \
27 "${vidargs}; echo Booting from SD card in 8bit slot...; " \ 27 "${vidargs}; echo Booting from SD card in 8-bit slot...; " \
28- "run sddtbload; load mmc 1:1 ${kernel_addr_r} " \ 28- "run sddtbload; load mmc 1:1 ${kernel_addr_r} " \
29+ "run sddtbload; load mmc ${drive}:1 ${kernel_addr_r} " \ 29+ "run sddtbload; load mmc ${drive}:1 ${kernel_addr_r} " \
30 "${boot_file} && bootm ${kernel_addr_r} ${dtbparam}\0" \ 30 "${boot_file} && bootm ${kernel_addr_r} ${dtbparam}\0" \
@@ -33,8 +33,8 @@ index 162be2e..f659384 100644
33 "${fdt_file} && setenv dtbparam \" - ${fdt_addr_r}\" && true\0" 33 "${fdt_file} && setenv dtbparam \" - ${fdt_addr_r}\" && true\0"
34 34
35 #define USB_BOOTCMD \ 35 #define USB_BOOTCMD \
36@@ -273,7 +273,8 @@ 36@@ -278,7 +278,8 @@
37 #define FDT_FILE "imx6q-apalis-eval_v1_0.dtb" 37 #define FDT_FILE "imx6q-apalis_v1_0-eval.dtb"
38 #endif 38 #endif
39 #define CONFIG_EXTRA_ENV_SETTINGS \ 39 #define CONFIG_EXTRA_ENV_SETTINGS \
40- "bootcmd=run emmcboot ; echo ; echo emmcboot failed ; " \ 40- "bootcmd=run emmcboot ; echo ; echo emmcboot failed ; " \
@@ -43,7 +43,7 @@ index 162be2e..f659384 100644
43 "run nfsboot ; echo ; echo nfsboot failed ; " \ 43 "run nfsboot ; echo ; echo nfsboot failed ; " \
44 "usb start ;" \ 44 "usb start ;" \
45 "setenv stdout serial,vga ; setenv stdin serial,usbkbd\0" \ 45 "setenv stdout serial,vga ; setenv stdin serial,usbkbd\0" \
46@@ -292,7 +293,7 @@ 46@@ -299,7 +300,7 @@
47 "|| setenv drive 2; load ${interface} ${drive}:1 " \ 47 "|| setenv drive 2; load ${interface} ${drive}:1 " \
48 "${kernel_addr_r} flash_blk.img\0" \ 48 "${kernel_addr_r} flash_blk.img\0" \
49 "setup=setenv setupargs fec_mac=${ethaddr} " \ 49 "setup=setenv setupargs fec_mac=${ethaddr} " \