[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 17/31] target/arm: Enforce alignment for LDM/STM
From: |
Richard Henderson |
Subject: |
Re: [PATCH v5 17/31] target/arm: Enforce alignment for LDM/STM |
Date: |
Tue, 7 Sep 2021 15:44:29 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 |
On 8/31/21 2:51 AM, Nathan Chancellor wrote:
I just bisected a boot hang with an LLVM-built multi_v7_defconfig +
CONFIG_THUMB2_KERNEL=y kernel down to this commit. I do not see the same
hang when the kernel is compiled with GCC 11.2.0 and binutils 2.37 nor
do I see a hang with multi_v7_defconfig by itself. Is there something
that LLVM is doing wrong when compiling/assembling/linking the kernel or
is there something wrong/too aggressive with this commit? I can
reproduce this with current QEMU HEAD (ad22d05833).
My QEMU invocation is:
$ qemu-system-arm \
-append "console=ttyAMA0 earlycon" \
-display none \
-initrd rootfs.cpio \
-kernel zImage \
-M virt \
-m 512m \
-nodefaults \
-no-reboot \
-serial mon:stdio
and the rootfs.cpio and zImage files can be found here:
https://github.com/nathanchance/bug-files/tree/15c1fd6e44622a3c27823d2c5c3083dfc7246146/qemu-2e1f39e29bf9a6b28eaee9fc0949aab50dbad94a
Hmm. I see
IN:
0xc13038e2: e890 008c ldm.w r0, {r2, r3, r7}
R00=c13077ca R01=c11a8058 R02=c11a8058 R03=c031737f
R04=48379000 R05=00000024 R06=c031748d R07=c03174bb
R08=412fc0f1 R09=c0ce9308 R10=50c5387d R11=00000000
R12=00000009 R13=c1501f88 R14=c0301739 R15=c13038e2
PSR=200001f3 --C- T svc32
Taking exception 4 [Data Abort]
...from EL1 to EL1
...with ESR 0x25/0x9600003f
...with DFSR 0x1 DFAR 0xc13077ca
So, yes, it's a ldm from an address % 4 = 2, so it is correct that we should trap. You
should see the same trap on real hw.
r~
- Re: [PATCH v5 17/31] target/arm: Enforce alignment for LDM/STM,
Richard Henderson <=