Re: [PATCH v3 0/6] intel_iommu: Enable PRQ support for passthrough device
Clément MATHIEU--DRIF <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
Hi Zhenzhong,
I will read this series early next week.
thanks for the respin!
btw, related to this work: have ever seen
vfio_device_get_aw_bits returning 47 whereas
the iommu supports 48? This leads the following
aw test to fail:
```
ret = hiodc->get_cap(hiod, HOST_IOMMU_DEVICE_CAP_AW_BITS, errp);
if (ret < 0) {
return false;
}
if (s->aw_bits > ret) {
error_setg(errp, "aw-bits %d > host aw-bits %d", s->aw_bits, ret);
return false;
}
```
I got this when trying to nest VMs.
On Thu, 2026-08-06 at 03:38 -0400, Zhenzhong Duan wrote:
> Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.
>
>
> Hi,
>
> When svm=on,pasid-bits=N,fsts=on is configured for virtual vtd, we enable
> guest's support for vSVM. In this case, the host VTD may generate
> recoverable first stage page fault event, QEMU read the event and inject
> it to guest.
>
> After guest handles the event, it sends a page group response, QEMU gets
> the response and pass it to host VTD.
>
> This series adds QEMU support for receiving such host events through the
> FAULTQ interface and propagating them to the guest, then catching guest's
> responses and propagating them to host.
>
> GIT branch: [https://github.com/yiliu1765/qemu/tree/zhenzhong/iommufd_prq.v3](https://github.com/yiliu1765/qemu/tree/zhenzhong/iommufd_prq.v3)
>
> Tests:
> Tested with DSA wq attached to an user app which triggers IO page fault on
> process page table durging DMA.
>
> Thanks
> Zhenzhong
>
> Changelog:
> v3:
> - convert to PCI pasid before passing to vtd_pri_request_page (Clement)
> - expose vtd_pri_request_page and drop accel_ops pointer (Clement)
> - add a cleanup patch "intel_iommu_accel: Guard VTDAccelPASIDCacheEntry definition" (Philippe)
>
> v2:
> - define fault_fd int type (Liuyi)
> - update comments on FAULTQ_BUF_SIZE (Liuyi)
> - drop param vtd_hiod in vtd_destroy_old_fs_faultq() (Liuyi)
> - s/vtd_propagate_page_group_response_accel/vtd_accel_propagate_page_group_response (Liuyi)
> - call vtd_prq_response_notify() directly instead of through pri_notifier (Liuyi)
> - replace "fault_id != 0" check with "fault_fd < 0" check (Liuyi)
>
>
> Zhenzhong Duan (6):
> intel_iommu_accel: Guard VTDAccelPASIDCacheEntry definition
> backends/iommufd: Introduce iommufd_backend_alloc_faultq
> backends/iommufd: Extend iommufd_backend_alloc_hwpt() with fault_id
> intel_iommu_accel: Add PRQ injection for passthrough device
> intel_iommu_accel: Accept PRQ response for passthrough device
> intel_iommu_accel: teardown FAULTQ resources in bottom half
>
> hw/i386/intel_iommu_accel.h | 16 ++-
> hw/i386/intel_iommu_internal.h | 3 +
> include/hw/i386/intel_iommu.h | 6 +
> include/system/iommufd.h | 7 +-
> backends/iommufd.c | 28 +++-
> hw/arm/smmuv3-accel.c | 6 +-
> hw/i386/intel_iommu.c | 11 +-
> hw/i386/intel_iommu_accel.c | 245 ++++++++++++++++++++++++++++++++-
> hw/vfio/iommufd.c | 2 +-
> backends/trace-events | 3 +-
> hw/i386/trace-events | 2 +
> 11 files changed, 308 insertions(+), 21 deletions(-)
>
> --
> 2.52.0
>