Lines Matching refs:pasid

159 			desc.low = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) |  in intel_flush_svm_range_dev()
162 desc.low = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) | in intel_flush_svm_range_dev()
168 desc.low = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) | in intel_flush_svm_range_dev()
176 desc.low = QI_DEV_EIOTLB_PASID(svm->pasid) | QI_DEV_EIOTLB_SID(sdev->sid) | in intel_flush_svm_range_dev()
202 !cmpxchg64(&svm->iommu->pasid_state_table[svm->pasid].val, 0, 1ULL << 63)) in intel_flush_svm_range()
239 static void intel_flush_pasid_dev(struct intel_svm *svm, struct intel_svm_dev *sdev, int pasid) in intel_flush_pasid_dev() argument
244 desc.low = QI_PC_TYPE | QI_PC_DID(sdev->did) | QI_PC_PASID_SEL | QI_PC_PASID(pasid); in intel_flush_pasid_dev()
266 svm->iommu->pasid_table[svm->pasid].val = 0; in intel_mm_release()
271 intel_flush_pasid_dev(svm, sdev, svm->pasid); in intel_mm_release()
287 int intel_svm_bind_mm(struct device *dev, int *pasid, int flags, struct svm_dev_ops *ops) in intel_svm_bind_mm() argument
309 } else if (pasid) { in intel_svm_bind_mm()
315 if (pasid && !(flags & SVM_FLAG_PRIVATE_PASID)) { in intel_svm_bind_mm()
323 if (svm->pasid >= pasid_max) { in intel_svm_bind_mm()
326 svm->pasid); in intel_svm_bind_mm()
354 if (ret || !pasid) { in intel_svm_bind_mm()
385 svm->pasid = ret; in intel_svm_bind_mm()
394 idr_remove(&svm->iommu->pasid_idr, svm->pasid); in intel_svm_bind_mm()
399 iommu->pasid_table[svm->pasid].val = (u64)__pa(mm->pgd) | 1; in intel_svm_bind_mm()
401 iommu->pasid_table[svm->pasid].val = (u64)__pa(init_mm.pgd) | 1 | (1ULL << 11); in intel_svm_bind_mm()
418 *pasid = svm->pasid; in intel_svm_bind_mm()
428 int intel_svm_unbind_mm(struct device *dev, int pasid) in intel_svm_unbind_mm() argument
440 svm = idr_find(&iommu->pasid_idr, pasid); in intel_svm_unbind_mm()
457 intel_flush_pasid_dev(svm, sdev, svm->pasid); in intel_svm_unbind_mm()
463 idr_remove(&svm->iommu->pasid_idr, svm->pasid); in intel_svm_unbind_mm()
491 u64 pasid:20; member
554 if (!svm || svm->pasid != req->pasid) { in prq_event_thread()
556 svm = idr_find(&iommu->pasid_idr, req->pasid); in prq_event_thread()
564 iommu->name, req->pasid, ((unsigned long long *)req)[0], in prq_event_thread()
613 sdev->ops->fault_cb(sdev->dev, req->pasid, req->addr, req->private, rwxp, result); in prq_event_thread()
622 resp.low = QI_PGRP_PASID(req->pasid) | in prq_event_thread()
634 QI_PSTRM_PASID(req->pasid) | QI_PSTRM_RESP_TYPE; in prq_event_thread()