[PATCH v1 0/5] drm/xe/sriov: Don't migrate dmabuf BO to System RAM while running in VM
Vivek Kasireddy
vivek.kasireddy at intel.com
Sat Oct 12 02:40:22 UTC 2024
While testing [1] and [2] with a SRIOV enabled dGPU, it was noticed
that migrating a BO to System RAM before exporting it as a dmabuf
results in considerable performance degradation while running in a
Guest VM. For example, running a simple 3D app such as weston-simple-egl
would yield ~50 FPS instead of ~59 FPS, assuming a mode of 1920x1080 at 60.
One fix to this problem is to not migrate the BO and keep it in VRAM
during export. However, given that the GPU running in PF mode on the
Host cannot effectively access the PCI BAR addresses backing the
imported dmabuf BO, they need to be translated into LMEM addresses
(DPA) to enable this use-case to work properly.
With this patch series applied, it would become possible to display
(via Qemu GTK UI) Guest VM compositor's framebuffer (created in its LMEM)
on the Host without having to make any copies of it or a roundtrip
to System RAM. And, weston-simple-egl can now achieve ~59 FPS while
running with Gnome Wayland in the Guest VM.
[1] https://lore.kernel.org/dri-devel/20240813035509.3360760-1-vivek.kasireddy@intel.com/
[2] https://lore.kernel.org/dri-devel/20240624065552.1572580-1-vivek.kasireddy@intel.com/
Patchset overview:
Patch 1: PCI driver patch to not block P2P DMA between VF and PF
Patch 2: Prevent BO migration to System RAM while running in VM
Patch 3: Helper function to get VF's starting address in LMEM
Patch 4-5: Create new SG for VRAM based dmabuf BO to hold translated
LMEM addresses
This series is tested using the following method:
- Run Qemu with the following relevant options:
qemu-system-x86_64 -m 4096m ....
-device vfio-pci,host=0000:03:00.1
-device virtio-vga,max_outputs=1,blob=true,xres=1920,yres=1080
-display gtk,gl=on
-object memory-backend-memfd,id=mem1,size=4096M
-machine memory-backend=mem1 ...
- Run Gnome Wayland with the following options in the Guest VM:
# cat /usr/lib/udev/rules.d/61-mutter-primary-gpu.rules
ENV{DEVNAME}=="/dev/dri/card1", TAG+="mutter-device-preferred-primary", TAG+="mutter-device-disable-kms-modifiers"
# XDG_SESSION_TYPE=wayland dbus-run-session -- /usr/bin/gnome-shell --wayland --no-x11 &
Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
Cc: Michał Winiarski <michal.winiarski at intel.com>
Cc: Simona Vetter <simona at ffwll.ch>
Cc: Matthew Auld <matthew.auld at intel.com>
Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
Cc: Dongwon Kim <dongwon.kim at intel.com>
Vivek Kasireddy (5):
PCI/P2PDMA: Don't enforce ACS check for functions of same device
drm/xe/dmabuf: Don't migrate BO to System RAM while running in VF mode
drm/xe/pf: Add a helper function to get a VF's starting address in
LMEM
drm/xe/bo: Create a new sg for dmabuf BOs that are associated with a
VF
drm/xe/pt: Add an additional check for dmabuf BOs while updating PTEs
drivers/gpu/drm/xe/xe_bo.c | 108 ++++++++++++++++++++-
drivers/gpu/drm/xe/xe_bo_types.h | 6 ++
drivers/gpu/drm/xe/xe_dma_buf.c | 9 +-
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 +++++
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h | 1 +
drivers/gpu/drm/xe/xe_pt.c | 5 +-
drivers/pci/p2pdma.c | 12 ++-
include/linux/pci.h | 1 +
8 files changed, 158 insertions(+), 7 deletions(-)
--
2.45.1
More information about the dri-devel
mailing list