qemu-devel
[Top][All Lists]
Advanced

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

[PATCH v2 02/16] ppc/pnv: add pnv_get_phb3_child()


From: Daniel Henrique Barboza
Subject: [PATCH v2 02/16] ppc/pnv: add pnv_get_phb3_child()
Date: Tue, 31 May 2022 18:49:03 -0300

The ics and pic related functions in pnv.c relies in the fact that the
child device of the chip is always a PnvPHB3 object. This will change in
the next patches, and the PHB3 will be a child of another device that
will be attached to the pnv8 chip.

To ease the amount of changes done later, on let's create a helper that
retrieves the PnvPHB3 pointer from the child object in these functions.
After that we'll have a single place to change when the chip starts
using the upcoming device instead.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
 hw/ppc/pnv.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 7c08a78d6c..aaf4d241c3 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -652,10 +652,15 @@ static ISABus *pnv_isa_create(PnvChip *chip, Error **errp)
     return PNV_CHIP_GET_CLASS(chip)->isa_create(chip, errp);
 }
 
+static PnvPHB3 *pnv_get_phb3_child(Object *child)
+{
+    return (PnvPHB3 *)object_dynamic_cast(child, TYPE_PNV_PHB3);
+}
+
 static int pnv_chip_power8_pic_print_info_child(Object *child, void *opaque)
 {
     Monitor *mon = opaque;
-    PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3);
+    PnvPHB3 *phb3 = pnv_get_phb3_child(child);
 
     if (phb3) {
         pnv_phb3_msi_pic_print_info(&phb3->msis, mon);
@@ -1942,7 +1947,7 @@ typedef struct ForeachPhb3Args {
 static int pnv_ics_get_child(Object *child, void *opaque)
 {
     ForeachPhb3Args *args = opaque;
-    PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3);
+    PnvPHB3 *phb3 = pnv_get_phb3_child(child);
 
     if (phb3) {
         if (ics_valid_irq(&phb3->lsis, args->irq)) {
@@ -1992,7 +1997,7 @@ PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t 
chip_id)
 
 static int pnv_ics_resend_child(Object *child, void *opaque)
 {
-    PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3);
+    PnvPHB3 *phb3 = pnv_get_phb3_child(child);
 
     if (phb3) {
         ics_resend(&phb3->lsis);
-- 
2.36.1




reply via email to

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