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


Reply via email to