When comparing the KVM implementations, RISCV and ARM differ
from S390x / PPC and LoongArch. The caller expects a non-zero
value to return pausing execution with the EXCP_HLT exception:
3427 int kvm_cpu_exec(CPUState *cpu)
3428 {
...
3434 if (kvm_arch_process_async_events(cpu)) {
3435 return EXCP_HLT;
3436 }
3437
3438 bql_unlock();
3439 cpu_exec_start(cpu);
3440
3441 /* Inner vCPU loop */
3442 do {
...
Change ARM and RISC-V to return cs->halted for consistent behavior.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
target/arm/kvm.c | 2 +-
target/riscv/kvm/kvm-cpu.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index d40a6a98591..5caabfab63f 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -1575,7 +1575,7 @@ bool kvm_arch_stop_on_emulation_error(CPUState *cs)
int kvm_arch_process_async_events(CPUState *cs)
{
- return 0;
+ return cs->halted;
}
/**
diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
index 97069bf597a..1a61cd5ef37 100644
--- a/target/riscv/kvm/kvm-cpu.c
+++ b/target/riscv/kvm/kvm-cpu.c
@@ -1568,7 +1568,7 @@ int kvm_arch_irqchip_create(KVMState *s)
int kvm_arch_process_async_events(CPUState *cs)
{
- return 0;
+ return cs->halted;
}
void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
--
2.53.0