Messages in this thread | | | From | Lu Baolu <> | Subject | [PATCH 0/8] [PULL REQUEST] Intel IOMMU updates for Linux v6.9 | Date | Tue, 27 Feb 2024 10:14:33 +0800 |
| |
Hi Joerg,
The following changes have been queued for v6.9:
- Add rbtree to track iommu probed devices - Add Intel IOMMU debugfs document - Cleanup and refactoring
All patches are based on v6.8-rc6. The series is also available at: https://github.com/LuBaolu/intel-iommu/commits/vtd-update-for-v6.9
Unfortunately, there is a merge conflict with your next branch, in drivers/iommu/intel/svm.c. I resolved this conflict as below.
diff --cc drivers/iommu/intel/svm.c index b644d57da841,bdf3584ca0af..c1bed89b1026 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@@ -698,14 -693,20 +688,18 @@@ bad_req * If prq is to be handled outside iommu driver via receiver of * the fault notifiers, we skip the page response here. */ - if (!pdev) + mutex_lock(&iommu->iopf_lock); + dev = device_rbtree_find(iommu, req->rid); + if (!dev) { + mutex_unlock(&iommu->iopf_lock); goto bad_req; + } - intel_svm_prq_report(iommu, &pdev->dev, req); - trace_prq_report(iommu, &pdev->dev, req->qw_0, req->qw_1, - if (intel_svm_prq_report(iommu, dev, req)) - handle_bad_prq_event(iommu, req, QI_RESP_INVALID); - else - trace_prq_report(iommu, dev, req->qw_0, req->qw_1, - req->priv_data[0], req->priv_data[1], - iommu->prq_seq_number++); ++ intel_svm_prq_report(iommu, dev, req); ++ trace_prq_report(iommu, dev, req->qw_0, req->qw_1, + req->priv_data[0], req->priv_data[1], + iommu->prq_seq_number++); - pci_dev_put(pdev); + mutex_unlock(&iommu->iopf_lock); prq_advance: head = (head + sizeof(*req)) & PRQ_RING_MASK; } @@@ -781,17 -794,10 +775,8 @@@ void intel_svm_page_response(struct dev qi_submit_sync(iommu, &desc, 1, 0); } -out: - return ret; } - static int intel_svm_set_dev_pasid(struct iommu_domain *domain, - struct device *dev, ioasid_t pasid) - { - struct device_domain_info *info = dev_iommu_priv_get(dev); - struct intel_iommu *iommu = info->iommu; - return intel_svm_bind_mm(iommu, dev, domain, pasid); - } static void intel_svm_domain_free(struct iommu_domain *domain) { kfree(to_dmar_domain(domain));
With above in mind, please consider them for v6.9.
Best regards, Baolu
Erick Archer (1): iommu/vt-d: Use kcalloc() instead of kzalloc()
Jingqi Liu (1): iommu/vt-d: Add the document for Intel IOMMU debugfs
Lu Baolu (3): iommu/vt-d: Remove INTEL_IOMMU_BROKEN_GFX_WA iommu/vt-d: Use rbtree to track iommu probed devices iommu/vt-d: Use device rbtree in iopf reporting path
Tina Zhang (3): iommu/vt-d: Remove treatment for revoking PASIDs with pending page faults iommu/vt-d: Remove initialization for dynamically heap-allocated rcu_head iommu/vt-d: Merge intel_svm_bind_mm() into its caller
drivers/iommu/intel/iommu.h | 10 + drivers/iommu/intel/dmar.c | 4 +- drivers/iommu/intel/iommu.c | 95 +++++- drivers/iommu/intel/perf.c | 2 +- drivers/iommu/intel/svm.c | 39 +-- Documentation/ABI/testing/debugfs-intel-iommu | 276 ++++++++++++++++++ drivers/iommu/intel/Kconfig | 11 - 7 files changed, 391 insertions(+), 46 deletions(-) create mode 100644 Documentation/ABI/testing/debugfs-intel-iommu
-- 2.34.1
| |