On Sat, Mar 01, 2025 at 12:16:00PM +0800, Zhangfei Gao wrote:
On Wed, 26 Feb 2025 at 01:33, Nicolin Chen nicolinc@nvidia.com wrote:
As the vIOMMU infrastructure series part-3, this introduces a new vEVENTQ object. The existing FAULT object provides a nice notification pathway to the user space with a queue already, so let vEVENTQ reuse that.
Mimicing the HWPT structure, add a common EVENTQ structure to support its derivatives: IOMMUFD_OBJ_FAULT (existing) and IOMMUFD_OBJ_VEVENTQ (new).
An IOMMUFD_CMD_VEVENTQ_ALLOC is introduced to allocate vEVENTQ object for vIOMMUs. One vIOMMU can have multiple vEVENTQs in different types but can not support multiple vEVENTQs in the same type.
The forwarding part is fairly simple but might need to replace a physical device ID with a virtual device ID in a driver-level event data structure. So, this also adds some helpers for drivers to use.
As usual, this series comes with the selftest coverage for this new ioctl and with a real world use case in the ARM SMMUv3 driver.
This is on Github: https://github.com/nicolinc/iommufd/commits/iommufd_veventq-v8 Paring QEMU branch for testing: https://github.com/nicolinc/qemu/commits/wip/for_iommufd_veventq-v8
Thanks Nico
Tested-by: Zhangfei Gao zhangfei.gao@linaro.org
After rebase on your branch https://github.com/Linaro/linux-kernel-warpdrive/tree/iommufd_veventq-v8 https://github.com/Linaro/qemu/tree/for_iommufd_veventq-v8
Tested with multi-device in guests, with io page faults happen.
Thanks for testing!
Nicolin