diff mbox series

[for-8.0,7/7] hw/pci-host/pnv_phb3_msi: Convert TYPE_PHB3_MSI to 3-phase reset

Message ID 20221125115240.3005559-8-peter.maydell@linaro.org (mailing list archive)
State New, archived
Headers show
Series virtio, pci, xics: 3-phase reset conversions | expand

Commit Message

Peter Maydell Nov. 25, 2022, 11:52 a.m. UTC
Convert the TYPE_PHB3_MSI class to 3-phase reset, so we can
avoid using the device_class_set_parent_reset() function.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 include/hw/ppc/xics.h      |  2 +-
 hw/pci-host/pnv_phb3_msi.c | 15 +++++++++------
 2 files changed, 10 insertions(+), 7 deletions(-)

Comments

Cédric Le Goater Nov. 25, 2022, 12:25 p.m. UTC | #1
On 11/25/22 12:52, Peter Maydell wrote:
> Convert the TYPE_PHB3_MSI class to 3-phase reset, so we can
> avoid using the device_class_set_parent_reset() function.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.

> ---
>   include/hw/ppc/xics.h      |  2 +-
>   hw/pci-host/pnv_phb3_msi.c | 15 +++++++++------
>   2 files changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
> index 00b80b08c27..95ead0dd7c9 100644
> --- a/include/hw/ppc/xics.h
> +++ b/include/hw/ppc/xics.h
> @@ -95,7 +95,7 @@ struct ICSStateClass {
>       DeviceClass parent_class;
>   
>       DeviceRealize parent_realize;
> -    DeviceReset parent_reset;
> +    ResettablePhases parent_phases;
>   
>       void (*reject)(ICSState *s, uint32_t irq);
>       void (*resend)(ICSState *s);
> diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c
> index ae908fd9e41..41e63b066f9 100644
> --- a/hw/pci-host/pnv_phb3_msi.c
> +++ b/hw/pci-host/pnv_phb3_msi.c
> @@ -228,12 +228,14 @@ static void phb3_msi_resend(ICSState *ics)
>       }
>   }
>   
> -static void phb3_msi_reset(DeviceState *dev)
> +static void phb3_msi_reset_hold(Object *obj)
>   {
> -    Phb3MsiState *msi = PHB3_MSI(dev);
> -    ICSStateClass *icsc = ICS_GET_CLASS(dev);
> +    Phb3MsiState *msi = PHB3_MSI(obj);
> +    ICSStateClass *icsc = ICS_GET_CLASS(obj);
>   
> -    icsc->parent_reset(dev);
> +    if (icsc->parent_phases.hold) {
> +        icsc->parent_phases.hold(obj);
> +    }
>   
>       memset(msi->rba, 0, sizeof(msi->rba));
>       msi->rba_sum = 0;
> @@ -287,11 +289,12 @@ static void phb3_msi_class_init(ObjectClass *klass, void *data)
>   {
>       DeviceClass *dc = DEVICE_CLASS(klass);
>       ICSStateClass *isc = ICS_CLASS(klass);
> +    ResettableClass *rc = RESETTABLE_CLASS(klass);
>   
>       device_class_set_parent_realize(dc, phb3_msi_realize,
>                                       &isc->parent_realize);
> -    device_class_set_parent_reset(dc, phb3_msi_reset,
> -                                  &isc->parent_reset);
> +    resettable_class_set_parent_phases(rc, NULL, phb3_msi_reset_hold, NULL,
> +                                       &isc->parent_phases);
>   
>       isc->reject = phb3_msi_reject;
>       isc->resend = phb3_msi_resend;
Philippe Mathieu-Daudé Nov. 30, 2022, 10:23 a.m. UTC | #2
On 25/11/22 12:52, Peter Maydell wrote:
> Convert the TYPE_PHB3_MSI class to 3-phase reset, so we can
> avoid using the device_class_set_parent_reset() function.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>   include/hw/ppc/xics.h      |  2 +-
>   hw/pci-host/pnv_phb3_msi.c | 15 +++++++++------
>   2 files changed, 10 insertions(+), 7 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff mbox series

Patch

diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index 00b80b08c27..95ead0dd7c9 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -95,7 +95,7 @@  struct ICSStateClass {
     DeviceClass parent_class;
 
     DeviceRealize parent_realize;
-    DeviceReset parent_reset;
+    ResettablePhases parent_phases;
 
     void (*reject)(ICSState *s, uint32_t irq);
     void (*resend)(ICSState *s);
diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c
index ae908fd9e41..41e63b066f9 100644
--- a/hw/pci-host/pnv_phb3_msi.c
+++ b/hw/pci-host/pnv_phb3_msi.c
@@ -228,12 +228,14 @@  static void phb3_msi_resend(ICSState *ics)
     }
 }
 
-static void phb3_msi_reset(DeviceState *dev)
+static void phb3_msi_reset_hold(Object *obj)
 {
-    Phb3MsiState *msi = PHB3_MSI(dev);
-    ICSStateClass *icsc = ICS_GET_CLASS(dev);
+    Phb3MsiState *msi = PHB3_MSI(obj);
+    ICSStateClass *icsc = ICS_GET_CLASS(obj);
 
-    icsc->parent_reset(dev);
+    if (icsc->parent_phases.hold) {
+        icsc->parent_phases.hold(obj);
+    }
 
     memset(msi->rba, 0, sizeof(msi->rba));
     msi->rba_sum = 0;
@@ -287,11 +289,12 @@  static void phb3_msi_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
     ICSStateClass *isc = ICS_CLASS(klass);
+    ResettableClass *rc = RESETTABLE_CLASS(klass);
 
     device_class_set_parent_realize(dc, phb3_msi_realize,
                                     &isc->parent_realize);
-    device_class_set_parent_reset(dc, phb3_msi_reset,
-                                  &isc->parent_reset);
+    resettable_class_set_parent_phases(rc, NULL, phb3_msi_reset_hold, NULL,
+                                       &isc->parent_phases);
 
     isc->reject = phb3_msi_reject;
     isc->resend = phb3_msi_resend;