target/loongarch/kvm/kvm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
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>
---
Cc: Bibo Mao <Maobibo@loongson.cn>
Cc: Philippe Mathieu-Daudé <philmd@linaro.org>
Cc: Song Gao <gaosong@loongson.cn>
Cc: Xianglai Li <lixianglai@loongson.cn>
CHANGE:
V3<-V2:
Optimize log output when function calls fail and exit the process
directly.
V2<-V1:
1.Sets the initial value of the variable and
adds a function return value judgment and prints a log
target/loongarch/kvm/kvm.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
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)
--
2.39.1
On 12/2/25 02:56, Xianglai Li wrote: > 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> > --- > Cc: Bibo Mao <Maobibo@loongson.cn> > Cc: Philippe Mathieu-Daudé <philmd@linaro.org> > Cc: Song Gao <gaosong@loongson.cn> > Cc: Xianglai Li <lixianglai@loongson.cn> > > CHANGE: > V3<-V2: > Optimize log output when function calls fail and exit the process > directly. > > V2<-V1: > 1.Sets the initial value of the variable and > adds a function return value judgment and prints a log > > target/loongarch/kvm/kvm.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > 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); > + } > } Look good now, thanks! Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 2025/2/12 下午3:30, Philippe Mathieu-Daudé wrote: > On 12/2/25 02:56, Xianglai Li wrote: >> 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> >> --- >> Cc: Bibo Mao <Maobibo@loongson.cn> >> Cc: Philippe Mathieu-Daudé <philmd@linaro.org> >> Cc: Song Gao <gaosong@loongson.cn> >> Cc: Xianglai Li <lixianglai@loongson.cn> >> >> CHANGE: >> V3<-V2: >> Optimize log output when function calls fail and exit the process >> directly. >> >> V2<-V1: >> 1.Sets the initial value of the variable and >> adds a function return value judgment and prints a log >> >> target/loongarch/kvm/kvm.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> 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); >> + } >> } > > Look good now, thanks! > > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Queued in loongarch-next. Regards Bibo Mao
© 2016 - 2025 Red Hat, Inc.