Regression in 7.2.0rc3: No snow by efi firmware in advent calendar 2020, door 15 anymore
Host environment
- Operating system: Debian Bullseye
- OS/kernel version: Linux rodrigo 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64 GNU/Linux
- Architecture: x86
- QEMU flavor: qemu-system-x86_64
- QEMU version: QEMU emulator version 7.1.50 (v7.1.0-1022-g92ec056a) (after applying git bisect)
- QEMU command line:
qemu-system-x86_64 -m 256M -machine q35 -serial mon:stdio -vga none -drive if=pflash,format=raw,file=snow.bin -boot a
Emulated/Virtualized environment
- Operating system: n/a
- OS/kernel version: n/a
- Architecture: x86
Description of problem
Advent calendar 2020, door 15 is expected to produce snow on the terminal while executing the provided efi firmware:
snow in micropython on slimbootloader by eldon
Today's advent is a custom efi firmware build of a new bootloader from intel called slimbootloader[1], a recent project by intel which has adapted micropython[2] as a utility for configuration and board testing. This build, however, will show snowfall on the console for a while. Eventually an exception drops the firmware into the micropython repl.
[1] https://slimbootloader.github.io/supported-hardware/qemu.html [2] http://docs.micropython.org/en/latest/index.html
Snow does not fall anymore as it did with 7.1.0, it seems like execution is stopped/not started
Steps to reproduce
- Build & Install from git source
/home/helge/qemu-project/qemu/configure --prefix=/home/helge/qemu-project/install \ --target-list=x86_64-softmmu --disable-linux-user make -j2 make install
- Execute
PATH="/home/helge/qemu-project/install/bin" qemu-system-x86_64 \ -m 256M -machine q35 -serial mon:stdio -vga none \ -drive if=pflash,format=raw,file=snow.bin -boot a
Additional information
Performing git bisect starting with tag v7.1.0 as good and tag v7.2.0-rc3 as bad reveals 92ec056a as culprit:
$ git bisect start c4ffd91aba1c3d878e99a3e7ba8aad4826728ece 621da7789083b80d6f1ff1c0fb499334007b4f51
binäre Suche: danach noch 965 Commits zum Testen übrig (ungefähr 10 Schritte)
[2ba341b3694cf3cff7b8a1df4cc765900d5c4f60] Merge tag 'kraxel-20221013-pull-request' of https://gitlab.com/kraxel/qemu into staging
$ git bisect good
binäre Suche: danach noch 482 Commits zum Testen übrig (ungefähr 9 Schritte)
[05c049f12b88370de7289bf39b14088c7d656caa] hw/isa/piix3: Remove extra ';' outside of functions
$ git bisect bad
binäre Suche: danach noch 228 Commits zum Testen übrig (ungefähr 8 Schritte)
[08a5d04606292b3cf6f5756bf2a095654a290626] Merge tag 'pull-tcg-20221026' of https://gitlab.com/rth7680/qemu into staging
$ git bisect bad
binäre Suche: danach noch 126 Commits zum Testen übrig (ungefähr 7 Schritte)
[168122419ed1c4087748e21131a523c6d9b632e1] target/arm: Change gen_goto_tb to work on displacements
$ git bisect bad
binäre Suche: danach noch 69 Commits zum Testen übrig (ungefähr 6 Schritte)
[2c65091fd9d387b8dca8115dbdd9c3c61f658a9e] Merge tag 'pull-ppc-20221017' of https://gitlab.com/danielhb/qemu into staging
$ git bisect good
binäre Suche: danach noch 34 Commits zum Testen übrig (ungefähr 5 Schritte)
[92ec056a6b2fc5d5a5593121c5d9475d2a2461d6] target/i386: reimplement 0x0f 0x60-0x6f, add AVX
$ git bisect bad
binäre Suche: danach noch 17 Commits zum Testen übrig (ungefähr 4 Schritte)
[8629e77be5f8106b3497cc197fbd57a12ae6333f] target/i386: Use probe_access_full for final stage2 translation
$ git bisect good
binäre Suche: danach noch 8 Commits zum Testen übrig (ungefähr 3 Schritte)
[20581aadec5e5a9d6836e4612b6f44a7cbda7d16] target/i386: validate VEX prefixes via the instructions' exception classes
$ git bisect good
binäre Suche: danach noch 4 Commits zum Testen übrig (ungefähr 2 Schritte)
[f05f9789f57d5394fc118fe31aa2a9f563311140] target/i386: extend helpers to support VEX.V 3- and 4- operand encodings
$ git bisect good
binäre Suche: danach noch 2 Commits zum Testen übrig (ungefähr 1 Schritt)
[620f75566a5d81d7b82b3788b83d0b95c7d21dcd] target/i386: provide 3-operand versions of unary scalar helpers
$ git bisect good
binäre Suche: danach noch 0 Commits zum Testen übrig (ungefähr 1 Schritt)
[b98f886c8f8661773047197d132efec97810b37a] target/i386: Introduce 256-bit vector helpers
$ git bisect good
92ec056a6b2fc5d5a5593121c5d9475d2a2461d6 is the first bad commit
commit 92ec056a6b2fc5d5a5593121c5d9475d2a2461d6
Author: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue Sep 20 05:42:45 2022 -0400
target/i386: reimplement 0x0f 0x60-0x6f, add AVX
These are both MMX and SSE/AVX instructions, except for vmovdqu. In both
cases the inputs and output is in s->ptr{0,1,2}, so the only difference
between MMX, SSE, and AVX is which helper to call.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/tcg/decode-new.c.inc | 42 ++++++++
target/i386/tcg/emit.c.inc | 202 +++++++++++++++++++++++++++++++++++++++
target/i386/tcg/translate.c | 19 +++-
3 files changed, 262 insertions(+), 1 deletion(-)