All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shameer Kolothum <skolothumtho@nvidia.com>
To: <qemu-arm@nongnu.org>, <qemu-devel@nongnu.org>
Cc: <eric.auger@redhat.com>, <peter.maydell@linaro.org>,
	<clg@redhat.com>, <alex@shazbot.org>, <nicolinc@nvidia.com>,
	<nathanc@nvidia.com>, <mochs@nvidia.com>, <jan@nvidia.com>,
	<jgg@nvidia.com>, <jonathan.cameron@huawei.com>,
	<zhangfei.gao@linaro.org>, <zhenzhong.duan@intel.com>,
	<kjaju@nvidia.com>, <phrdina@redhat.com>,
	<skolothumtho@nvidia.com>
Subject: [PATCH v3 00/32] hw/arm/virt: Introduce Tegra241 CMDQV support for accelerated SMMUv3
Date: Thu, 26 Feb 2026 10:50:24 +0000	[thread overview]
Message-ID: <20260226105056.897-1-skolothumtho@nvidia.com> (raw)

Hi,

Changes from v2:
 https://lore.kernel.org/qemu-devel/20260206144823.80655-1-skolothumtho@nvidia.com/

  - Addressed feedback on v2 and picked up R-by tags. Thanks!
  - Renamed the property from "tegra241-cmdqv" to a generic OnOffAuto
    "cmdqv".
  - Introduced a probe() callback to detect and initialize CMDQV
    support during device attach (patch #7).
  - Since CMDQV initialization is now deferred to device attach time,
    added a helper to link any unmapped MMIO/IRQ resources (patch #12).
  - Moved VINTF enable handling to the CONFIG ENABLE bit write path
    instead of any read/write access path (patch #17). Hopefully this
    won't break any corner cases.
  - Added checks for VINTF and CMDQV ENABLE bits before allocating
    vCMDQ HW queues, and free any allocated resources if disabled
    (patch #19).
  - Introduced a common helper for vEVENTQ read and validation
    (patch #23).
  - Updated bios-tables test IORT blobs for SMMUv3 device identifier
    changes (patch #29).
  - Rebasing on top of Philippe's CONFIG_DEVICES cleanup series [0],
    using tegra241-cmdqv-stubs.c (patch #6).

Please find the complete branch here:
https://github.com/shamiali2008/qemu-master/tree/master-veventq-v8-vcmdq-v3

I have sanity tested this on an NVIDIA GRACE platform and will
continue with additional tests.

Feedback and testing are very welcome.

Thanks,
Shameer
[0] https://lore.kernel.org/qemu-devel/20260225031658.32095-1-philmd@linaro.org/

---
Background(from RFCv1):
https://lore.kernel.org/qemu-devel/20251210133737.78257-1-skolothumtho@nvidia.com/

Thanks to Nicolin for the initial patches and testing on which this
is based.

Tegra241 CMDQV extends SMMUv3 by allocating per-VM "virtual interfaces"
(VINTFs), each hosting up to 128 VCMDQs.

Each VINTF exposes two 64KB MMIO pages:
 - Page0 – guest owned control and status registers (directly mapped
           into the VM)
 - Page1 – queue configuration registers (trapped/emulated by QEMU)

Unlike the standard SMMU CMDQ, a guest owned Tegra241 VCMDQ does not
support the full command set. Only a subset, primarily invalidation
related commands, is accepted by the CMDQV hardware. For this reason,
a distinct CMDQV device must be exposed to the guest, and the guest OS
must include a Tegra241 CMDQV aware driver to take advantage of the
hardware acceleration.

VCMDQ support is integrated via the IOMMU_HW_QUEUE_ALLOC mechanism,
allowing QEMU to attach guest configured VCMDQ buffers to the
underlying CMDQV hardware through IOMMUFD. The Linux kernel already
supports the full CMDQV virtualisation model via IOMMUFD[0].

---

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: Emulate global CMDQV registers
  hw/arm/tegra241-cmdqv: Emulate global and VINTF VCMDQ register reads
  hw/arm/tegra241-cmdqv: Emulate global and VINTF VCMDQ register writes
  hw/arm/tegra241-cmdqv: mmap VINTF Page0 for CMDQV
  hw/arm/tegra241-cmdqv: Allocate HW VCMDQs on base register programming
  hw/arm/tegra241-cmdqv: Map VINTF page0 into guest MMIO space
  hw/arm/tegra241-cmdqv: Add reset handler
  hw/arm/tegra241-cmdqv: Limit queue size based on backend page size
  hw/arm/virt-acpi: Advertise Tegra241 CMDQV nodes in DSDT

Shameer Kolothum (17):
  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: Store SMMUv3 device objects in VirtMachineState.
  hw/arm/virt-acpi-build: Use stored SMMUv3 devices for IORT build
  hw/arm/tegra241-cmdqv: Probe host Tegra241 CMDQV support
  hw/arm/virt: Link SMMUv3 CMDQV resources to platform bus
  system/physmem: Add address_space_is_ram() helper
  hw/arm/tegra241-cmdqv: Use mmap'ed VINTF page0 as VCMDQ backing
  hw/arm/tegra241-cmdqv: Add vEVENTQ allocation and free
  hw/arm/smmuv3-accel: Introduce common helper for veventq read
  hw/arm/tegra241-cmdqv: Read and propagate Tegra241 CMDQV errors
  tests/qtest/bios-tables-test: Prepare for IORT SMMUv3 node identifier
    change
  hw/arm/smmuv3: Add per-device identifier property
  tests/qtest/bios-tables-test: Update IORT blobs for SMMUv3 identifier
    change
  hw/arm/smmuv3-accel: Introduce helper to query CMDQV type
  hw/arm/smmuv3: Add cmdqv property for SMMUv3 device

 hw/arm/smmuv3-accel.h                         |  29 +
 hw/arm/tegra241-cmdqv.h                       | 342 ++++++++
 include/hw/arm/smmuv3.h                       |   3 +
 include/hw/arm/virt.h                         |   1 +
 include/system/iommufd.h                      |  16 +
 include/system/memory.h                       |  10 +
 backends/iommufd.c                            |  64 ++
 hw/arm/smmuv3-accel-stubs.c                   |  11 +
 hw/arm/smmuv3-accel.c                         | 196 ++++-
 hw/arm/smmuv3.c                               |   9 +
 hw/arm/tegra241-cmdqv-stubs.c                 |  18 +
 hw/arm/tegra241-cmdqv.c                       | 793 ++++++++++++++++++
 hw/arm/virt-acpi-build.c                      | 126 ++-
 hw/arm/virt.c                                 |  27 +
 hw/vfio/iommufd.c                             |   4 +-
 system/physmem.c                              |  11 +
 backends/trace-events                         |   4 +-
 hw/arm/Kconfig                                |   5 +
 hw/arm/meson.build                            |   2 +
 hw/arm/trace-events                           |   5 +
 tests/data/acpi/aarch64/virt/IORT.its_off     | Bin 172 -> 172 bytes
 tests/data/acpi/aarch64/virt/IORT.msi_gicv2m  | Bin 172 -> 172 bytes
 tests/data/acpi/aarch64/virt/IORT.smmuv3-dev  | Bin 260 -> 260 bytes
 .../data/acpi/aarch64/virt/IORT.smmuv3-legacy | Bin 192 -> 192 bytes
 24 files changed, 1596 insertions(+), 80 deletions(-)
 create mode 100644 hw/arm/tegra241-cmdqv.h
 create mode 100644 hw/arm/tegra241-cmdqv-stubs.c
 create mode 100644 hw/arm/tegra241-cmdqv.c

-- 
2.43.0



             reply	other threads:[~2026-02-26 10:55 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-26 10:50 Shameer Kolothum [this message]
2026-02-26 10:50 ` [PATCH v3 01/32] backends/iommufd: Update iommufd_backend_get_device_info Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 02/32] backends/iommufd: Update iommufd_backend_alloc_viommu to allow user ptr Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 03/32] backends/iommufd: Introduce iommufd_backend_alloc_hw_queue Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 04/32] backends/iommufd: Introduce iommufd_backend_viommu_mmap Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 05/32] hw/arm/smmuv3-accel: Introduce CMDQV ops interface Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 06/32] hw/arm/tegra241-cmdqv: Add Tegra241 CMDQV ops backend stub Shameer Kolothum
2026-03-09  9:18   ` Eric Auger
2026-03-09 10:48     ` Shameer Kolothum Thodi
2026-03-09 12:52       ` Eric Auger
2026-03-09 12:59   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 07/32] hw/arm/smmuv3-accel: Wire CMDQV ops into accel lifecycle Shameer Kolothum
2026-03-09 11:05   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 08/32] hw/arm/virt: Store SMMUv3 device objects in VirtMachineState Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 09/32] hw/arm/virt-acpi-build: Use stored SMMUv3 devices for IORT build Shameer Kolothum
2026-03-09 10:18   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 10/32] hw/arm/tegra241-cmdqv: Probe host Tegra241 CMDQV support Shameer Kolothum
2026-03-09 10:31   ` Eric Auger
2026-03-09 10:54     ` Shameer Kolothum Thodi
2026-02-26 10:50 ` [PATCH v3 11/32] hw/arm/tegra241-cmdqv: Implement CMDQV init Shameer Kolothum
2026-03-09 10:44   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 12/32] hw/arm/virt: Link SMMUv3 CMDQV resources to platform bus Shameer Kolothum
2026-03-09 10:57   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 13/32] hw/arm/tegra241-cmdqv: Implement CMDQV vIOMMU alloc/free Shameer Kolothum
2026-03-09 11:09   ` Eric Auger
2026-03-09 11:31     ` Shameer Kolothum Thodi
2026-03-09 12:46       ` Eric Auger
2026-03-09 18:09       ` Nicolin Chen
2026-03-09 18:25         ` Shameer Kolothum Thodi
2026-03-09 19:05           ` Nicolin Chen
2026-02-26 10:50 ` [PATCH v3 14/32] hw/arm/tegra241-cmdqv: Emulate global CMDQV registers Shameer Kolothum
2026-03-09 16:33   ` Eric Auger
2026-03-10 11:37     ` Shameer Kolothum Thodi
2026-03-11 10:34       ` Eric Auger
2026-03-09 17:15   ` Eric Auger
2026-03-09 17:56   ` Eric Auger
2026-03-11  7:47   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 15/32] hw/arm/tegra241-cmdqv: Emulate global and VINTF VCMDQ register reads Shameer Kolothum
2026-02-27 15:58   ` Jonathan Cameron via
2026-02-27 15:58     ` Jonathan Cameron via qemu development
2026-03-09 17:44   ` Eric Auger
2026-03-09 18:04     ` Shameer Kolothum Thodi
2026-03-09 18:40       ` Nicolin Chen
2026-03-09 18:53         ` Shameer Kolothum Thodi
2026-03-09 19:14           ` Nicolin Chen
2026-03-11  9:26   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 16/32] hw/arm/tegra241-cmdqv: Emulate global and VINTF VCMDQ register writes Shameer Kolothum
2026-03-11 13:32   ` Eric Auger
2026-04-15 13:17     ` Shameer Kolothum Thodi
2026-02-26 10:50 ` [PATCH v3 17/32] hw/arm/tegra241-cmdqv: mmap VINTF Page0 for CMDQV Shameer Kolothum
2026-03-09 17:52   ` Eric Auger
2026-03-11  7:55   ` Eric Auger
2026-03-11  9:26     ` Shameer Kolothum Thodi
2026-03-11 10:05       ` Eric Auger
2026-03-11 12:34         ` Shameer Kolothum Thodi
2026-03-11 13:19           ` Eric Auger
2026-03-11 13:59             ` Shameer Kolothum Thodi
     [not found]               ` <70cab06d-2114-46b6-ab56-403cbd0003e0@redhat.com>
2026-03-12 18:05                 ` Shameer Kolothum Thodi
2026-03-12 21:11                   ` Nicolin Chen
2026-03-11 13:43   ` Eric Auger
2026-03-11 13:59   ` Eric Auger
2026-04-13  6:52     ` Shameer Kolothum Thodi
2026-02-26 10:50 ` [PATCH v3 18/32] system/physmem: Add address_space_is_ram() helper Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 19/32] hw/arm/tegra241-cmdqv: Allocate HW VCMDQs on base register programming Shameer Kolothum
2026-03-11 14:33   ` Eric Auger
2026-04-13  7:40     ` Shameer Kolothum Thodi
2026-02-26 10:50 ` [PATCH v3 20/32] hw/arm/tegra241-cmdqv: Use mmap'ed VINTF page0 as VCMDQ backing Shameer Kolothum
2026-03-11 14:52   ` Eric Auger
2026-03-11 15:43     ` Shameer Kolothum Thodi
2026-02-26 10:50 ` [PATCH v3 21/32] hw/arm/tegra241-cmdqv: Map VINTF page0 into guest MMIO space Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 22/32] hw/arm/tegra241-cmdqv: Add vEVENTQ allocation and free Shameer Kolothum
2026-03-09 17:24   ` Nicolin Chen
2026-03-09 17:41     ` Shameer Kolothum Thodi
2026-03-09 19:37       ` Nicolin Chen
2026-02-26 10:50 ` [PATCH v3 23/32] hw/arm/smmuv3-accel: Introduce common helper for veventq read Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 24/32] hw/arm/tegra241-cmdqv: Read and propagate Tegra241 CMDQV errors Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 25/32] hw/arm/tegra241-cmdqv: Add reset handler Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 26/32] hw/arm/tegra241-cmdqv: Limit queue size based on backend page size Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 27/32] tests/qtest/bios-tables-test: Prepare for IORT SMMUv3 node identifier change Shameer Kolothum
2026-03-09 18:06   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 28/32] hw/arm/smmuv3: Add per-device identifier property Shameer Kolothum
2026-03-09 18:11   ` Eric Auger
2026-03-09 18:22   ` Eric Auger
2026-03-09 18:33     ` Shameer Kolothum Thodi
2026-02-26 10:50 ` [PATCH v3 29/32] tests/qtest/bios-tables-test: Update IORT blobs for SMMUv3 identifier change Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 30/32] hw/arm/smmuv3-accel: Introduce helper to query CMDQV type Shameer Kolothum
2026-03-09 18:05   ` Eric Auger
2026-02-26 10:50 ` [PATCH v3 31/32] hw/arm/virt-acpi: Advertise Tegra241 CMDQV nodes in DSDT Shameer Kolothum
2026-02-26 10:50 ` [PATCH v3 32/32] hw/arm/smmuv3: Add cmdqv property for SMMUv3 device Shameer Kolothum
2026-03-11 18:24 ` [PATCH v3 00/32] hw/arm/virt: Introduce Tegra241 CMDQV support for accelerated SMMUv3 Eric Auger
2026-03-11 18:34   ` Shameer Kolothum Thodi
2026-03-11 20:00     ` Jason Gunthorpe
2026-03-13 11:06       ` Shameer Kolothum Thodi

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=20260226105056.897-1-skolothumtho@nvidia.com \
    --to=skolothumtho@nvidia.com \
    --cc=alex@shazbot.org \
    --cc=clg@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=jan@nvidia.com \
    --cc=jgg@nvidia.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=kjaju@nvidia.com \
    --cc=mochs@nvidia.com \
    --cc=nathanc@nvidia.com \
    --cc=nicolinc@nvidia.com \
    --cc=peter.maydell@linaro.org \
    --cc=phrdina@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=zhangfei.gao@linaro.org \
    --cc=zhenzhong.duan@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.