In addition to the patches sent out this weekend by Intel for Xe driver preparations for multi-device Shared Virtual Machine (multi-device SVM), another notable patch series making it out this weekend for the Intel Xe open-source kernel graphics driver is support for mapping DMA-BUFs via IOV interconnects.
This is yet another component to their work around proper SR-IOV support for their latest Arc Pro B-Series graphics cards and ensuring an optimal “Project Battlematrix” experience for multiple GPUs and supporting virtualization.
The set of patches posted overnight allow for mapping DMA-BUFs via interconnects. Beyond that initial groundwork, the patches go through with adding support for mapping DMA-BUFs with IOV interconnects to the VFIO PCI driver and the Intel Xe DRM driver. This should help with a more performant and more efficient experience for sharing of buffers in a SR-IOV virtualized environment.
The patch series from Vivek Kasireddy explains:
“In a typical dma-buf use case, a dmabuf exporter makes its buffer buffer available to an importer by mapping it using DMA APIs such as dma_map_sgtable() or dma_map_resource(). However, this is not desirable in some cases where the exporter and importer are directly connected via a physical or virtual link (or interconnect) and the importer can access the buffer without having it DMA mapped.
So, to address this scenario, this patch series adds APIs to map/unmap dmabufs via interconnects and also provides a helper to identify the first common interconnect between the exporter and importer. Furthermore, this patch series also adds support for IOV interconnect in the vfio-pci driver and Intel Xe driver.
The IOV interconnect is a virtual interconnect between an SRIOV physical function (PF) and its virtual functions (VFs). And, for the IOV interconnect, the addresses associated with a buffer are shared using an xarray (instead of an sg_table) that is populated with entries of type struct range.”
Great seeing their different Project Battlematrix pieces coming together for their open-source Linux driver stack.
