Hi Jacob, On 8/22/20 6:35 AM, Jacob Pan wrote: > IOASID core maintains the guest-host mapping in the form of SPID and > IOASID. This patch assigns the guest PASID (if valid) as SPID while > binding guest page table with a host PASID. This mapping will be used > for lookup and notifications. > > Signed-off-by: Jacob Pan <[email protected]> > --- > drivers/iommu/intel/svm.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c > index d8a5efa75095..4c958b1aec4c 100644 > --- a/drivers/iommu/intel/svm.c > +++ b/drivers/iommu/intel/svm.c > @@ -406,6 +406,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, > struct device *dev, > if (data->flags & IOMMU_SVA_GPASID_VAL) { > svm->gpasid = data->gpasid; > svm->flags |= SVM_FLAG_GUEST_PASID; > + ioasid_attach_spid(data->hpasid, data->gpasid); don't you want to handle the returned value? > } > svm->iommu = iommu; > /* > @@ -517,6 +518,7 @@ int intel_svm_unbind_gpasid(struct device *dev, int pasid) > ioasid_attach_data(pasid, NULL); > ioasid_notify(pasid, IOASID_UNBIND, > IOASID_NOTIFY_SET); > + ioasid_attach_spid(pasid, INVALID_IOASID); So this answers my previous question ;-) but won't it enter the if (!ioasid_data) path and fail to reset the spid?
Eric > kfree(svm); > } > } >

