From: Luc Michel <luc.michel@amd.com>
To: <qemu-devel@nongnu.org>, <qemu-arm@nongnu.org>
Cc: "Luc Michel" <luc.michel@amd.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Francisco Iglesias" <francisco.iglesias@amd.com>,
"Edgar E . Iglesias" <edgar.iglesias@amd.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Alistair Francis" <alistair@alistair23.me>,
"Frederic Konrad" <frederic.konrad@amd.com>,
"Sai Pavan Boddu" <sai.pavan.boddu@amd.com>
Subject: [PATCH v5 00/47] AMD Versal Gen 2 support
Date: Fri, 12 Sep 2025 12:00:09 +0200 [thread overview]
Message-ID: <20250912100059.103997-1-luc.michel@amd.com> (raw)
v5:
- Patch 36 (xlnx-versal-crl versal2 version): replaced `return NULL'
with a `g_assert_not_reached()' in the versal2_decode_periph_rst
function. [Phil]
- Fixed remaining memory leaks in the Versal SoC by adding a finalize
function. [Peter]
- Patch 39 (cortex-a78ae addition):
- Switched to the last r0p3 revision.
- Removed the CBAR_RO and BACKCOMPAT_CNTFRQ features.
- Fixed the comments referring to TRM sections. [Peter]
v4:
- Fixed compilation issues and runtime crashes in 3 intermediate
patches. [Edgar]
- Introduced a small hack to keep the GEM FDT node order as it was
before. This is to avoid kernel iface name swapping (eth0 <-> eth1)
in Versal. [Edgar]
v3:
- Dropped qemu_get_cpu() usage in the machine code. Added an getter on
the SoC interface to retrieve the boot CPU instead. [Phil]
- Cleaned the mp_affinity logic. Drop the mask attribute and assume
it's always 0xff (the Affx fields in MPIDR are 8 bits long). Use the
ARM_AFFx_SHIFT constant instead of hardcoded values in .mp_affinity
description. [Phil]
- Avocado test renaming in patch 41 instead of 47. [Phil]
- Documentation tweak. [Phil]
v2:
- Addressed formatting/typo issues [Francisco]
- Patch 23: GICv3 first-cpu-idx: addressed the KVM case by bailing
out if not 0 at realize. I chose this path as I don't have a clear
view of what it means to implement that for KVM. It seems to make
sense anyway as this property is meant to be used for modeling of
non-SMP systems. [Peter]
- Patch 39: added a comment to clarify cortex-a78ae != cortex-a78 [Peter]
Hello,
This series brings support for the AMD Versal Gen 2 (versal2) SoC in
QEMU. This SoC is the next iteration of the existing Versal SoC.
It is organized as follows:
- The first and biggest part of the series performs refactoring of the
existing versal SoC implementation. This consists in:
- splitting existing device types into base/concrete classes,
- moving from an in-place to dynamic device creation approach in
the SoC code for flexibility,
- describing the SoC using a new structure called VersalMap,
- moving the DTB creation logic in the SoC code itself alongside
device creation.
Patches are split such that each device is individually converted to
use this new approach. Behaviour changes are minimal and are
emphasised in the commit messages. This gets the SoC code ready for
versal2 addition and leverage the fact that Versal family SoCs are
quite similar in term of architecture.
- versal2 SoC support is then added by adding the corresponding
VersalMap description. This allows to reuse the existing code
without duplication and almost no special case.
- The amd-versal2-virt machine is finally added, following the same
idea as amd-versal-virt. The documentation and tests are updated
accordingly.
Note that the xlnx-versal-virt machine is renamed amd-versal-virt to
follow current branding guidelines and stay coherent with the new
amd-versal2-virt machine. The xlnx-versal-virt name is kept as an alias
to amd-versal-virt for command line backward compatibility.
Thanks
Luc
Francisco Iglesias (1):
hw/intc/arm_gicv3: Introduce a 'first-cpu-index' property
Luc Michel (46):
hw/arm/xlnx-versal: split the xlnx-versal type
hw/arm/xlnx-versal: prepare for FDT creation
hw/arm/xlnx-versal: uart: refactor creation
hw/arm/xlnx-versal: canfd: refactor creation
hw/arm/xlnx-versal: sdhci: refactor creation
hw/arm/xlnx-versal: gem: refactor creation
hw/arm/xlnx-versal: adma: refactor creation
hw/arm/xlnx-versal: xram: refactor creation
hw/arm/xlnx-versal: usb: refactor creation
hw/arm/xlnx-versal: efuse: refactor creation
hw/arm/xlnx-versal: ospi: refactor creation
hw/arm/xlnx-versal: VersalMap: add support for OR'ed IRQs
hw/arm/xlnx-versal: PMC IOU SCLR: refactor creation
hw/arm/xlnx-versal: bbram: refactor creation
hw/arm/xlnx-versal: trng: refactor creation
hw/arm/xlnx-versal: rtc: refactor creation
hw/arm/xlnx-versal: cfu: refactor creation
hw/arm/xlnx-versal: crl: refactor creation
hw/arm/xlnx-versal-virt: virtio: refactor creation
hw/arm/xlnx-versal: refactor CPU cluster creation
hw/arm/xlnx-versal: add the mp_affinity property to the CPU mapping
hw/arm/xlnx-versal: instantiate the GIC ITS in the APU
hw/arm/xlnx-versal: add support for multiple GICs
hw/arm/xlnx-versal: add support for GICv2
hw/arm/xlnx-versal: rpu: refactor creation
hw/arm/xlnx-versal: ocm: refactor creation
hw/arm/xlnx-versal: ddr: refactor creation
hw/arm/xlnx-versal: add the versal_get_num_cpu accessor
hw/misc/xlnx-versal-crl: remove unnecessary include directives
hw/misc/xlnx-versal-crl: split into base/concrete classes
hw/misc/xlnx-versal-crl: refactor device reset logic
hw/arm/xlnx-versal: reconnect the CRL to the other devices
hw/arm/xlnx-versal: use hw/arm/bsa.h for timer IRQ indices
hw/arm/xlnx-versal: tidy up
hw/misc/xlnx-versal-crl: add the versal2 version
hw/arm/xlnx-versal: add a per_cluster_gic switch to
VersalCpuClusterMap
hw/arm/xlnx-versal: add the target field in IRQ descriptor
target/arm/tcg/cpu64: add the cortex-a78ae CPU
hw/arm/xlnx-versal: add versal2 SoC
hw/arm/xlnx-versal-virt: rename the machine to amd-versal-virt
hw/arm/xlnx-versal-virt: split into base/concrete classes
hw/arm/xlnx-versal-virt: tidy up
docs/system/arm/xlnx-versal-virt: update supported devices
docs/system/arm/xlnx-versal-virt: add a note about dumpdtb
hw/arm/xlnx-versal-virt: add the xlnx-versal2-virt machine
tests/functional/test_aarch64_xlnx_versal: test the versal2 machine
docs/system/arm/xlnx-versal-virt.rst | 80 +-
include/hw/arm/xlnx-versal-version.h | 16 +
include/hw/arm/xlnx-versal.h | 342 +--
include/hw/intc/arm_gicv3_common.h | 1 +
include/hw/misc/xlnx-versal-crl.h | 378 ++-
hw/arm/xlnx-versal-virt.c | 741 ++----
hw/arm/xlnx-versal.c | 2474 +++++++++++++-----
hw/intc/arm_gicv3_common.c | 3 +-
hw/intc/arm_gicv3_cpuif.c | 2 +-
hw/intc/arm_gicv3_kvm.c | 6 +
hw/misc/xlnx-versal-crl.c | 602 ++++-
target/arm/tcg/cpu64.c | 78 +
tests/functional/aarch64/test_xlnx_versal.py | 12 +-
13 files changed, 3075 insertions(+), 1660 deletions(-)
create mode 100644 include/hw/arm/xlnx-versal-version.h
--
2.50.1
next reply other threads:[~2025-09-12 10:02 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-12 10:00 Luc Michel [this message]
2025-09-12 10:00 ` [PATCH v5 01/47] hw/arm/xlnx-versal: split the xlnx-versal type Luc Michel
2025-09-12 17:07 ` Edgar E. Iglesias via
2025-09-12 10:00 ` [PATCH v5 02/47] hw/arm/xlnx-versal: prepare for FDT creation Luc Michel
2025-09-12 17:17 ` Edgar E. Iglesias
2025-09-16 7:30 ` Luc Michel
2025-09-18 6:10 ` Edgar E. Iglesias
2025-09-25 18:45 ` Edgar E. Iglesias
2025-09-26 6:32 ` Luc Michel
2025-09-12 10:00 ` [PATCH v5 03/47] hw/arm/xlnx-versal: uart: refactor creation Luc Michel
2025-09-12 17:22 ` Edgar E. Iglesias
2025-09-16 7:34 ` Luc Michel
2025-09-12 10:00 ` [PATCH v5 04/47] hw/arm/xlnx-versal: canfd: " Luc Michel
2025-09-12 17:31 ` Edgar E. Iglesias via
2025-09-16 7:38 ` Luc Michel
2025-09-12 10:00 ` [PATCH v5 05/47] hw/arm/xlnx-versal: sdhci: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 06/47] hw/arm/xlnx-versal: gem: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 07/47] hw/arm/xlnx-versal: adma: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 08/47] hw/arm/xlnx-versal: xram: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 09/47] hw/arm/xlnx-versal: usb: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 10/47] hw/arm/xlnx-versal: efuse: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 11/47] hw/arm/xlnx-versal: ospi: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 12/47] hw/arm/xlnx-versal: VersalMap: add support for OR'ed IRQs Luc Michel
2025-09-12 10:00 ` [PATCH v5 13/47] hw/arm/xlnx-versal: PMC IOU SCLR: refactor creation Luc Michel
2025-09-12 10:00 ` [PATCH v5 14/47] hw/arm/xlnx-versal: bbram: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 15/47] hw/arm/xlnx-versal: trng: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 16/47] hw/arm/xlnx-versal: rtc: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 17/47] hw/arm/xlnx-versal: cfu: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 18/47] hw/arm/xlnx-versal: crl: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 19/47] hw/arm/xlnx-versal-virt: virtio: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 20/47] hw/arm/xlnx-versal: refactor CPU cluster creation Luc Michel
2025-09-12 10:00 ` [PATCH v5 21/47] hw/arm/xlnx-versal: add the mp_affinity property to the CPU mapping Luc Michel
2025-09-12 10:00 ` [PATCH v5 22/47] hw/arm/xlnx-versal: instantiate the GIC ITS in the APU Luc Michel
2025-09-12 10:00 ` [PATCH v5 23/47] hw/intc/arm_gicv3: Introduce a 'first-cpu-index' property Luc Michel
2025-09-12 10:00 ` [PATCH v5 24/47] hw/arm/xlnx-versal: add support for multiple GICs Luc Michel
2025-09-12 10:00 ` [PATCH v5 25/47] hw/arm/xlnx-versal: add support for GICv2 Luc Michel
2025-09-12 10:00 ` [PATCH v5 26/47] hw/arm/xlnx-versal: rpu: refactor creation Luc Michel
2025-09-12 10:00 ` [PATCH v5 27/47] hw/arm/xlnx-versal: ocm: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 28/47] hw/arm/xlnx-versal: ddr: " Luc Michel
2025-09-12 10:00 ` [PATCH v5 29/47] hw/arm/xlnx-versal: add the versal_get_num_cpu accessor Luc Michel
2025-09-12 10:00 ` [PATCH v5 30/47] hw/misc/xlnx-versal-crl: remove unnecessary include directives Luc Michel
2025-09-12 10:00 ` [PATCH v5 31/47] hw/misc/xlnx-versal-crl: split into base/concrete classes Luc Michel
2025-09-12 10:00 ` [PATCH v5 32/47] hw/misc/xlnx-versal-crl: refactor device reset logic Luc Michel
2025-09-12 10:00 ` [PATCH v5 33/47] hw/arm/xlnx-versal: reconnect the CRL to the other devices Luc Michel
2025-09-12 10:00 ` [PATCH v5 34/47] hw/arm/xlnx-versal: use hw/arm/bsa.h for timer IRQ indices Luc Michel
2025-09-12 10:00 ` [PATCH v5 35/47] hw/arm/xlnx-versal: tidy up Luc Michel
2025-09-12 10:00 ` [PATCH v5 36/47] hw/misc/xlnx-versal-crl: add the versal2 version Luc Michel
2025-09-12 10:00 ` [PATCH v5 37/47] hw/arm/xlnx-versal: add a per_cluster_gic switch to VersalCpuClusterMap Luc Michel
2025-09-12 10:00 ` [PATCH v5 38/47] hw/arm/xlnx-versal: add the target field in IRQ descriptor Luc Michel
2025-09-12 10:00 ` [PATCH v5 39/47] target/arm/tcg/cpu64: add the cortex-a78ae CPU Luc Michel
2025-09-16 14:31 ` Peter Maydell
2025-09-12 10:00 ` [PATCH v5 40/47] hw/arm/xlnx-versal: add versal2 SoC Luc Michel
2025-09-12 10:00 ` [PATCH v5 41/47] hw/arm/xlnx-versal-virt: rename the machine to amd-versal-virt Luc Michel
2025-09-12 10:00 ` [PATCH v5 42/47] hw/arm/xlnx-versal-virt: split into base/concrete classes Luc Michel
2025-09-12 10:00 ` [PATCH v5 43/47] hw/arm/xlnx-versal-virt: tidy up Luc Michel
2025-09-12 10:00 ` [PATCH v5 44/47] docs/system/arm/xlnx-versal-virt: update supported devices Luc Michel
2025-09-12 10:00 ` [PATCH v5 45/47] docs/system/arm/xlnx-versal-virt: add a note about dumpdtb Luc Michel
2025-09-12 10:00 ` [PATCH v5 46/47] hw/arm/xlnx-versal-virt: add the xlnx-versal2-virt machine Luc Michel
2025-09-12 10:00 ` [PATCH v5 47/47] tests/functional/test_aarch64_xlnx_versal: test the versal2 machine Luc Michel
2025-09-25 15:41 ` [PATCH v5 00/47] AMD Versal Gen 2 support Peter Maydell
2025-09-25 18:38 ` Edgar E. Iglesias
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250912100059.103997-1-luc.michel@amd.com \
--to=luc.michel@amd.com \
--cc=alistair@alistair23.me \
--cc=edgar.iglesias@amd.com \
--cc=francisco.iglesias@amd.com \
--cc=frederic.konrad@amd.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sai.pavan.boddu@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).