diff options
| author | Luc Michel <luc.michel@amd.com> | 2025-09-26 09:07:47 +0200 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2025-10-07 10:35:36 +0100 |
| commit | 87830c4dd626804072181cf126daa206c5721dc4 (patch) | |
| tree | 160684e9a33ee95971db32e7d18a812c0b9c52f0 | |
| parent | e4a9bc0aae9f98c64a9689f9471234636e6d3ae0 (diff) | |
| download | focaccia-qemu-87830c4dd626804072181cf126daa206c5721dc4.tar.gz focaccia-qemu-87830c4dd626804072181cf126daa206c5721dc4.zip | |
hw/arm/xlnx-versal: add the versal_get_num_cpu accessor
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.michel@amd.com> Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20250926070806.292065-30-luc.michel@amd.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
| -rw-r--r-- | hw/arm/xlnx-versal-virt.c | 7 | ||||
| -rw-r--r-- | hw/arm/xlnx-versal.c | 8 | ||||
| -rw-r--r-- | include/hw/arm/xlnx-versal.h | 1 |
3 files changed, 13 insertions, 3 deletions
diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index ad7b3135a6..274a7ef988 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -346,12 +346,13 @@ 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"; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index f1b704175f..2e28b807d7 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1815,6 +1815,14 @@ hwaddr versal_get_reserved_mmio_addr(Versal *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]; diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 39bc414c85..7bdf6dab62 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -80,6 +80,7 @@ void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_mdl, 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); |