Re: [PATCH v9 10/11] iommu: Per-domain I/O page fault handling

From: Baolu Lu
Date: Tue Jun 28 2022 - 08:18:29 EST


On 2022/6/28 18:02, Tian, Kevin wrote:
From: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx>
Sent: Tuesday, June 28, 2022 5:44 PM

On Tue, Jun 28, 2022 at 08:39:36AM +0000, Tian, Kevin wrote:
From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Sent: Tuesday, June 21, 2022 10:44 PM

Tweak the I/O page fault handling framework to route the page faults to
the domain and call the page fault handler retrieved from the domain.
This makes the I/O page fault handling framework possible to serve more
usage scenarios as long as they have an IOMMU domain and install a
page
fault handler in it. Some unused functions are also removed to avoid
dead code.

The iommu_get_domain_for_dev_pasid() which retrieves attached
domain
for a {device, PASID} pair is used. It will be used by the page fault
handling framework which knows {device, PASID} reported from the
iommu
driver. We have a guarantee that the SVA domain doesn't go away during
IOPF handling, because unbind() waits for pending faults with
iopf_queue_flush_dev() before freeing the domain. Hence, there's no
need
to synchronize life cycle of the iommu domains between the unbind() and
the interrupt threads.

I found iopf_queue_flush_dev() is only called in intel-iommu driver. Did
I overlook anything?

The SMMU driver will need it as well when we upstream PRI support.
Currently it only supports stall, and that requires the device driver to
flush all DMA including stalled transactions *before* calling unbind(), so
ne need for iopf_queue_flush_dev() in this case.


then it makes sense. Probably Baolu can add this information in the
commit msg so others with similar question can quickly get the
point here.

Sure. Updated.

Best regards,
baolu