Skip to content
forked from CPFL/pvdrm

ParaVirtualized DRM (for linux 3.6.5/3.17.2 + nouveau)

Notifications You must be signed in to change notification settings

aswimmingfish/pvdrm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PVDRM

PVDRM: Para-Virtualization leveraging DRM as a PV boundary.

Build Status

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 (pvdrm-back).

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.

Build Instruction

To build the PVDRM kernel modules, simply hit the make command. Linux kernel headers need to be installed to build kernel modules.

make

And install it by

make install

Now, pvdrm-front and pvdrm-back drivers are installed.

Using PVDRM

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. And executing tools/vdrm <device-path> <domain-U> will connect vdrm devices to the specified domain U. For example, tools/vdrm /dev/dri/card0 1 will create the virtual devices on Xen bus and it will be probed by pvdrm-back and pvdrm-front.

Options

back-end driver

pvdrm-back supports sequential option. When it is specified, pvdrm-back will execute DRM API requests sequentially

front-end driver

pvdrm-front supports 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.

About

ParaVirtualized DRM (for linux 3.6.5/3.17.2 + nouveau)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.0%
  • C++ 1.2%
  • Makefile 0.8%