Shameer,
Hi!

First off, like the partitioning of these pieces.

On 4/15/25 4:10 AM, Shameer Kolothum wrote:
Hi All,

This patch series introduces support for a user-creatable SMMUv3 device
(-device arm-smmuv3-dev) in QEMU.

Can we drop the '-dev', as 'arm-smmu' is sufficient, as is '-device'?

I know, internal to QEMU, there's already an ARM_SMMU, but as suggested later,
if it uses the same struct, the qemu cmdline syntax is a bit less redundant.

The implementation is based on feedback received from the RFCv2[0]:
"hw/arm/virt: Add support for user-creatable accelerated SMMUv3"

Currently, QEMU's SMMUv3 emulation (iommu=smmuv3) is tied to the machine
and does not support instantiating multiple SMMUv3 devices—each associated
with a separate PCIe root complex. In contrast, real-world ARM systems
often include multiple SMMUv3 instances, each bound to a different PCIe
root complex.

This also lays the groundwork for supporting accelerated SMMUv3, as
proposed in the aforementioned RFC. Please note, the accelerated SMMUv3
support is not part of this series and will be sent out as a separate
series later on top of this one.

Summary of changes:

  -Introduces support for multiple -device arm-smmuv3-dev,bus=pcie.x
   instances.

   Example usage:

   -device arm-smmuv3-dev,bus=pcie.0
   -device virtio-net-pci,bus=pcie.0
   -device pxb-pcie,id=pcie.1,bus_nr=2
   -device arm-smmuv3-dev,bus=pcie.1
   -device pcie-root-port,id=pcie.port1,bus=pcie.1
   -device virtio-net-pci,bus=pcie.port1

   -Supports either the legacy iommu=smmuv3 option or the new
   "-device arm-smmuv3-dev" model.

nice! :)
Can it support both? i.e., some devices using a system-wide, legacy smmuv3,
and some pcie devices using the -device arm-smmuv3 ?

If not, then add a check to min-warn or max-fail, that config.
I can see old machines being converted/upgraded to new machines,
and they will want to switch from legacy->device smmuv3, and catching
an edit/update to a machine change (or enabling automated conversion) would be 
helpful.

   -Adds device tree bindings for the new SMMUv3 device on the arm/virt
    machine only, and only for the default pcie.0 root complex.
    (Note: pxb-pcie root complexes are currently not supported with the
     device tree due to known limitations[1].)
   -Restricts usage of the new SMMUv3 device to virt machine versions > 9.2.
    This is to avoid creating new smmuv3 device for old virt machine versions
    and accidently breaking the migration support.

Please take a look and let me know your feedback.

Thanks,
Shameer
[0]:https://lore.kernel.org/qemu-devel/20250311141045.66620-1-shameerali.kolothum.th...@huawei.com/
[1]:https://lore.kernel.org/qemu-devel/20230421165037.2506-1-jonathan.came...@huawei.com/

Shameer Kolothum (5):
   hw/arm/smmuv3: Introduce SMMUv3 device
   hw/arm/virt-acpi-build: Update IORT for multiple smmuv3 devices
   hw/arm/virt: Factor out common SMMUV3 dt bindings code
   hw/arm/virt: Add support for smmuv3 device
   hw/arm/smmuv3: Enable smmuv3 device creation

  hw/arm/smmuv3.c          |  55 ++++++++++++++++++
  hw/arm/virt-acpi-build.c | 119 +++++++++++++++++++++++++++++++++++----
  hw/arm/virt.c            | 109 ++++++++++++++++++++++++++---------
  hw/core/sysbus-fdt.c     |   3 +
  include/hw/arm/smmuv3.h  |  16 ++++++
  include/hw/arm/virt.h    |   2 +
  6 files changed, 266 insertions(+), 38 deletions(-)



Reply via email to