Lines Matching refs:pasid

31 static int pasid_private_add(ioasid_t pasid, void *priv)  in pasid_private_add()  argument
33 return xa_alloc(&pasid_private_array, &pasid, priv, in pasid_private_add()
34 XA_LIMIT(pasid, pasid), GFP_ATOMIC); in pasid_private_add()
37 static void pasid_private_remove(ioasid_t pasid) in pasid_private_remove() argument
39 xa_erase(&pasid_private_array, pasid); in pasid_private_remove()
42 static void *pasid_private_find(ioasid_t pasid) in pasid_private_find() argument
44 return xa_load(&pasid_private_array, pasid); in pasid_private_find()
182 qi_flush_piotlb(sdev->iommu, sdev->did, svm->pasid, address, pages, ih); in __flush_svm_range_dev()
185 svm->pasid, sdev->qdep, address, in __flush_svm_range_dev()
188 svm->pasid, sdev->qdep); in __flush_svm_range_dev()
250 svm->pasid, true); in intel_mm_release()
260 static int pasid_to_svm_sdev(struct device *dev, unsigned int pasid, in pasid_to_svm_sdev() argument
267 if (pasid == IOMMU_PASID_INVALID || pasid >= PASID_MAX) in pasid_to_svm_sdev()
270 svm = pasid_private_find(pasid); in pasid_to_svm_sdev()
301 svm = pasid_private_find(mm->pasid); in intel_svm_bind_mm()
307 svm->pasid = mm->pasid; in intel_svm_bind_mm()
318 ret = pasid_private_add(svm->pasid, svm); in intel_svm_bind_mm()
345 ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, mm->pasid, in intel_svm_bind_mm()
359 pasid_private_remove(mm->pasid); in intel_svm_bind_mm()
366 void intel_svm_remove_dev_pasid(struct device *dev, u32 pasid) in intel_svm_remove_dev_pasid() argument
377 if (pasid_to_svm_sdev(dev, pasid, &svm, &sdev)) in intel_svm_remove_dev_pasid()
388 pasid_private_remove(svm->pasid); in intel_svm_remove_dev_pasid()
410 u64 pasid:20; member
453 void intel_drain_pasid_prq(struct device *dev, u32 pasid) in intel_drain_pasid_prq() argument
490 if (!req->pasid_present || req->pasid != pasid) { in intel_drain_pasid_prq()
509 desc[1].qw0 = QI_EIOTLB_PASID(pasid) | in intel_drain_pasid_prq()
513 desc[2].qw0 = QI_DEV_EIOTLB_PASID(pasid) | in intel_drain_pasid_prq()
555 event.fault.prm.pasid = desc->pasid; in intel_svm_prq_report()
606 desc.qw0 = QI_PGRP_PASID(req->pasid) | in handle_bad_prq_event()
757 if (prm->pasid == 0 || prm->pasid >= PASID_MAX) { in intel_svm_page_response()
771 desc.qw0 = QI_PGRP_PASID(prm->pasid) | QI_PGRP_DID(sid) | in intel_svm_page_response()
795 struct device *dev, ioasid_t pasid) in intel_svm_set_dev_pasid() argument