qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] [PATCH 03/25] spapr: introduce a spapr_icp_c


From: Greg Kurz
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 03/25] spapr: introduce a spapr_icp_create() helper
Date: Fri, 24 Nov 2017 11:09:27 +0100

On Thu, 23 Nov 2017 14:29:33 +0100
Cédric Le Goater <address@hidden> wrote:

> On sPAPR, the creation of the interrupt presenter depends on some of
> the machine attributes. When the XIVE interrupt mode is available,
> this will get more complex. So provide a machine-level helper to
> isolate the process and hide the details to the sPAPR core realize
> function.
> 

Not sure it makes sense to introduce this helper that early in the series...
what about folding it in patch 23 where it is really needed ?

> Signed-off-by: Cédric Le Goater <address@hidden>
> ---
>  hw/ppc/spapr.c          | 14 ++++++++++++++
>  hw/ppc/spapr_cpu_core.c |  2 +-
>  include/hw/ppc/spapr.h  |  2 ++
>  3 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 174e7ff0678d..925cbd3c1bf4 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3556,6 +3556,20 @@ static ICPState *spapr_icp_get(XICSFabric *xi, int 
> vcpu_id)
>      return cpu ? ICP(cpu->intc) : NULL;
>  }
>  
> +Object *spapr_icp_create(sPAPRMachineState *spapr, CPUState *cs, Error 
> **errp)
> +{
> +    Error *local_err = NULL;
> +    Object *obj;
> +
> +    obj = icp_create(cs, spapr->icp_type, XICS_FABRIC(spapr), &local_err);
> +    if (local_err) {
> +        error_propagate(errp, local_err);
> +        return NULL;
> +    }
> +
> +    return obj;
> +}
> +
>  static void spapr_pic_print_info(InterruptStatsProvider *obj,
>                                   Monitor *mon)
>  {
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index f7cc74512481..61a9850e688b 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -122,7 +122,7 @@ static void spapr_cpu_core_realize_child(Object *child,
>          goto error;
>      }
>  
> -    cpu->intc = icp_create(cs, spapr->icp_type, XICS_FABRIC(spapr), 
> &local_err);
> +    cpu->intc = spapr_icp_create(spapr, cs, &local_err);
>      if (local_err) {
>          goto error;
>      }
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index 9d21ca9bde3a..9da38de34277 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -707,4 +707,6 @@ void spapr_do_system_reset_on_cpu(CPUState *cs, 
> run_on_cpu_data arg);
>  int spapr_vcpu_id(PowerPCCPU *cpu);
>  PowerPCCPU *spapr_find_cpu(int vcpu_id);
>  
> +Object *spapr_icp_create(sPAPRMachineState *spapr, CPUState *cs, Error 
> **errp);
> +
>  #endif /* HW_SPAPR_H */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]