On Tue, Sep 30, 2025 at 01:57:17PM +0200, Clément Chigot wrote: > This helper will avoid repeating the MIN/MAX formula everytime the > number of RPUs available is requested. > > Signed-off-by: Clément Chigot <[email protected]>
Reviewed-by: Edgar E. Iglesias <[email protected]> > --- > hw/arm/xlnx-zynqmp.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c > index d7adc070f8..3d8c46986e 100644 > --- a/hw/arm/xlnx-zynqmp.c > +++ b/hw/arm/xlnx-zynqmp.c > @@ -207,14 +207,23 @@ static inline int arm_gic_ppi_index(int cpu_nr, int > ppi_index) > return XLNX_ZYNQMP_GIC_NUM_SPI_INTR + cpu_nr * GIC_INTERNAL + ppi_index; > } > > +static unsigned int xlnx_zynqmp_get_rpu_number(MachineState *ms) > +{ > + /* > + * RPUs will be created only if "-smp" is higher than the maximum > + * of APUs. Round it up to 0 to avoid dealing with negative values. > + */ > + return MAX(0, MIN((int)(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS), > + XLNX_ZYNQMP_NUM_RPU_CPUS)); > +} > + > static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s, > const char *boot_cpu, Error **errp) > { > int i; > - int num_rpus = MIN((int)(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS), > - XLNX_ZYNQMP_NUM_RPU_CPUS); > + int num_rpus = xlnx_zynqmp_get_rpu_number(ms); > > - if (num_rpus <= 0) { > + if (!num_rpus) { > /* Don't create rpu-cluster object if there's nothing to put in it */ > return; > } > -- > 2.34.1 >
