target/riscv: Improve delivery of guest external interrupts
commit02d9565b92c97af6bac2ff1bb18967a5e95b9694
authorAnup Patel <anup.patel@wdc.com>
Fri, 4 Feb 2022 17:46:40 +0000 (4 23:16 +0530)
committerAlistair Francis <alistair.francis@wdc.com>
Wed, 16 Feb 2022 02:24:18 +0000 (16 12:24 +1000)
treea8fa240303e2707d7a981ba9c9f6000fb78262f6
parentcd032fe75c1f7b24ccad772d50bfb689e7f5835d
target/riscv: Improve delivery of guest external interrupts

The guest external interrupts from an interrupt controller are
delivered only when the Guest/VM is running (i.e. V=1). This means
any guest external interrupt which is triggered while the Guest/VM
is not running (i.e. V=0) will be missed on QEMU resulting in Guest
with sluggish response to serial console input and other I/O events.

To solve this, we check and inject interrupt after setting V=1.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Signed-off-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Frank Chang <frank.chang@sifive.com>
Message-id: 20220204174700.534953-5-anup@brainfault.org
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
target/riscv/cpu_helper.c