On Fri, Oct 13, 2023 at 12:19:23PM -0300, Jason Gunthorpe wrote: > On Thu, Sep 21, 2023 at 12:51:31AM -0700, Yi Liu wrote: > > IOMMU_HWPT_ALLOC already supports iommu_domain allocation for usersapce. > > But it can only allocate a hw_pagetable that associates to a given IOAS, > > i.e. only a kernel-managed hw_pagetable of IOMMU_HWPT_TYPE_DEFAULT type. > > > > IOMMU drivers can now support user-managed hw_pagetables, for two-stage > > translation use cases, that require user data input from the user space. > > > > Extend the IOMMU_HWPT_ALLOC ioctl to accept non-default hwpt_type with a > > type specified user data. Also, update the @pt_id to accept hwpt_id too > > besides an ioas_id. Then, pass them to the downstream alloc_fn(). > > > > Co-developed-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > > Signed-off-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> > > --- > > drivers/iommu/iommufd/hw_pagetable.c | 19 ++++++++++++++++++- > > include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++-- > > 2 files changed, 39 insertions(+), 3 deletions(-) > > Can we also come with a small vt-d patch that does implement an op for > this? Or is it too big? > > It would be nice if we could wrap IOMMU_HWPT_ALLOC into one > self-contained series and another series for invalidate. We now only use IOMMU_HWPT_ALLOC for nested domain allocations, which won't be supported until the cache_invalidate_user ops is preset? /* e.g. the following piece is in iommufd_user_managed_hwpt_alloc */ + /* Driver is buggy by missing cache_invalidate_user in domain_ops */ + if (WARN_ON_ONCE(!hwpt->domain->ops->cache_invalidate_user)) { + rc = -EINVAL; + goto out_abort; + } Thanks Nic