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>,
	<jgg@nvidia.com>, <nicolinc@nvidia.com>, <ddutile@redhat.com>,
	<berrange@redhat.com>, <clg@redhat.com>, <alex@shazbot.org>,
	<nathanc@nvidia.com>, <mochs@nvidia.com>, <smostafa@google.com>,
	<wangzhou1@hisilicon.com>, <jiangkunkun@huawei.com>,
	<jonathan.cameron@huawei.com>, <zhangfei.gao@linaro.org>,
	<zhenzhong.duan@intel.com>, <yi.l.liu@intel.com>,
	<kjaju@nvidia.com>
Subject: [PATCH v7 01/36] backends/iommufd: Introduce iommufd_backend_alloc_vdev
Date: Sun, 11 Jan 2026 19:52:47 +0000	[thread overview]
Message-ID: <20260111195508.106943-2-skolothumtho@nvidia.com> (raw)
In-Reply-To: <20260111195508.106943-1-skolothumtho@nvidia.com>

From: Nicolin Chen <nicolinc@nvidia.com>

Add a helper to allocate an iommufd device's virtual device (in the user
space) per a viommu instance.

While at it, introduce a struct IOMMUFDVdev for later use by vendor
IOMMU implementations.

Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: Shameer Kolothum <skolothumtho@nvidia.com>
---
 backends/iommufd.c       | 27 +++++++++++++++++++++++++++
 backends/trace-events    |  1 +
 include/system/iommufd.h | 12 ++++++++++++
 3 files changed, 40 insertions(+)

diff --git a/backends/iommufd.c b/backends/iommufd.c
index 3d4a4ae736..e68a2c934f 100644
--- a/backends/iommufd.c
+++ b/backends/iommufd.c
@@ -472,6 +472,33 @@ bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, uint32_t dev_id,
     return true;
 }
 
+bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint32_t dev_id,
+                                uint32_t viommu_id, uint64_t virt_id,
+                                uint32_t *out_vdev_id, Error **errp)
+{
+    int ret;
+    struct iommu_vdevice_alloc alloc_vdev = {
+        .size = sizeof(alloc_vdev),
+        .viommu_id = viommu_id,
+        .dev_id = dev_id,
+        .virt_id = virt_id,
+    };
+
+    ret = ioctl(be->fd, IOMMU_VDEVICE_ALLOC, &alloc_vdev);
+
+    trace_iommufd_backend_alloc_vdev(be->fd, dev_id, viommu_id, virt_id,
+                                     alloc_vdev.out_vdevice_id, ret);
+
+    if (ret) {
+        error_setg_errno(errp, errno, "IOMMU_VDEVICE_ALLOC failed");
+        return false;
+    }
+
+    g_assert(out_vdev_id);
+    *out_vdev_id = alloc_vdev.out_vdevice_id;
+    return true;
+}
+
 bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
                                            uint32_t hwpt_id, Error **errp)
 {
diff --git a/backends/trace-events b/backends/trace-events
index 01c2d9bde9..8408dc8701 100644
--- a/backends/trace-events
+++ b/backends/trace-events
@@ -22,3 +22,4 @@ iommufd_backend_set_dirty(int iommufd, uint32_t hwpt_id, bool start, int ret) "
 iommufd_backend_get_dirty_bitmap(int iommufd, uint32_t hwpt_id, uint64_t iova, uint64_t size, uint64_t page_size, int ret) " iommufd=%d hwpt=%u iova=0x%"PRIx64" size=0x%"PRIx64" page_size=0x%"PRIx64" (%d)"
 iommufd_backend_invalidate_cache(int iommufd, uint32_t id, uint32_t data_type, uint32_t entry_len, uint32_t entry_num, uint32_t done_num, uint64_t data_ptr, int ret) " iommufd=%d id=%u data_type=%u entry_len=%u entry_num=%u done_num=%u data_ptr=0x%"PRIx64" (%d)"
 iommufd_backend_alloc_viommu(int iommufd, uint32_t dev_id, uint32_t type, uint32_t hwpt_id, uint32_t viommu_id, int ret) " iommufd=%d type=%u dev_id=%u hwpt_id=%u viommu_id=%u (%d)"
+iommufd_backend_alloc_vdev(int iommufd, uint32_t dev_id, uint32_t viommu_id, uint64_t virt_id, uint32_t vdev_id, int ret) " iommufd=%d dev_id=%u viommu_id=%u virt_id=0x%"PRIx64" vdev_id=%u (%d)"
diff --git a/include/system/iommufd.h b/include/system/iommufd.h
index c0d7c50f7e..67c42f78a3 100644
--- a/include/system/iommufd.h
+++ b/include/system/iommufd.h
@@ -48,6 +48,14 @@ typedef struct IOMMUFDViommu {
     uint32_t viommu_id;  /* virtual IOMMU ID of allocated object */
 } IOMMUFDViommu;
 
+/*
+ * Virtual device object for a physical device bind to a vIOMMU.
+ */
+typedef struct IOMMUFDVdev {
+    uint32_t vdevice_id; /* object handle for vDevice */
+    uint32_t virt_id;  /* virtual device ID */
+} IOMMUFDVdev;
+
 bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp);
 void iommufd_backend_disconnect(IOMMUFDBackend *be);
 
@@ -73,6 +81,10 @@ bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, uint32_t dev_id,
                                   uint32_t viommu_type, uint32_t hwpt_id,
                                   uint32_t *out_hwpt, Error **errp);
 
+bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint32_t dev_id,
+                                uint32_t viommu_id, uint64_t virt_id,
+                                uint32_t *out_vdev_id, Error **errp);
+
 bool iommufd_backend_set_dirty_tracking(IOMMUFDBackend *be, uint32_t hwpt_id,
                                         bool start, Error **errp);
 bool iommufd_backend_get_dirty_bitmap(IOMMUFDBackend *be, uint32_t hwpt_id,
-- 
2.43.0



  reply	other threads:[~2026-01-11 19:57 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-11 19:52 [PATCH v7 00/36] hw/arm/virt: Add support for user-creatable accelerated SMMUv3 Shameer Kolothum
2026-01-11 19:52 ` Shameer Kolothum [this message]
2026-01-12 11:45   ` [PATCH v7 01/36] backends/iommufd: Introduce iommufd_backend_alloc_vdev Cédric Le Goater
2026-01-12 14:04     ` Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 02/36] hw/arm/smmu-common: Factor out common helper functions and export Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 03/36] hw/arm/smmu-common: Make iommu ops part of SMMUState Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 04/36] hw/arm/smmuv3-accel: Introduce smmuv3 accel device Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 05/36] hw/arm/smmuv3-accel: Initialize shared system address space Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 06/36] hw/pci/pci: Move pci_init_bus_master() after adding device to bus Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 07/36] hw/pci/pci: Add optional supports_address_space() callback Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 08/36] hw/pci-bridge/pci_expander_bridge: Move TYPE_PXB_PCIE_DEV to header Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 09/36] hw/arm/smmuv3-accel: Restrict accelerated SMMUv3 to vfio-pci endpoints with iommufd Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 10/36] hw/arm/smmuv3: Implement get_viommu_cap() callback Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 11/36] hw/arm/smmuv3-accel: Add set/unset_iommu_device callback Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 12/36] hw/arm/smmuv3: propagate smmuv3_cmdq_consume() errors to caller Shameer Kolothum
2026-01-11 19:52 ` [PATCH v7 13/36] hw/arm/smmuv3-accel: Add nested vSTE install/uninstall support Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 14/36] hw/arm/smmuv3-accel: Install SMMUv3 GBPA based hwpt Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 15/36] hw/pci/pci: Introduce a callback to retrieve the MSI doorbell GPA directly Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 16/36] hw/arm/smmuv3-accel: Implement get_msi_direct_gpa callback Shameer Kolothum
2026-01-19 13:59   ` Eric Auger
2026-01-11 19:53 ` [PATCH v7 17/36] hw/arm/virt: Set msi-gpa property Shameer Kolothum
2026-01-11 21:43   ` Mohamed Mediouni
2026-01-12  9:45     ` Shameer Kolothum
2026-01-12 10:17       ` Mohamed Mediouni
2026-01-12 15:01         ` Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 18/36] hw/arm/smmuv3-accel: Add support to issue invalidation cmd to host Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 19/36] hw/arm/smmuv3: Initialize ID registers early during realize() Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 20/36] hw/arm/smmuv3-accel: Get host SMMUv3 hw info and validate Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 21/36] hw/pci-host/gpex: Allow to generate preserve boot config DSM #5 Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 22/36] hw/arm/virt: Set PCI preserve_config for accel SMMUv3 Shameer Kolothum
2026-01-14 11:13   ` Jonathan Cameron via
2026-01-14 11:13     ` Jonathan Cameron via qemu development
2026-01-11 19:53 ` [PATCH v7 23/36] tests/qtest/bios-tables-test: Prepare for IORT revison upgrade Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 24/36] hw/arm/virt-acpi-build: Add IORT RMR regions to handle MSI nested binding Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 25/36] tests/qtest/bios-tables-test: Update IORT blobs after revision upgrade Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 26/36] hw/arm/smmuv3: Block migration when accel is enabled Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 27/36] hw/arm/smmuv3: Add accel property for SMMUv3 device Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 28/36] hw/arm/smmuv3-accel: Add a property to specify RIL support Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 29/36] hw/arm/smmuv3-accel: Add support for ATS Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 30/36] hw/arm/smmuv3-accel: Add property to specify OAS bits Shameer Kolothum
2026-01-14 11:19   ` Jonathan Cameron via
2026-01-14 11:19     ` Jonathan Cameron via qemu development
2026-01-11 19:53 ` [PATCH v7 31/36] backends/iommufd: Retrieve PASID width from iommufd_backend_get_device_info() Shameer Kolothum
2026-01-11 19:53 ` [PATCH v7 32/36] backends/iommufd: Add get_pasid_info() callback Shameer Kolothum
2026-01-14 11:23   ` Jonathan Cameron via
2026-01-14 11:23     ` Jonathan Cameron via qemu development
2026-01-19 14:06   ` Eric Auger
2026-01-11 19:53 ` [PATCH v7 33/36] hw/pci: Add helper to insert PCIe extended capability at a fixed offset Shameer Kolothum
2026-01-14  4:18   ` Zhangfei Gao
2026-01-14 10:36     ` Shameer Kolothum
2026-01-15  2:34       ` Zhangfei Gao
2026-01-19 16:01       ` Eric Auger
2026-01-19 16:03         ` Shameer Kolothum
2026-01-14 11:45   ` Jonathan Cameron via
2026-01-14 11:45     ` Jonathan Cameron via qemu development
2026-01-14 12:26     ` Shameer Kolothum
2026-01-14 12:35       ` Michael S. Tsirkin
2026-01-15 11:38         ` Jonathan Cameron via
2026-01-15 11:38           ` Jonathan Cameron via qemu development
2026-01-11 19:53 ` [PATCH v7 34/36] hw/pci: Factor out common PASID capability initialization Shameer Kolothum
2026-01-14 11:46   ` Jonathan Cameron via
2026-01-14 11:46     ` Jonathan Cameron via qemu development
2026-01-19 14:12   ` Eric Auger
2026-01-11 19:53 ` [PATCH v7 35/36] hw/vfio/pci: Synthesize PASID capability for vfio-pci devices Shameer Kolothum
2026-01-12  2:38   ` Duan, Zhenzhong
2026-01-14 11:51   ` Jonathan Cameron via
2026-01-14 11:51     ` Jonathan Cameron via qemu development
2026-01-19 16:16   ` Eric Auger
2026-01-19 17:22     ` Shameer Kolothum
2026-01-19 19:07       ` Cédric Le Goater
2026-01-11 19:53 ` [PATCH v7 36/36] hw/arm/smmuv3-accel: Make SubstreamID support configurable Shameer Kolothum
2026-01-19  8:17 ` [PATCH v7 00/36] hw/arm/virt: Add support for user-creatable accelerated SMMUv3 Zhangfei Gao
2026-01-19  8:36   ` Shameer Kolothum
2026-01-19 14:20 ` Michael S. Tsirkin
2026-01-19 16:57 ` Eric Auger

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=20260111195508.106943-2-skolothumtho@nvidia.com \
    --to=skolothumtho@nvidia.com \
    --cc=alex@shazbot.org \
    --cc=berrange@redhat.com \
    --cc=clg@redhat.com \
    --cc=ddutile@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=jiangkunkun@huawei.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=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=smostafa@google.com \
    --cc=wangzhou1@hisilicon.com \
    --cc=yi.l.liu@intel.com \
    --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.