Hi Eric, On Thu, Oct 29, 2026 at 10:20:18AM +0100, Eric Auger wrote: > Pass an error handle to kvm_arm_init_cpreg_list(). A Subsequent patch > will do the same with kvm_arch_init_vcpu(). > > Signed-off-by: Eric Auger <[email protected]> > --- > target/arm/kvm.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/target/arm/kvm.c b/target/arm/kvm.c > index 28f199c03f..d454346037 100644 > --- a/target/arm/kvm.c > +++ b/target/arm/kvm.c > @@ -872,6 +872,7 @@ static bool kvm_arm_reg_syncs_via_cpreg_list(uint64_t > regidx) > /** > * kvm_arm_init_cpreg_list: > * @cpu: ARMCPU > + * @errp: Error handle > * > * Initialize the ARMCPU cpreg list according to the kernel's > * definition of what CPU registers it knows about (and throw away > @@ -879,7 +880,7 @@ static bool kvm_arm_reg_syncs_via_cpreg_list(uint64_t > regidx) > * > * Returns: 0 if success, else < 0 error code > */ > -static int kvm_arm_init_cpreg_list(ARMCPU *cpu) > +static int kvm_arm_init_cpreg_list(ARMCPU *cpu, Error **errp) > { > struct kvm_reg_list rl; > struct kvm_reg_list *rlp; > @@ -889,12 +890,17 @@ static int kvm_arm_init_cpreg_list(ARMCPU *cpu) > rl.n = 0; > ret = kvm_vcpu_ioctl(cs, KVM_GET_REG_LIST, &rl); > if (ret != -E2BIG) { > + if (ret < 0) { > + error_setg_errno(errp, -ret, > + "failed to get KVM register list size"); > + } > return ret; > } > rlp = g_malloc(sizeof(struct kvm_reg_list) + rl.n * sizeof(uint64_t)); > rlp->n = rl.n; > ret = kvm_vcpu_ioctl(cs, KVM_GET_REG_LIST, rlp); > if (ret) { > + error_setg_errno(errp, -ret, "failed to get KVM register list"); > goto out; > } > /* Sort the list we get back from the kernel, since cpreg_tuples > @@ -911,7 +917,7 @@ static int kvm_arm_init_cpreg_list(ARMCPU *cpu) > case KVM_REG_SIZE_U64: > break; > default: > - fprintf(stderr, "Can't handle size of register in kernel > list\n"); > + error_setg(errp, "Can't handle size of register in kernel list"); > ret = -EINVAL; > goto out; > } > @@ -937,7 +943,7 @@ static int kvm_arm_init_cpreg_list(ARMCPU *cpu) > /* Shouldn't happen unless kernel is inconsistent about > * what registers exist. > */ > - fprintf(stderr, "Initial read of kernel register state failed\n"); > + error_setg(errp, "Initial read of kernel register state failed"); > ret = -EINVAL; > goto out; > } > @@ -2015,6 +2021,7 @@ int kvm_arch_init_vcpu(CPUState *cs) > uint64_t mpidr; > ARMCPU *cpu = ARM_CPU(cs); > CPUARMState *env = &cpu->env; > + Error *local_err = NULL; > uint64_t psciver; > > if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE) { > @@ -2113,7 +2120,11 @@ int kvm_arch_init_vcpu(CPUState *cs) > SET_IDREG(&cpu->isar, MPIDR, mpidr); > cpu->mp_affinity = mpidr & ARM64_AFFINITY_MASK; > > - return kvm_arm_init_cpreg_list(cpu); > + ret = kvm_arm_init_cpreg_list(cpu, &local_err); > + if (ret < 0) { > + error_report_err(local_err); > + } > + return ret; > } > > int kvm_arch_destroy_vcpu(CPUState *cs) > -- > 2.53.0 > >
Reviewed-by: Gustavo Romero <[email protected]> Cheers, Gustavo
