summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@wdc.com>2019-05-24 10:08:17 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-05-27 17:06:34 +0100
commit274f038d3eeced911d711e3bcacabab3408ac8fe (patch)
tree58b6af47b3176ce22041dc628fe01c923fbf9f0d /meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch
parent12aa79f5bf16bd6d3fa3ef7a13650289e7f15da4 (diff)
downloadpoky-274f038d3eeced911d711e3bcacabab3408ac8fe.tar.gz
qemu: Backport the arm segfault fix
When we updated to QEMU 4.0 we saw a segfault when running tests on the qemuarm machine. At the time we just reverted the offending patch from QEMU. Now that the fix has been merged into upstream let's remove that revert patch and replace it with the correct backport. (From OE-Core rev: ce0cae5511ce4ba7b9dcc9c6676ec7ea10622cb7) Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch')
-rw-r--r--meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch b/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch
new file mode 100644
index 0000000000..c1dd957dc9
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch
@@ -0,0 +1,66 @@
1From 2f143d3ad1c05e91cf2cdf5de06d59a80a95e6c8 Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair.francis@wdc.com>
3Date: Thu, 23 May 2019 14:47:43 +0100
4Subject: [PATCH] target/arm: Fix vector operation segfault
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Commit 89e68b575 "target/arm: Use vector operations for saturation"
10causes this abort() when booting QEMU ARM with a Cortex-A15:
11
120 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
131 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
142 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized out>, s=<optimized out>) at ./target/arm/translate.c:6673
153 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>, insn=<optimized out>) at ./target/arm/translate.c:6386
164 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068, s=0x7fffe59a9510) at ./target/arm/translate.c:9289
175 0x00005555559cd8a4 in arm_tr_translate_insn (dcbase=0x7fffe59a9510, cpu=<optimized out>) at ./target/arm/translate.c:13612
186 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580 <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0, tb=<optimized out>, max_insns=<optimized out>) at ./accel/tcg/translator.c:96
197 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x55555686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>, max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
208 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0, pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry=524288) at ./accel/tcg/translate-all.c:1736
219 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1, last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at ./accel/tcg/cpu-exec.c:407
2210 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at ./accel/tcg/cpu-exec.c:728
2311 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at ./cpus.c:1431
2412 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=0x55555686a2f0) at ./cpus.c:1735
2513 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55555686a2f0) at ./cpus.c:1709
2614 0x0000555555d2629a in qemu_thread_start (args=<optimized out>) at ./util/qemu-thread-posix.c:502
2715 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
28
29This patch ensures that we don't hit the abort() in the second switch
30case in disas_neon_data_insn() as we will return from the first case.
31
32Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
33Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
34Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
35Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
36Tested-by: Alex Bennée <alex.bennee@linaro.org>
37Message-id: ad91b397f360b2fc7f4087e476f7df5b04d42ddb.1558021877.git.alistair.francis@wdc.com
38Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
39Upstream-Status: Backport [4.1.0]
40---
41 target/arm/translate.c | 4 ++--
42 1 file changed, 2 insertions(+), 2 deletions(-)
43
44diff --git a/target/arm/translate.c b/target/arm/translate.c
45index dd053c80d6..298c262825 100644
46--- a/target/arm/translate.c
47+++ b/target/arm/translate.c
48@@ -6598,13 +6598,13 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
49 tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
50 rn_ofs, rm_ofs, vec_size, vec_size,
51 (u ? uqadd_op : sqadd_op) + size);
52- break;
53+ return 0;
54
55 case NEON_3R_VQSUB:
56 tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
57 rn_ofs, rm_ofs, vec_size, vec_size,
58 (u ? uqsub_op : sqsub_op) + size);
59- break;
60+ return 0;
61
62 case NEON_3R_VMUL: /* VMUL */
63 if (u) {
64--
652.21.0
66