Hi Jean-Philippe, On Mon, Feb 27, 2017 at 07:54:33PM +0000, Jean-Philippe Brucker wrote: > +extern int iommu_set_svm_ops(struct device *dev, > + const struct iommu_svm_ops *svm_ops); > +extern int iommu_bind_task(struct device *dev, struct task_struct *task, > + int *pasid, int flags, void *priv); > + > +extern int iommu_unbind_task(struct device *dev, int pasid, int flags); I really like that API, it is simpler than what the AMD driver currently implements but should work for it too (once we adapt the AMD-KFD driver to it). One issue I like to have discussed is whether we can make a global PASID allocation (with a one-PASID per-task model) workable with SMMU too. Joerg