Re: [PATCH v2 0/6] IOMMUFD: Deliver IO page faults to user space

From: Baolu Lu
Date: Wed Nov 29 2023 - 22:44:24 EST


On 2023/11/29 17:08, Shameerali Kolothum Thodi wrote:


-----Original Message-----
From: Lu Baolu [mailto:baolu.lu@xxxxxxxxxxxxxxx]
Sent: 26 October 2023 03:49
To: Jason Gunthorpe <jgg@xxxxxxxx>; Kevin Tian <kevin.tian@xxxxxxxxx>;
Joerg Roedel <joro@xxxxxxxxxx>; Will Deacon <will@xxxxxxxxxx>; Robin
Murphy <robin.murphy@xxxxxxx>; Jean-Philippe Brucker
<jean-philippe@xxxxxxxxxx>; Nicolin Chen <nicolinc@xxxxxxxxxx>; Yi Liu
<yi.l.liu@xxxxxxxxx>; Jacob Pan <jacob.jun.pan@xxxxxxxxxxxxxxx>
Cc: iommu@xxxxxxxxxxxxxxx; linux-kselftest@xxxxxxxxxxxxxxx;
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Lu
Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Subject: [PATCH v2 0/6] IOMMUFD: Deliver IO page faults to user space

Hi folks,

This series implements the functionality of delivering IO page faults to
user space through the IOMMUFD framework for nested translation. Nested
translation is a hardware feature that supports two-stage translation
tables for IOMMU. The second-stage translation table is managed by the
host VMM, while the first-stage translation table is owned by user
space. This allows user space to control the IOMMU mappings for its
devices.

When an IO page fault occurs on the first-stage translation table, the
IOMMU hardware can deliver the page fault to user space through the
IOMMUFD framework. User space can then handle the page fault and
respond
to the device top-down through the IOMMUFD. This allows user space to
implement its own IO page fault handling policies.

User space indicates its capability of handling IO page faults by
setting the IOMMU_HWPT_ALLOC_IOPF_CAPABLE flag when allocating a
hardware page table (HWPT). IOMMUFD will then set up its infrastructure
for page fault delivery. On a successful return of HWPT allocation, the
user can retrieve and respond to page faults by reading and writing to
the file descriptor (FD) returned in out_fault_fd.

The iommu selftest framework has been updated to test the IO page fault
delivery and response functionality.

This series is based on the latest implementation of nested translation
under discussion [1] and the page fault handling framework refactoring in
the IOMMU core [2].

The series and related patches are available on GitHub: [3]

[1]
https://lore.kernel.org/linux-iommu/20230921075138.124099-1-yi.l.liu@int
el.com/
[2]
https://lore.kernel.org/linux-iommu/20230928042734.16134-1-baolu.lu@li
nux.intel.com/
[3]
https://github.com/LuBaolu/intel-iommu/commits/iommufd-io-pgfault-deliv
ery-v2

Hi Baolu,

Hi Shameer,


Do you have a corresponding Qemu git to share? I could give it a spin on our ARM
platform. Please let me know.

This version of the series is tested by the iommufd selftest. We are in
process of developing the QEMU code. I will provide the repo link after
we complete it.

Best regards,
baolu