Messages in this thread Patch in this message | | | Date | Tue, 28 Jun 2022 19:02:25 +0800 | Subject | Re: [PATCH v9 10/11] iommu: Per-domain I/O page fault handling | From | Baolu Lu <> |
| |
On 2022/6/28 16:39, Tian, Kevin wrote: >> static void iopf_handle_group(struct work_struct *work) >> { >> struct iopf_group *group; >> + struct iommu_domain *domain; >> struct iopf_fault *iopf, *next; >> enum iommu_page_response_code status = >> IOMMU_PAGE_RESP_SUCCESS; >> >> group = container_of(work, struct iopf_group, work); >> + domain = iommu_get_domain_for_dev_pasid(group->dev, >> + group->last_fault.fault.prm.pasid); >> + if (!domain || !domain->iopf_handler) >> + status = IOMMU_PAGE_RESP_INVALID; > Miss a comment on why no refcnt is required on domain as explained > in the commit msg.
I had some comments around iommu_queue_iopf() in the previous patch. The iommu_queue_iopf() is the generic page fault handler exposed by iommu core, hence that's the right place to document this.
Post it below as well:
diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c index 1df8c1dcae77..aee9e033012f 100644 --- a/drivers/iommu/io-pgfault.c +++ b/drivers/iommu/io-pgfault.c @@ -181,6 +181,13 @@ static void iopf_handle_group(struct work_struct *work) * request completes, outstanding faults will have been dealt with by the time * the PASID is freed. * + * Any valid page fault will be eventually routed to an iommu domain and the + * page fault handler installed there will get called. The users of this + * handling framework should guarantee that the iommu domain could only be + * freed after the device has stopped generating page faults (or the iommu + * hardware has been set to block the page faults) and the pending page faults + * have been flushed. + * * Return: 0 on success and <0 on error. */ int iommu_queue_iopf(struct iommu_fault *fault, void *cookie) Best regards, baolu
| |