other: 0.160 device: 0.156 semantic: 0.147 PID: 0.072 performance: 0.070 graphic: 0.061 debug: 0.059 permissions: 0.049 vnc: 0.047 socket: 0.045 network: 0.038 boot: 0.035 files: 0.034 KVM: 0.026 debug: 0.549 other: 0.075 files: 0.066 device: 0.053 semantic: 0.049 boot: 0.037 performance: 0.035 PID: 0.031 permissions: 0.024 socket: 0.022 vnc: 0.018 network: 0.016 graphic: 0.016 KVM: 0.010 RISC-V unreliable IPIs I am working on a project with custom inter processor interrupts (IPIs) on the RISC-V virt machine. After upgrading from version 3.1.0 to 4.1.0 which fixes a related issue (https://github.com/riscv/riscv-qemu/issues/132) I am able to use the CPU hotplug feature. However, if I try to use IPIs for communication between two cores, the wfi instruction behaves strangely. Either it does not return, or it returns on timer interrupts, even though they are disabled. The code, I use on one core to wait for an interrupt is the following. csr_clear(sie, SIE_SEIE | SIE_STIE); do { wait_for_interrupt(); sipval = csr_read(sip); sieval = csr_read(sie); scauseval = csr_read(scause) & 0xFF; /* only break if wfi returns for an software interrupt */ } while ((sipval & sieval) == 0 && scauseval != 1); csr_set(sie, SIE_SEIE | SIE_STIE); Since the resulting sequence does not seem to be deterministic, my guess is, that it has something to do with the communication of qemu's threads for the different cores. Can you post a whole program that reproduces this? freedom-e-sdk will run bare-metal code on QEMU if you don't want to post the rest of the surrounding infrastructure. I created a minimal example from my setup. I'm running a kernel 4.19.57 with a custom firmware based on bbl (https://github.com/riscv/riscv-pk). An ioctl device from a kernel module is used to execute the code above in kernel space. In the example, the userspace application proceeds after a couple of seconds without receiving the custom IPI. The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now. If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or please mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience. [Expired for QEMU because there has been no activity for 60 days.]