Gentle ping. Only patches 23 and 39 need review. Thanks
-- Luc On 17:15 Fri 22 Aug , Luc Michel wrote: > 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 | 2465 +++++++++++++----- > 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, 3067 insertions(+), 1660 deletions(-) > create mode 100644 include/hw/arm/xlnx-versal-version.h > > -- > 2.50.1 > --