aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXianglai Li <lixianglai@loongson.cn>2025-02-12 09:56:19 +0800
committerBibo Mao <maobibo@loongson.cn>2025-02-25 16:04:22 +0800
commitb61b9d891305abf8fe37f07280ca5a99a10da6cf (patch)
tree114440f38ccc9ea693cfa81829bfe70d5c0fbd92
parentb69801dd6b1eb4d107f7c2f643adf0a4e3ec9124 (diff)
downloadqemu-b61b9d891305abf8fe37f07280ca5a99a10da6cf.zip
qemu-b61b9d891305abf8fe37f07280ca5a99a10da6cf.tar.gz
qemu-b61b9d891305abf8fe37f07280ca5a99a10da6cf.tar.bz2
target/loongarch: fix vcpu reset command word issue
When the KVM_REG_LOONGARCH_VCPU_RESET command word is sent to the kernel through the kvm_set_one_reg interface, the parameter source needs to be a legal address, otherwise the kernel will return an error and the command word will fail to be sent. Signed-off-by: Xianglai Li <lixianglai@loongson.cn> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Bibo Mao <maobibo@loongson.cn>
-rw-r--r--target/loongarch/kvm/kvm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c
index a3f5515..27df02f 100644
--- a/target/loongarch/kvm/kvm.c
+++ b/target/loongarch/kvm/kvm.c
@@ -581,9 +581,16 @@ static int kvm_loongarch_get_lbt(CPUState *cs)
void kvm_arch_reset_vcpu(CPUState *cs)
{
CPULoongArchState *env = cpu_env(cs);
+ int ret = 0;
+ uint64_t unused = 0;
env->mp_state = KVM_MP_STATE_RUNNABLE;
- kvm_set_one_reg(cs, KVM_REG_LOONGARCH_VCPU_RESET, 0);
+ ret = kvm_set_one_reg(cs, KVM_REG_LOONGARCH_VCPU_RESET, &unused);
+ if (ret) {
+ error_report("Failed to set KVM_REG_LOONGARCH_VCPU_RESET: %s",
+ strerror(errno));
+ exit(EXIT_FAILURE);
+ }
}
static int kvm_loongarch_get_mpstate(CPUState *cs)