> From: Nicolin Chen <nicolinc@xxxxxxxxxx> > 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?