On Wed, Jul 16, 2025 at 11:54:12AM +0200, Luc Michel wrote: > Add the versal_get_num_cpu accessor to the Versal SoC to retrieve the > number of CPUs in the SoC. Use it in the xlnx-versal-virt machine. > > Signed-off-by: Luc Michel <luc.mic...@amd.com>
Reviewed-by: Francisco Iglesias <francisco.igles...@amd.com> > --- > include/hw/arm/xlnx-versal.h | 1 + > hw/arm/xlnx-versal-virt.c | 7 ++++--- > hw/arm/xlnx-versal.c | 8 ++++++++ > 3 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h > index a3bc967c352..ffa7801b30f 100644 > --- a/include/hw/arm/xlnx-versal.h > +++ b/include/hw/arm/xlnx-versal.h > @@ -77,10 +77,11 @@ void versal_ospi_create_flash(Versal *s, int flash_idx, > const char *flash_mdl, > BlockBackend *blk); > > qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx); > hwaddr versal_get_reserved_mmio_addr(Versal *s); > > +int versal_get_num_cpu(VersalVersion version); > int versal_get_num_can(VersalVersion version); > int versal_get_num_sdhci(VersalVersion version); > > /* Memory-map and IRQ definitions. Copied a subset from > * auto-generated files. */ > diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c > index 7f40c197072..5e47a20922a 100644 > --- a/hw/arm/xlnx-versal-virt.c > +++ b/hw/arm/xlnx-versal-virt.c > @@ -344,16 +344,17 @@ static void versal_virt_machine_finalize(Object *obj) > } > > static void versal_virt_machine_class_init(ObjectClass *oc, const void *data) > { > MachineClass *mc = MACHINE_CLASS(oc); > + int num_cpu = versal_get_num_cpu(VERSAL_VER_VERSAL); > > mc->desc = "Xilinx Versal Virtual development board"; > mc->init = versal_virt_init; > - mc->min_cpus = XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; > - mc->max_cpus = XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; > - mc->default_cpus = XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; > + mc->min_cpus = num_cpu; > + mc->max_cpus = num_cpu; > + mc->default_cpus = num_cpu; > mc->no_cdrom = true; > mc->auto_create_sdcard = true; > mc->default_ram_id = "ddr"; > object_class_property_add_str(oc, "ospi-flash", versal_get_ospi_model, > versal_set_ospi_model); > diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c > index bf680077e48..5151822ad56 100644 > --- a/hw/arm/xlnx-versal.c > +++ b/hw/arm/xlnx-versal.c > @@ -1805,10 +1805,18 @@ hwaddr versal_get_reserved_mmio_addr(Versal *s) > const VersalMap *map = versal_get_map(s); > > return map->reserved.mmio_start; > } > > +int versal_get_num_cpu(VersalVersion version) > +{ > + const VersalMap *map = VERSION_TO_MAP[version]; > + > + return map->apu.num_cluster * map->apu.num_core > + + map->rpu.num_cluster * map->rpu.num_core; > +} > + > int versal_get_num_can(VersalVersion version) > { > const VersalMap *map = VERSION_TO_MAP[version]; > > return map->num_canfd; > -- > 2.50.0 >