RE: [PATCH RFCv1 08/14] iommufd: Add IOMMU_VIOMMU_SET_DEV_ID ioctl

Tian, Kevin
2024-05-23T06:43:00Z

> From: Nicolin Chen <nicolinc@nvidia.com>
> Sent: Saturday, April 13, 2024 11:47 AM
>
> Introduce a new ioctl to set a per-viommu device virtual id that should be
> linked to the physical device id (or just a struct device pointer).
>
> Since a viommu (user space IOMMU instance) can have multiple devices

this is true...

> while
> it's not ideal to confine a device to one single user space IOMMU instance
> either, these two shouldn't just do a 1:1 mapping. Add two xarrays in

...but why would one device link to multiple viommu instances?

Or is it referring to Tegra194 as arm-smmu-nvidia.c tries to support?

In any case a real example might be useful as this may not be a given
knowledge to all folks.

btw there is a check in the following code:

+ if (viommu->iommu_dev != idev->dev->iommu->iommu_dev) {
+ rc = -EINVAL;
+ goto out_put_viommu;
+ }

I vaguely remember an earlier discussion about multiple vSMMU instances
following the physical SMMU topology, but don't quite recall the exact
reason.

What is the actual technical obstacle prohibiting one to put multiple
VCMDQ's from different SMMU's into one vIOMMU instance?