diff options
| author | Xianglai Li <lixianglai@loongson.cn> | 2025-02-12 09:56:19 +0800 |
|---|---|---|
| committer | Bibo Mao <maobibo@loongson.cn> | 2025-02-25 16:04:22 +0800 |
| commit | b61b9d891305abf8fe37f07280ca5a99a10da6cf (patch) | |
| tree | 114440f38ccc9ea693cfa81829bfe70d5c0fbd92 | |
| parent | b69801dd6b1eb4d107f7c2f643adf0a4e3ec9124 (diff) | |
| download | focaccia-qemu-b61b9d891305abf8fe37f07280ca5a99a10da6cf.tar.gz focaccia-qemu-b61b9d891305abf8fe37f07280ca5a99a10da6cf.zip | |
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>
Diffstat (limited to '')
| -rw-r--r-- | target/loongarch/kvm/kvm.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c index a3f55155b0..27df02fa3a 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) |