PVDRM: Para-Virtualization leveraging DRM as a PV boundary.
PVDRM (Para-Virtualized DRM) is the para-virtualization approach for GPGPU computing.
It takes a conventional Xen splitted driver model;
it provides front-end(
pvdrm-front) and back-end drivers (
In particular, PVDRM uses DRM as a PV boundary. DRM is a common abstraction layer for GPU drivers (e.g. i915 for Intel Intgrated GPUs, radeon for AMD GPUs and nouveau for NVIDIA GPUs). By leveraging DRM APIs (including GEM object APIs), PVDRM enables multiplexing and isolation among VMs without compromising performance. And it gives portability over linux kernel versions.
Currently, it only supports nouveau driver for NVIDIA GPUs. We tested PVDRM on 3.6.5 and 3.17.2 Linux kernels on Xen 4.2.
To build the PVDRM kernel modules, simply hit the
Linux kernel headers need to be installed to build kernel modules.
And install it by
pvdrm-back drivers are installed.
On the domain 0 side, you need to run
nouveau driver for NVIDIA GPUs.
And after that,
modprobe pvdrm-back will load
pvdrm-back back-end driver in the domain 0.
After launching the domain U VM,
modprobe pvdrm-front will load
pvdrm-front front-end driver.
tools/vdrm <device-path> <domain-U> will connect vdrm devices to the specified domain U.
tools/vdrm /dev/dri/card0 1 will create the virtual devices on Xen bus and it will be probed by
sequential option. When it is specified,
pvdrm-back will execute DRM API requests sequentially
cache option. When it is specified,
pvdrm-front will pool allocated GEM object in the front-end driver.
It will reduce hypercall frequency and improve the performance.