Hello Heinrich, Here's my setup:
Hardware: HiFive Premier P550 OS: Ubuntu 24.04.3 LTS Kernel: Linux 6.6.77-2-premier (SiFive official image, from https://github.com/sifiveinc/hifive-premier-p550-ubuntu) QEMU Startup command: qemu-system-riscv64 -smp 4 \ -M virt,acpi=off,pflash0=pflash0,pflash1=pflash1 \ -enable-kvm -m 4096 \ -nographic \ -blockdev node-name=pflash0,driver=file,read-only=on,filename=RISCV_VIRT_CODE.fd \ -blockdev node-name=pflash1,driver=file,filename=RISCV_VIRT_VARS.fd \ -drive if=none,file="$(ls *.qcow2)",format=qcow2,id=hd0 -device virtio-blk-device,drive=hd0 EDK2: 2024.02-2ubuntu0.4 If I start QEMU with a virtual hard disk, EDK2 crashes, but it doesn't when only using pflash. Additionally, if the first boot only uses pflash and the second boot includes the virtual hard disk, there is no problem; but when I copy the .fd file again from /usr/share/qemu-efi-riscv64 and start EDK2 with the hard disk, it crashes (so the issue might be related to RISCV_VIRT_VARS.fd). Oh, by manually typing boot command in EFI shell, I found out that it's EDK2 crashes when loading grub2. Please let me know if you need any additional details. Best regards Mahno -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux-meta-riscv in Ubuntu. https://bugs.launchpad.net/bugs/2077731 Title: [SRU] riscv64 EDK 2 crashes in KVM based emulation Status in edk2 package in Ubuntu: Fix Released Status in linux-meta-riscv package in Ubuntu: Invalid Status in qemu package in Ubuntu: Invalid Status in edk2 source package in Noble: Fix Released Status in linux-meta-riscv source package in Noble: Invalid Status in qemu source package in Noble: Invalid Status in edk2 source package in Oracular: Fix Released Status in linux-meta-riscv source package in Oracular: Invalid Status in qemu source package in Oracular: Invalid Bug description: [ Impact ] When running EDK2 as payload for QEMU using KVM a crash occurs in the VM: $ qemu-system-riscv64 -M virt,acpi=off -accel kvm -m 4096 -nographic -drive if=pflash,format=raw,unit=0,file=RISCV_VIRT_CODE.fd,readonly=on -drive if=pflash,format=raw,unit=1,file=RISCV_VIRT_VARS.fd !!!! RISCV64 Exception Type - 0000000000000002(EXCEPT_RISCV_ILLEGAL_INST) !!!! t0 = 0x00000000083FFFB28 t1 = 0x00000000083238BC8 t2 = 0x00000000000000000 t3 = 0x00000000000000000 t4 = 0x00000000000000000 t5 = 0x00000000000000000 t6 = 0x00000000000000000 s0 = 0x00000000083FFFBC0 s1 = 0x00000000000000000 s2 = 0x00000000000000000 s3 = 0x00000000000000000 s4 = 0x00000000000000000 s5 = 0x00000000000000000 s6 = 0x00000000000000000 s7 = 0x00000000000000000 s8 = 0x00000000000000000 s9 = 0x00000000000000000 s10 = 0x00000000000000000 s11 = 0x00000000000000000 a0 = 0x0000000017E1DDD10 a1 = 0x00000000000000021 a2 = 0x0000000017E1B1A80 a3 = 0x00000000000000032 a4 = 0x00000000000000021 a5 = 0x00000000000000021 a6 = 0x000000000832391E0 a7 = 0x00000000083FFFA64 zero = 0x00000000000000000 ra = 0x0000000017E0AFA08 sp = 0x00000000000000004 gp = 0x00000000000000000 tp = 0x00000000000000000 sepc = 0x0000000017E0B0824 sstatus = 0x00000000200000120 stval = 0x000000000D20787D3 QEMU: Terminated [ Test Plan ] To reproduce the issue: Run RISC-V virtual machine as described in https://wiki.ubuntu.com/RISC-V/QEMU. sudo apt-get update sudo apt-get install qemu-efi-riscv64 qemu-system-misc cp /usr/share/qemu-efi-riscv64/RISCV_VIRT_*.fd . qemu-system-riscv64 \ -M virt,acpi=off -accel tcg -m 1024 \ -nographic \ -drive if=pflash,format=raw,unit=0,file=RISCV_VIRT_CODE.fd,readonly=on \ -drive if=pflash,format=raw,unit=1,file=RISCV_VIRT_VARS.fd # In the EFI shell reset -s sudo modprobe kvm sudo qemu-system-riscv64 \ -M virt,acpi=off -accel kvm -m 1024 \ -nographic \ -drive if=pflash,format=raw,unit=0,file=RISCV_VIRT_CODE.fd,readonly=on \ -drive if=pflash,format=raw,unit=1,file=RISCV_VIRT_VARS.fd # A crash occurs # RISCV64 Exception Type - 0000000000000002(EXCEPT_RISCV_ILLEGAL_INST) # Terminate emulation with <CTRL+A><x> [ Where problems could occur ] The change that has been merged into upstream EDK II with merge request https://github.com/tianocore/edk2/pull/6210 only influences the state of the floating point unit. If the patch were incorrect, it could result in a failure to boot. [ Other Info ] n/a To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/edk2/+bug/2077731/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp

