]> git.ipfire.org Git - thirdparty/qemu.git/commit
target/riscv: fix riscv_cpu_sirq_pending() mask
authorDaniel Henrique Barboza <dbarboza@ventanamicro.com>
Wed, 22 Oct 2025 12:43:40 +0000 (09:43 -0300)
committerAlistair Francis <alistair.francis@wdc.com>
Thu, 23 Oct 2025 23:24:08 +0000 (09:24 +1000)
commit06e01941ffca3c246a9770f477e43118793fde59
treec5d8ae858a9168941cd493dc98cb7fd284edef9e
parentf131f10b63fac3bfa8f96c67a446c36bfcccbe6a
target/riscv: fix riscv_cpu_sirq_pending() mask

We're filtering out (MIP_VSSIP | MIP_VSTIP | MIP_VSEIP) from S-mode
pending interrupts without apparent reason. There's no special treatment
for these ints as far as the spec goes, and this filtering is causing
read_stopi() to miss those VS interrupts [1].

We shouldn't return delegated VS interrupts in S-mode though, so change
the current mask with "~env->hideleg". Note that this is the same
handling we're doing in riscv_cpu_mirq_pending() and env->mideleg.

[1] https://gitlab.com/qemu-project/qemu/-/issues/2820

Closes: https://gitlab.com/qemu-project/qemu/-/issues/2820
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20251022124340.493358-1-dbarboza@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Cc: qemu-stable@nongnu.org
target/riscv/cpu_helper.c