Lines Matching refs:pasid

23 #include "pasid.h"
30 static int pasid_private_add(ioasid_t pasid, void *priv)
32 return xa_alloc(&pasid_private_array, &pasid, priv,
33 XA_LIMIT(pasid, pasid), GFP_ATOMIC);
36 static void pasid_private_remove(ioasid_t pasid)
38 xa_erase(&pasid_private_array, pasid);
41 static void *pasid_private_find(ioasid_t pasid)
43 return xa_load(&pasid_private_array, pasid);
181 qi_flush_piotlb(sdev->iommu, sdev->did, svm->pasid, address, pages, ih);
184 svm->pasid, sdev->qdep, address,
187 svm->pasid, sdev->qdep);
227 qi_flush_piotlb(sdev->iommu, sdev->did, svm->pasid, 0, -1UL, 0);
230 svm->pasid, sdev->qdep,
233 svm->pasid, sdev->qdep);
275 svm->pasid, true);
285 static int pasid_to_svm_sdev(struct device *dev, unsigned int pasid,
292 if (pasid == IOMMU_PASID_INVALID || pasid >= PASID_MAX)
295 svm = pasid_private_find(pasid);
318 struct device *dev, ioasid_t pasid)
328 svm = pasid_private_find(pasid);
334 svm->pasid = pasid;
345 ret = pasid_private_add(svm->pasid, svm);
369 /* Setup the pasid table: */
371 ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, pasid,
385 pasid_private_remove(pasid);
392 void intel_svm_remove_dev_pasid(struct device *dev, u32 pasid)
398 if (pasid_to_svm_sdev(dev, pasid, &svm, &sdev))
409 pasid_private_remove(svm->pasid);
424 u64 pasid:20;
453 * intel_drain_pasid_prq - Drain page requests and responses for a pasid
455 * @pasid: pasid for draining
457 * Drain all pending page requests and responses related to @pasid in both
459 * driver has stopped DMA, the pasid entry has been cleared, and both IOTLB
462 * It waits until all pending page requests for @pasid in the page fault
467 void intel_drain_pasid_prq(struct device *dev, u32 pasid)
504 if (!req->pasid_present || req->pasid != pasid) {
523 desc[1].qw0 = QI_EIOTLB_PASID(pasid) |
527 desc[2].qw0 = QI_DEV_EIOTLB_PASID(pasid) |
565 event.fault.prm.pasid = desc->pasid;
616 desc.qw0 = QI_PGRP_PASID(req->pasid) |
759 desc.qw0 = QI_PGRP_PASID(prm->pasid) | QI_PGRP_DID(sid) |