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 <jacob.jun....@linux.intel.com> --- 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); } 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); kfree(svm); } } -- 2.7.4