Thread (149 messages) 149 messages, 7 authors, 2025-05-12

Re: [PATCH v2 02/19] iommufd/viommu: Add IOMMUFD_OBJ_VIOMMU and IOMMU_VIOMMU_ALLOC ioctl

From: Jason Gunthorpe <jgg@nvidia.com>
Date: 2024-09-04 16:26:26
Also in: linux-iommu, linux-kselftest, lkml

On Sun, Sep 01, 2024 at 10:27:09PM -0700, Nicolin Chen wrote:
On Sun, Sep 01, 2024 at 10:39:17AM +0800, Baolu Lu wrote:
quoted
On 2024/8/28 0:59, Nicolin Chen wrote:
quoted
+int iommufd_viommu_alloc_ioctl(struct iommufd_ucmd *ucmd)
+{
+     struct iommu_viommu_alloc *cmd = ucmd->cmd;
+     struct iommufd_hwpt_paging *hwpt_paging;
+     struct iommufd_viommu *viommu;
+     struct iommufd_device *idev;
+     int rc;
+
+     if (cmd->flags)
+             return -EOPNOTSUPP;
+
+     idev = iommufd_get_device(ucmd, cmd->dev_id);
Why does a device reference count is needed here? When is this reference
count released after the VIOMMU is allocated?
Hmm, it was used to get dev->iommu->iommu_dev to pin the VIOMMU to
a physical IOMMU instance (in v1). Jason suggested to remove that,
yet I didn't realize that this idev is now completely useless.

With that being said, a parent HWPT could be shared across VIOMUs
allocated for the same VM. So, I think we do need a dev pointer to
know which physical instance the VIOMMU allocates for, especially
for a driver-managed VIOMMU.
Eventually you need a way to pin the physical iommu, without pinning
any idevs. Not sure how best to do that

Jason
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help