qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/47] AMD Versal Gen 2 support
@ 2025-08-21 13:02 Luc Michel
  2025-08-21 13:03 ` [PATCH v3 01/47] hw/arm/xlnx-versal: split the xlnx-versal type Luc Michel
                   ` (47 more replies)
  0 siblings, 48 replies; 51+ messages in thread
From: Luc Michel @ 2025-08-21 13:02 UTC (permalink / raw)
  To: qemu-devel, qemu-arm
  Cc: Luc Michel, Peter Maydell, Francisco Iglesias, Edgar E . Iglesias,
	Philippe Mathieu-Daudé, Alistair Francis, Frederic Konrad,
	Sai Pavan Boddu

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                    |  742 ++----
 hw/arm/xlnx-versal.c                         | 2455 +++++++++++++-----
 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                       |   79 +
 tests/functional/test_aarch64_xlnx_versal.py |   12 +-
 13 files changed, 3057 insertions(+), 1661 deletions(-)
 create mode 100644 include/hw/arm/xlnx-versal-version.h

-- 
2.50.1



^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2025-08-22 14:53 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-21 13:02 [PATCH v3 00/47] AMD Versal Gen 2 support Luc Michel
2025-08-21 13:03 ` [PATCH v3 01/47] hw/arm/xlnx-versal: split the xlnx-versal type Luc Michel
2025-08-21 13:03 ` [PATCH v3 02/47] hw/arm/xlnx-versal: prepare for FDT creation Luc Michel
2025-08-21 13:03 ` [PATCH v3 03/47] hw/arm/xlnx-versal: uart: refactor creation Luc Michel
2025-08-21 14:12   ` Edgar E. Iglesias
2025-08-21 13:03 ` [PATCH v3 04/47] hw/arm/xlnx-versal: canfd: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 05/47] hw/arm/xlnx-versal: sdhci: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 06/47] hw/arm/xlnx-versal: gem: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 07/47] hw/arm/xlnx-versal: adma: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 08/47] hw/arm/xlnx-versal: xram: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 09/47] hw/arm/xlnx-versal: usb: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 10/47] hw/arm/xlnx-versal: efuse: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 11/47] hw/arm/xlnx-versal: ospi: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 12/47] hw/arm/xlnx-versal: VersalMap: add support for OR'ed IRQs Luc Michel
2025-08-21 13:03 ` [PATCH v3 13/47] hw/arm/xlnx-versal: PMC IOU SCLR: refactor creation Luc Michel
2025-08-21 13:03 ` [PATCH v3 14/47] hw/arm/xlnx-versal: bbram: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 15/47] hw/arm/xlnx-versal: trng: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 16/47] hw/arm/xlnx-versal: rtc: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 17/47] hw/arm/xlnx-versal: cfu: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 18/47] hw/arm/xlnx-versal: crl: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 19/47] hw/arm/xlnx-versal-virt: virtio: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 20/47] hw/arm/xlnx-versal: refactor CPU cluster creation Luc Michel
2025-08-21 13:03 ` [PATCH v3 21/47] hw/arm/xlnx-versal: add the mp_affinity property to the CPU mapping Luc Michel
2025-08-21 13:03 ` [PATCH v3 22/47] hw/arm/xlnx-versal: instantiate the GIC ITS in the APU Luc Michel
2025-08-21 13:03 ` [PATCH v3 23/47] hw/intc/arm_gicv3: Introduce a 'first-cpu-index' property Luc Michel
2025-08-21 13:03 ` [PATCH v3 24/47] hw/arm/xlnx-versal: add support for multiple GICs Luc Michel
2025-08-21 13:03 ` [PATCH v3 25/47] hw/arm/xlnx-versal: add support for GICv2 Luc Michel
2025-08-21 13:03 ` [PATCH v3 26/47] hw/arm/xlnx-versal: rpu: refactor creation Luc Michel
2025-08-21 13:03 ` [PATCH v3 27/47] hw/arm/xlnx-versal: ocm: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 28/47] hw/arm/xlnx-versal: ddr: " Luc Michel
2025-08-21 13:03 ` [PATCH v3 29/47] hw/arm/xlnx-versal: add the versal_get_num_cpu accessor Luc Michel
2025-08-21 13:03 ` [PATCH v3 30/47] hw/misc/xlnx-versal-crl: remove unnecessary include directives Luc Michel
2025-08-21 13:03 ` [PATCH v3 31/47] hw/misc/xlnx-versal-crl: split into base/concrete classes Luc Michel
2025-08-21 13:03 ` [PATCH v3 32/47] hw/misc/xlnx-versal-crl: refactor device reset logic Luc Michel
2025-08-21 13:03 ` [PATCH v3 33/47] hw/arm/xlnx-versal: reconnect the CRL to the other devices Luc Michel
2025-08-21 13:03 ` [PATCH v3 34/47] hw/arm/xlnx-versal: use hw/arm/bsa.h for timer IRQ indices Luc Michel
2025-08-21 13:03 ` [PATCH v3 35/47] hw/arm/xlnx-versal: tidy up Luc Michel
2025-08-21 13:03 ` [PATCH v3 36/47] hw/misc/xlnx-versal-crl: add the versal2 version Luc Michel
2025-08-21 13:03 ` [PATCH v3 37/47] hw/arm/xlnx-versal: add a per_cluster_gic switch to VersalCpuClusterMap Luc Michel
2025-08-21 13:03 ` [PATCH v3 38/47] hw/arm/xlnx-versal: add the target field in IRQ descriptor Luc Michel
2025-08-21 13:03 ` [PATCH v3 39/47] target/arm/tcg/cpu64: add the cortex-a78ae CPU Luc Michel
2025-08-21 13:03 ` [PATCH v3 40/47] hw/arm/xlnx-versal: add versal2 SoC Luc Michel
2025-08-21 13:03 ` [PATCH v3 41/47] hw/arm/xlnx-versal-virt: rename the machine to amd-versal-virt Luc Michel
2025-08-21 13:03 ` [PATCH v3 42/47] hw/arm/xlnx-versal-virt: split into base/concrete classes Luc Michel
2025-08-21 13:03 ` [PATCH v3 43/47] hw/arm/xlnx-versal-virt: tidy up Luc Michel
2025-08-21 13:03 ` [PATCH v3 44/47] docs/system/arm/xlnx-versal-virt: update supported devices Luc Michel
2025-08-21 13:03 ` [PATCH v3 45/47] docs/system/arm/xlnx-versal-virt: add a note about dumpdtb Luc Michel
2025-08-21 13:03 ` [PATCH v3 46/47] hw/arm/xlnx-versal-virt: add the xlnx-versal2-virt machine Luc Michel
2025-08-21 13:03 ` [PATCH v3 47/47] tests/functional/test_aarch64_xlnx_versal: test the versal2 machine Luc Michel
2025-08-21 14:27 ` [PATCH v3 00/47] AMD Versal Gen 2 support Edgar E. Iglesias
2025-08-22 14:52   ` Luc Michel

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).