Lines Matching refs:pasid

166 			desc.low = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) |  in intel_flush_svm_range_dev()
169 desc.low = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) | in intel_flush_svm_range_dev()
175 desc.low = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) | in intel_flush_svm_range_dev()
183 desc.low = QI_DEV_EIOTLB_PASID(svm->pasid) | QI_DEV_EIOTLB_SID(sdev->sid) | in intel_flush_svm_range_dev()
209 !cmpxchg64(&svm->iommu->pasid_state_table[svm->pasid].val, 0, 1ULL << 63)) in intel_flush_svm_range()
238 static void intel_flush_pasid_dev(struct intel_svm *svm, struct intel_svm_dev *sdev, int pasid) in intel_flush_pasid_dev() argument
243 desc.low = QI_PC_TYPE | QI_PC_DID(sdev->did) | QI_PC_PASID_SEL | QI_PC_PASID(pasid); in intel_flush_pasid_dev()
267 intel_pasid_clear_entry(sdev->dev, svm->pasid); in intel_mm_release()
268 intel_flush_pasid_dev(svm, sdev, svm->pasid); in intel_mm_release()
285 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()
386 svm->pasid = ret; in intel_svm_bind_mm()
396 intel_pasid_free_id(svm->pasid); in intel_svm_bind_mm()
408 entry = intel_pasid_get_entry(dev, svm->pasid); in intel_svm_bind_mm()
418 intel_flush_pasid_dev(svm, sdev, svm->pasid); in intel_svm_bind_mm()
425 *pasid = svm->pasid; in intel_svm_bind_mm()
435 int intel_svm_unbind_mm(struct device *dev, int pasid) in intel_svm_unbind_mm() argument
447 svm = intel_pasid_lookup_id(pasid); in intel_svm_unbind_mm()
464 intel_flush_pasid_dev(svm, sdev, svm->pasid); in intel_svm_unbind_mm()
467 intel_pasid_clear_entry(dev, svm->pasid); in intel_svm_unbind_mm()
470 intel_pasid_free_id(svm->pasid); in intel_svm_unbind_mm()
494 int intel_svm_is_pasid_valid(struct device *dev, int pasid) in intel_svm_is_pasid_valid() argument
505 svm = intel_pasid_lookup_id(pasid); in intel_svm_is_pasid_valid()
530 u64 pasid:20; member
602 if (!svm || svm->pasid != req->pasid) { in prq_event_thread()
604 svm = intel_pasid_lookup_id(req->pasid); in prq_event_thread()
612 iommu->name, req->pasid, ((unsigned long long *)req)[0], in prq_event_thread()
666 sdev->ops->fault_cb(sdev->dev, req->pasid, req->addr, req->private, rwxp, result); in prq_event_thread()
675 resp.low = QI_PGRP_PASID(req->pasid) | in prq_event_thread()
687 QI_PSTRM_PASID(req->pasid) | QI_PSTRM_RESP_TYPE; in prq_event_thread()