]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
riscv: KVM: Fix hart suspend status check
authorAndrew Jones <ajones@ventanamicro.com>
Mon, 17 Feb 2025 08:45:08 +0000 (09:45 +0100)
committerAnup Patel <anup@brainfault.org>
Mon, 17 Feb 2025 10:58:27 +0000 (16:28 +0530)
"Not stopped" means started or suspended so we need to check for
a single state in order to have a chance to check for each state.
Also, we need to use target_vcpu when checking for the suspend
state.

Fixes: 763c8bed8c05 ("RISC-V: KVM: Implement SBI HSM suspend call")
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20250217084506.18763-8-ajones@ventanamicro.com
Signed-off-by: Anup Patel <anup@brainfault.org>
arch/riscv/kvm/vcpu_sbi_hsm.c

index dce667f4b6ab08d023f54ac64cf072b65118bc1b..13a35eb77e8e353ae66f8832f78ec549df6fd892 100644 (file)
@@ -79,12 +79,12 @@ static int kvm_sbi_hsm_vcpu_get_status(struct kvm_vcpu *vcpu)
        target_vcpu = kvm_get_vcpu_by_id(vcpu->kvm, target_vcpuid);
        if (!target_vcpu)
                return SBI_ERR_INVALID_PARAM;
-       if (!kvm_riscv_vcpu_stopped(target_vcpu))
-               return SBI_HSM_STATE_STARTED;
-       else if (vcpu->stat.generic.blocking)
+       if (kvm_riscv_vcpu_stopped(target_vcpu))
+               return SBI_HSM_STATE_STOPPED;
+       else if (target_vcpu->stat.generic.blocking)
                return SBI_HSM_STATE_SUSPENDED;
        else
-               return SBI_HSM_STATE_STOPPED;
+               return SBI_HSM_STATE_STARTED;
 }
 
 static int kvm_sbi_ext_hsm_handler(struct kvm_vcpu *vcpu, struct kvm_run *run,