Lines Matching refs:pasid

23 #include "pasid.h"
31 static int pasid_private_add(ioasid_t pasid, void *priv)
33 return xa_alloc(&pasid_private_array, &pasid, priv,
34 XA_LIMIT(pasid, pasid), GFP_ATOMIC);
37 static void pasid_private_remove(ioasid_t pasid)
39 xa_erase(&pasid_private_array, pasid);
42 static void *pasid_private_find(ioasid_t pasid)
44 return xa_load(&pasid_private_array, pasid);
182 qi_flush_piotlb(sdev->iommu, sdev->did, svm->pasid, address, pages, ih);
185 svm->pasid, sdev->qdep, address,
188 svm->pasid, sdev->qdep);
228 qi_flush_piotlb(sdev->iommu, sdev->did, svm->pasid, 0, -1UL, 0);
231 svm->pasid, sdev->qdep,
234 svm->pasid, sdev->qdep);
276 svm->pasid, true);
286 static int pasid_to_svm_sdev(struct device *dev, unsigned int pasid,
293 if (pasid == IOMMU_PASID_INVALID || pasid >= PASID_MAX)
296 svm = pasid_private_find(pasid);
327 svm = pasid_private_find(mm->pasid);
333 svm->pasid = mm->pasid;
344 ret = pasid_private_add(svm->pasid, svm);
369 /* Setup the pasid table: */
371 ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, mm->pasid,
385 pasid_private_remove(mm->pasid);
392 void intel_svm_remove_dev_pasid(struct device *dev, u32 pasid)
403 if (pasid_to_svm_sdev(dev, pasid, &svm, &sdev))
414 pasid_private_remove(svm->pasid);
436 u64 pasid:20;
465 * intel_drain_pasid_prq - Drain page requests and responses for a pasid
467 * @pasid: pasid for draining
469 * Drain all pending page requests and responses related to @pasid in both
471 * driver has stopped DMA, the pasid entry has been cleared, and both IOTLB
474 * It waits until all pending page requests for @pasid in the page fault
479 void intel_drain_pasid_prq(struct device *dev, u32 pasid)
516 if (!req->pasid_present || req->pasid != pasid) {
535 desc[1].qw0 = QI_EIOTLB_PASID(pasid) |
539 desc[2].qw0 = QI_DEV_EIOTLB_PASID(pasid) |
581 event.fault.prm.pasid = desc->pasid;
632 desc.qw0 = QI_PGRP_PASID(req->pasid) |
783 if (prm->pasid == 0 || prm->pasid >= PASID_MAX) {
797 desc.qw0 = QI_PGRP_PASID(prm->pasid) | QI_PGRP_DID(sid) |
821 struct device *dev, ioasid_t pasid)