[PATCH for-8.0 6/7] hw/intc/xics: Convert TYPE_ICS to 3-phase reset

2022-11-25 Thread Peter Maydell
Convert the TYPE_ICS class to 3-phase reset; this will allow us
to convert the TYPE_PHB3_MSI class which inherits from it.

Signed-off-by: Peter Maydell 
---
 hw/intc/xics.c | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index dd130467ccc..c7f8abd71e4 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -564,9 +564,9 @@ static void ics_reset_irq(ICSIRQState *irq)
 irq->saved_priority = 0xff;
 }
 
-static void ics_reset(DeviceState *dev)
+static void ics_reset_hold(Object *obj)
 {
-ICSState *ics = ICS(dev);
+ICSState *ics = ICS(obj);
 g_autofree uint8_t *flags = g_malloc(ics->nr_irqs);
 int i;
 
@@ -584,7 +584,7 @@ static void ics_reset(DeviceState *dev)
 if (kvm_irqchip_in_kernel()) {
 Error *local_err = NULL;
 
-ics_set_kvm_state(ICS(dev), &local_err);
+ics_set_kvm_state(ics, &local_err);
 if (local_err) {
 error_report_err(local_err);
 }
@@ -688,16 +688,17 @@ static Property ics_properties[] = {
 static void ics_class_init(ObjectClass *klass, void *data)
 {
 DeviceClass *dc = DEVICE_CLASS(klass);
+ResettableClass *rc = RESETTABLE_CLASS(klass);
 
 dc->realize = ics_realize;
 device_class_set_props(dc, ics_properties);
-dc->reset = ics_reset;
 dc->vmsd = &vmstate_ics;
 /*
  * Reason: part of XICS interrupt controller, needs to be wired up,
  * e.g. by spapr_irq_init().
  */
 dc->user_creatable = false;
+rc->phases.hold = ics_reset_hold;
 }
 
 static const TypeInfo ics_info = {
-- 
2.25.1




Re: [PATCH for-8.0 6/7] hw/intc/xics: Convert TYPE_ICS to 3-phase reset

2022-11-25 Thread Cédric Le Goater

On 11/25/22 12:52, Peter Maydell wrote:

Convert the TYPE_ICS class to 3-phase reset; this will allow us
to convert the TYPE_PHB3_MSI class which inherits from it.

Signed-off-by: Peter Maydell 



Reviewed-by: Cédric Le Goater 

Thanks,

C.


---
  hw/intc/xics.c | 9 +
  1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index dd130467ccc..c7f8abd71e4 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -564,9 +564,9 @@ static void ics_reset_irq(ICSIRQState *irq)
  irq->saved_priority = 0xff;
  }
  
-static void ics_reset(DeviceState *dev)

+static void ics_reset_hold(Object *obj)
  {
-ICSState *ics = ICS(dev);
+ICSState *ics = ICS(obj);
  g_autofree uint8_t *flags = g_malloc(ics->nr_irqs);
  int i;
  
@@ -584,7 +584,7 @@ static void ics_reset(DeviceState *dev)

  if (kvm_irqchip_in_kernel()) {
  Error *local_err = NULL;
  
-ics_set_kvm_state(ICS(dev), &local_err);

+ics_set_kvm_state(ics, &local_err);
  if (local_err) {
  error_report_err(local_err);
  }
@@ -688,16 +688,17 @@ static Property ics_properties[] = {
  static void ics_class_init(ObjectClass *klass, void *data)
  {
  DeviceClass *dc = DEVICE_CLASS(klass);
+ResettableClass *rc = RESETTABLE_CLASS(klass);
  
  dc->realize = ics_realize;

  device_class_set_props(dc, ics_properties);
-dc->reset = ics_reset;
  dc->vmsd = &vmstate_ics;
  /*
   * Reason: part of XICS interrupt controller, needs to be wired up,
   * e.g. by spapr_irq_init().
   */
  dc->user_creatable = false;
+rc->phases.hold = ics_reset_hold;
  }
  
  static const TypeInfo ics_info = {





Re: [PATCH for-8.0 6/7] hw/intc/xics: Convert TYPE_ICS to 3-phase reset

2022-11-25 Thread Greg Kurz
On Fri, 25 Nov 2022 11:52:39 +
Peter Maydell  wrote:

> Convert the TYPE_ICS class to 3-phase reset; this will allow us
> to convert the TYPE_PHB3_MSI class which inherits from it.
> 
> Signed-off-by: Peter Maydell 
> ---

Reviewed-by: Greg Kurz 

>  hw/intc/xics.c | 9 +
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index dd130467ccc..c7f8abd71e4 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -564,9 +564,9 @@ static void ics_reset_irq(ICSIRQState *irq)
>  irq->saved_priority = 0xff;
>  }
>  
> -static void ics_reset(DeviceState *dev)
> +static void ics_reset_hold(Object *obj)
>  {
> -ICSState *ics = ICS(dev);
> +ICSState *ics = ICS(obj);
>  g_autofree uint8_t *flags = g_malloc(ics->nr_irqs);
>  int i;
>  
> @@ -584,7 +584,7 @@ static void ics_reset(DeviceState *dev)
>  if (kvm_irqchip_in_kernel()) {
>  Error *local_err = NULL;
>  
> -ics_set_kvm_state(ICS(dev), &local_err);
> +ics_set_kvm_state(ics, &local_err);


>  if (local_err) {
>  error_report_err(local_err);
>  }
> @@ -688,16 +688,17 @@ static Property ics_properties[] = {
>  static void ics_class_init(ObjectClass *klass, void *data)
>  {
>  DeviceClass *dc = DEVICE_CLASS(klass);
> +ResettableClass *rc = RESETTABLE_CLASS(klass);
>  
>  dc->realize = ics_realize;
>  device_class_set_props(dc, ics_properties);
> -dc->reset = ics_reset;
>  dc->vmsd = &vmstate_ics;
>  /*
>   * Reason: part of XICS interrupt controller, needs to be wired up,
>   * e.g. by spapr_irq_init().
>   */
>  dc->user_creatable = false;
> +rc->phases.hold = ics_reset_hold;
>  }
>  
>  static const TypeInfo ics_info = {




Re: [PATCH for-8.0 6/7] hw/intc/xics: Convert TYPE_ICS to 3-phase reset

2022-11-30 Thread Philippe Mathieu-Daudé

On 25/11/22 12:52, Peter Maydell wrote:

Convert the TYPE_ICS class to 3-phase reset; this will allow us
to convert the TYPE_PHB3_MSI class which inherits from it.

Signed-off-by: Peter Maydell 
---
  hw/intc/xics.c | 9 +
  1 file changed, 5 insertions(+), 4 deletions(-)


Reviewed-by: Philippe Mathieu-Daudé