Hi; here's this week's arm pullreq; lots of smmuv3 related work here,
plus some initial work towards emulating FEAT_SVE2p2.
thanks
-- PMM
The following changes since commit 2f28d34ea0aead9830478cd1d3d0dd9d9191d82e:
Merge tag 'pull-tcg-20260612' of https://gitlab.com/rth7680/qemu into staging (2026-06-13 14:02:34 -0400)
are available in the Git repository at:
https://gitlab.com/pm215/qemu.git tags/pull-target-arm-20260616
for you to fetch changes up to 8de1ba58af636d1844be43b9ea6e34ced302a057:
target/arm: Implement floating-point log and convert to integer (zeroing) (2026-06-16 16:54:25 +0100)
----------------------------------------------------------------
target-arm queue:
* Implementation of various insns preparatory to FEAT_SVE2p2
* hw/arm/smmuv3: Make smmuv3 ATS, RIL, SSIDSIZE, and OAS 'auto' properties work
* hw/pci/pci: Enforce pci_setup_iommu_per_bus() is called only once per bus
* hw/arm/virt: Introduce Tegra241 CMDQV support for accelerated SMMUv3
* target/arm: honour CCR.BFHFNMIGN for probed data BusFaults
* hw/arm/bcm2838: Route I2C interrupts to GIC
----------------------------------------------------------------
Eric Auger (1):
hw/pci/pci: Enforce pci_setup_iommu_per_bus() is called only once per bus
Kyle Fox (1):
target/arm: honour CCR.BFHFNMIGN for probed data BusFaults
Nathan Chen (9):
hw/arm/smmuv3: Update ATC invalidation check
hw/arm/smmuv3: Improve accel SMMUv3 usage documentation
hw/arm/smmuv3-accel: Add helper for resolving auto parameters
hw/arm/smmuv3-accel: Implement "auto" value for "ats"
hw/arm/smmuv3-accel: Implement "auto" value for "ril"
hw/arm/smmuv3-accel: Implement "auto" value for "ssidsize"
hw/arm/smmuv3-accel: Implement "auto" value for "oas"
hw/arm/smmuv3: Set default ats, ril, ssidsize, oas to auto
qemu-options.hx: Support "auto" for accel SMMUv3 properties
Nicholas Righi (1):
hw/arm/bcm2838: Route I2C interrupts to GIC
Nicolin Chen (15):
backends/iommufd: Update iommufd_backend_get_device_info
backends/iommufd: Update iommufd_backend_alloc_viommu to allow user ptr
backends/iommufd: Introduce iommufd_backend_alloc_hw_queue
backends/iommufd: Introduce iommufd_backend_viommu_mmap
hw/arm/tegra241-cmdqv: Implement CMDQV init
hw/arm/tegra241-cmdqv: Implement CMDQV vIOMMU alloc/free
hw/arm/tegra241-cmdqv: mmap host VINTF Page0 for CMDQV
hw/arm/tegra241-cmdqv: Emulate CMDQ-V Config region
hw/arm/tegra241-cmdqv: Emulate VCMDQ register reads
hw/arm/tegra241-cmdqv: Emulate VCMDQ register writes
hw/arm/tegra241-cmdqv: Allocate HW VCMDQs once configured
hw/arm/tegra241-cmdqv: Use mmap'd host VINTF page0 for virtual VINTF page0
hw/arm/tegra241-cmdqv: Initialize register state on reset
hw/arm/tegra241-cmdqv: Limit queue size based on backend page size
hw/arm/virt-acpi: Advertise Tegra241 CMDQV nodes in DSDT
Richard Henderson (18):
target/arm: Add feature predicates for SVE2.2 and SME2.2
target/arm: Rename sve unary predicated patterns
target/arm: Enable zeroing in DO_ZPZ macros in sve_helper.c
target/arm: Expand DO_ZPZ in translate-sve.c
target/arm: Implement SVE integer unary operations (predicated, zeroing)
target/arm: Implement SVE bitwise unary operations (predicated, zeroing)
target/arm: Implement SVE reverse within elements (zeroing)
target/arm: Implement SVE reverse doublewords (zeroing)
target/arm: Implement SVE2 integer unary operations (predicated, zeroing)
target/arm: Add data argument to do_frint_mode
target/arm: Implement Floating-point round to integral value (predicated, zeroing)
target/arm: Implement Floating-point convert (predicated, zeroing)
target/arm: Implement Floating-point square root (predicated, zeroing)
target/arm: Implement SCVTF, UCVTF (predicated, zeroing)
target/arm: Implement FRINT{32,64}{X,Z}
target/arm: Enable zeroing in DO_FCVT{N, L}T macros in sve_helper.c
target/arm: Implement SVE floating-point convert (top, predicated, zeroing)
target/arm: Implement floating-point log and convert to integer (zeroing)
Shameer Kolothum (16):
system/iommufd: Remove unused viommu pointer from IOMMUFDVeventq
hw/arm/smmuv3-accel: Introduce CMDQV ops interface
hw/arm/tegra241-cmdqv: Add Tegra241 CMDQV ops backend stub
hw/arm/smmuv3-accel: Wire CMDQV ops into accel lifecycle
hw/arm/virt: Use stored SMMUv3 device list for IORT build
hw/arm/tegra241-cmdqv: Probe host Tegra241 CMDQV support
hw/arm/virt: Link SMMUv3 CMDQV resources to platform bus
hw/arm/tegra241-cmdqv: Route allocated VCMDQ Page0 accesses to the mmap'd host VINTF page0
memory: Allow RAM device regions to skip IOMMU mapping
hw/arm/smmuv3-accel: Introduce common helper for veventq read
hw/arm/tegra241-cmdqv: Read and propagate Tegra241 CMDQV errors
hw/arm/smmuv3: Add per-device identifier property
hw/arm/smmuv3-accel: Introduce helper to query CMDQV type
hw/arm/smmuv3-accel: Enforce viommu association when CMDQV is active
hw/arm/tegra241-cmdqv: Document the CMDQV design and lifecycle
hw/arm/smmuv3: Add cmdqv property for SMMUv3 device
backends/iommufd.c | 64 ++
backends/trace-events | 4 +-
hw/arm/Kconfig | 5 +
hw/arm/bcm2835_peripherals.c | 9 +
hw/arm/bcm2838.c | 4 +
hw/arm/meson.build | 2 +
hw/arm/smmu-common.c | 4 +-
hw/arm/smmuv3-accel-stubs.c | 12 +
hw/arm/smmuv3-accel.c | 277 +++++++--
hw/arm/smmuv3-accel.h | 50 ++
hw/arm/smmuv3.c | 91 +--
hw/arm/tegra241-cmdqv-stubs.c | 16 +
hw/arm/tegra241-cmdqv.c | 1119 ++++++++++++++++++++++++++++++++++
hw/arm/tegra241-cmdqv.h | 384 ++++++++++++
hw/arm/trace-events | 11 +
hw/arm/virt-acpi-build.c | 127 ++--
hw/arm/virt.c | 37 ++
hw/core/machine.c | 5 +
hw/pci/pci.c | 9 +-
hw/vfio/iommufd.c | 4 +-
hw/vfio/listener.c | 6 +
hw/vfio/trace-events | 1 +
include/hw/arm/bcm2835_peripherals.h | 2 +
include/hw/arm/bcm2838_peripherals.h | 1 +
include/hw/arm/smmuv3.h | 6 +
include/hw/arm/virt.h | 1 +
include/hw/pci/pci.h | 16 +-
include/system/iommufd.h | 17 +-
include/system/memory.h | 21 +
qemu-options.hx | 33 +-
system/memory.c | 10 +
target/arm/cpu-features.h | 17 +-
target/arm/tcg/helper-sve-defs.h | 9 +
target/arm/tcg/m_helper.c | 16 +-
target/arm/tcg/sve.decode | 261 +++++---
target/arm/tcg/sve_helper.c | 30 +-
target/arm/tcg/tlb_helper.c | 24 +
target/arm/tcg/translate-sve.c | 471 ++++++++++----
38 files changed, 2861 insertions(+), 315 deletions(-)
create mode 100644 hw/arm/tegra241-cmdqv-stubs.c
create mode 100644 hw/arm/tegra241-cmdqv.c
create mode 100644 hw/arm/tegra241-cmdqv.h