Regression in 7.2.0rc3: No snow by efi firmware in advent calendar 2020, door 15 anymore 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 92ec056a6b2fc5d5a5593121c5d9475d2a2461d6 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 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 Signed-off-by: Paolo Bonzini 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(-) ```