Re: [PATCH 06/11] ppc/pnv: make pnv_ics_resend() use chip8->phbs[]
On 6/14/22 06:24, Frederic Barrat wrote: On 13/06/2022 17:44, Daniel Henrique Barboza wrote: pnv_ics_resend() is scrolling through all the child objects of the chip to search for the PHBs. It's faster and simpler to just use the phbs[] array. pnv_ics_resend_child() was folded into pnv_ics_resend() since it's too simple to justify its own function. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/pnv.c | 22 +++--- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 05a8d5034f..d70deffa1d 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1993,28 +1993,20 @@ PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id) return NULL; } -static int pnv_ics_resend_child(Object *child, void *opaque) -{ - PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3); - - if (phb3) { - ics_resend(>lsis); - ics_resend(ICS(>msis)); - } - return 0; -} - static void pnv_ics_resend(XICSFabric *xi) { PnvMachineState *pnv = PNV_MACHINE(xi); - int i; + int i, j; for (i = 0; i < pnv->num_chips; i++) { - PnvChip *chip = pnv->chips[i]; Pnv8Chip *chip8 = PNV8_CHIP(pnv->chips[i]); - ics_resend(>psi.ics); That line shouldn't be dropped, right? ooo. It shouldn't. I'll fix it in the v2. It didn't break anything I could see though. OS boots with network with ping Daniel Fred - object_child_foreach(OBJECT(chip), pnv_ics_resend_child, NULL); + for (j = 0; j < chip8->num_phbs; j++) { + PnvPHB3 *phb3 = >phbs[j]; + + ics_resend(>lsis); + ics_resend(ICS(>msis)); + } } }
Re: [PATCH 06/11] ppc/pnv: make pnv_ics_resend() use chip8->phbs[]
On 6/14/22 11:24, Frederic Barrat wrote: On 13/06/2022 17:44, Daniel Henrique Barboza wrote: pnv_ics_resend() is scrolling through all the child objects of the chip to search for the PHBs. It's faster and simpler to just use the phbs[] array. pnv_ics_resend_child() was folded into pnv_ics_resend() since it's too simple to justify its own function. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/pnv.c | 22 +++--- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 05a8d5034f..d70deffa1d 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1993,28 +1993,20 @@ PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id) return NULL; } -static int pnv_ics_resend_child(Object *child, void *opaque) -{ - PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3); - - if (phb3) { - ics_resend(>lsis); - ics_resend(ICS(>msis)); - } - return 0; -} - static void pnv_ics_resend(XICSFabric *xi) { PnvMachineState *pnv = PNV_MACHINE(xi); - int i; + int i, j; for (i = 0; i < pnv->num_chips; i++) { - PnvChip *chip = pnv->chips[i]; Pnv8Chip *chip8 = PNV8_CHIP(pnv->chips[i]); - ics_resend(>psi.ics); That line shouldn't be dropped, right? yes. that's a typo, which should break the console. C. Fred - object_child_foreach(OBJECT(chip), pnv_ics_resend_child, NULL); + for (j = 0; j < chip8->num_phbs; j++) { + PnvPHB3 *phb3 = >phbs[j]; + + ics_resend(>lsis); + ics_resend(ICS(>msis)); + } } }
Re: [PATCH 06/11] ppc/pnv: make pnv_ics_resend() use chip8->phbs[]
On 13/06/2022 17:44, Daniel Henrique Barboza wrote: pnv_ics_resend() is scrolling through all the child objects of the chip to search for the PHBs. It's faster and simpler to just use the phbs[] array. pnv_ics_resend_child() was folded into pnv_ics_resend() since it's too simple to justify its own function. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/pnv.c | 22 +++--- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 05a8d5034f..d70deffa1d 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1993,28 +1993,20 @@ PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id) return NULL; } -static int pnv_ics_resend_child(Object *child, void *opaque) -{ -PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3); - -if (phb3) { -ics_resend(>lsis); -ics_resend(ICS(>msis)); -} -return 0; -} - static void pnv_ics_resend(XICSFabric *xi) { PnvMachineState *pnv = PNV_MACHINE(xi); -int i; +int i, j; for (i = 0; i < pnv->num_chips; i++) { -PnvChip *chip = pnv->chips[i]; Pnv8Chip *chip8 = PNV8_CHIP(pnv->chips[i]); -ics_resend(>psi.ics); That line shouldn't be dropped, right? Fred -object_child_foreach(OBJECT(chip), pnv_ics_resend_child, NULL); +for (j = 0; j < chip8->num_phbs; j++) { +PnvPHB3 *phb3 = >phbs[j]; + +ics_resend(>lsis); +ics_resend(ICS(>msis)); +} } }
[PATCH 06/11] ppc/pnv: make pnv_ics_resend() use chip8->phbs[]
pnv_ics_resend() is scrolling through all the child objects of the chip to search for the PHBs. It's faster and simpler to just use the phbs[] array. pnv_ics_resend_child() was folded into pnv_ics_resend() since it's too simple to justify its own function. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/pnv.c | 22 +++--- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 05a8d5034f..d70deffa1d 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1993,28 +1993,20 @@ PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id) return NULL; } -static int pnv_ics_resend_child(Object *child, void *opaque) -{ -PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3); - -if (phb3) { -ics_resend(>lsis); -ics_resend(ICS(>msis)); -} -return 0; -} - static void pnv_ics_resend(XICSFabric *xi) { PnvMachineState *pnv = PNV_MACHINE(xi); -int i; +int i, j; for (i = 0; i < pnv->num_chips; i++) { -PnvChip *chip = pnv->chips[i]; Pnv8Chip *chip8 = PNV8_CHIP(pnv->chips[i]); -ics_resend(>psi.ics); -object_child_foreach(OBJECT(chip), pnv_ics_resend_child, NULL); +for (j = 0; j < chip8->num_phbs; j++) { +PnvPHB3 *phb3 = >phbs[j]; + +ics_resend(>lsis); +ics_resend(ICS(>msis)); +} } } -- 2.36.1