diff mbox series

[v3,12/15] spapr/irq: remove spapr_ics_create()

Message ID 20190321144914.19934-13-clg@kaod.org (mailing list archive)
State New, archived
Headers show
Series spapr: add KVM support to the XIVE interrupt mode | expand

Commit Message

Cédric Le Goater March 21, 2019, 2:49 p.m. UTC
spapr_ics_create() is only called once. Merge it in spapr_irq_init_xics()
and simplify a bit the error handling by using 'error_fatal' .

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 hw/ppc/spapr_irq.c | 44 ++++++++++++++------------------------------
 1 file changed, 14 insertions(+), 30 deletions(-)

Comments

David Gibson March 22, 2019, 1:06 a.m. UTC | #1
On Thu, Mar 21, 2019 at 03:49:11PM +0100, Cédric Le Goater wrote:
> spapr_ics_create() is only called once. Merge it in spapr_irq_init_xics()
> and simplify a bit the error handling by using 'error_fatal' .
> 
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Seems like a good cleanup, regardless of the rest.  Applied to ppc-for-4.1.

> ---
>  hw/ppc/spapr_irq.c | 44 ++++++++++++++------------------------------
>  1 file changed, 14 insertions(+), 30 deletions(-)
> 
> diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
> index b4e3128b7f06..d7130f66dbaa 100644
> --- a/hw/ppc/spapr_irq.c
> +++ b/hw/ppc/spapr_irq.c
> @@ -66,36 +66,11 @@ void spapr_irq_msi_reset(SpaprMachineState *spapr)
>   * XICS IRQ backend.
>   */
>  
> -static ICSState *spapr_ics_create(SpaprMachineState *spapr,
> -                                  int nr_irqs, Error **errp)
> -{
> -    Error *local_err = NULL;
> -    Object *obj;
> -
> -    obj = object_new(TYPE_ICS_SIMPLE);
> -    object_property_add_child(OBJECT(spapr), "ics", obj, &error_abort);
> -    object_property_add_const_link(obj, ICS_PROP_XICS, OBJECT(spapr),
> -                                   &error_abort);
> -    object_property_set_int(obj, nr_irqs, "nr-irqs", &local_err);
> -    if (local_err) {
> -        goto error;
> -    }
> -    object_property_set_bool(obj, true, "realized", &local_err);
> -    if (local_err) {
> -        goto error;
> -    }
> -
> -    return ICS_BASE(obj);
> -
> -error:
> -    error_propagate(errp, local_err);
> -    return NULL;
> -}
> -
>  static void spapr_irq_init_xics(SpaprMachineState *spapr, int nr_irqs,
>                                  Error **errp)
>  {
>      MachineState *machine = MACHINE(spapr);
> +    Object *obj;
>      Error *local_err = NULL;
>      bool xics_kvm = false;
>  
> @@ -107,7 +82,8 @@ static void spapr_irq_init_xics(SpaprMachineState *spapr, int nr_irqs,
>          if (machine_kernel_irqchip_required(machine) && !xics_kvm) {
>              error_prepend(&local_err,
>                            "kernel_irqchip requested but unavailable: ");
> -            goto error;
> +            error_propagate(errp, local_err);
> +            return;
>          }
>          error_free(local_err);
>          local_err = NULL;
> @@ -117,10 +93,18 @@ static void spapr_irq_init_xics(SpaprMachineState *spapr, int nr_irqs,
>          xics_spapr_init(spapr);
>      }
>  
> -    spapr->ics = spapr_ics_create(spapr, nr_irqs, &local_err);
> +    obj = object_new(TYPE_ICS_SIMPLE);
> +    object_property_add_child(OBJECT(spapr), "ics", obj, &error_abort);
> +    object_property_add_const_link(obj, ICS_PROP_XICS, OBJECT(spapr),
> +                                   &error_fatal);
> +    object_property_set_int(obj, nr_irqs, "nr-irqs",  &error_fatal);
> +    object_property_set_bool(obj, true, "realized", &local_err);
> +    if (local_err) {
> +        error_propagate(errp, local_err);
> +        return;
> +    }
>  
> -error:
> -    error_propagate(errp, local_err);
> +    spapr->ics = ICS_BASE(obj);
>  }
>  
>  #define ICS_IRQ_FREE(ics, srcno)   \
diff mbox series

Patch

diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
index b4e3128b7f06..d7130f66dbaa 100644
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@ -66,36 +66,11 @@  void spapr_irq_msi_reset(SpaprMachineState *spapr)
  * XICS IRQ backend.
  */
 
-static ICSState *spapr_ics_create(SpaprMachineState *spapr,
-                                  int nr_irqs, Error **errp)
-{
-    Error *local_err = NULL;
-    Object *obj;
-
-    obj = object_new(TYPE_ICS_SIMPLE);
-    object_property_add_child(OBJECT(spapr), "ics", obj, &error_abort);
-    object_property_add_const_link(obj, ICS_PROP_XICS, OBJECT(spapr),
-                                   &error_abort);
-    object_property_set_int(obj, nr_irqs, "nr-irqs", &local_err);
-    if (local_err) {
-        goto error;
-    }
-    object_property_set_bool(obj, true, "realized", &local_err);
-    if (local_err) {
-        goto error;
-    }
-
-    return ICS_BASE(obj);
-
-error:
-    error_propagate(errp, local_err);
-    return NULL;
-}
-
 static void spapr_irq_init_xics(SpaprMachineState *spapr, int nr_irqs,
                                 Error **errp)
 {
     MachineState *machine = MACHINE(spapr);
+    Object *obj;
     Error *local_err = NULL;
     bool xics_kvm = false;
 
@@ -107,7 +82,8 @@  static void spapr_irq_init_xics(SpaprMachineState *spapr, int nr_irqs,
         if (machine_kernel_irqchip_required(machine) && !xics_kvm) {
             error_prepend(&local_err,
                           "kernel_irqchip requested but unavailable: ");
-            goto error;
+            error_propagate(errp, local_err);
+            return;
         }
         error_free(local_err);
         local_err = NULL;
@@ -117,10 +93,18 @@  static void spapr_irq_init_xics(SpaprMachineState *spapr, int nr_irqs,
         xics_spapr_init(spapr);
     }
 
-    spapr->ics = spapr_ics_create(spapr, nr_irqs, &local_err);
+    obj = object_new(TYPE_ICS_SIMPLE);
+    object_property_add_child(OBJECT(spapr), "ics", obj, &error_abort);
+    object_property_add_const_link(obj, ICS_PROP_XICS, OBJECT(spapr),
+                                   &error_fatal);
+    object_property_set_int(obj, nr_irqs, "nr-irqs",  &error_fatal);
+    object_property_set_bool(obj, true, "realized", &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return;
+    }
 
-error:
-    error_propagate(errp, local_err);
+    spapr->ics = ICS_BASE(obj);
 }
 
 #define ICS_IRQ_FREE(ics, srcno)   \