Recently installed 7.0 on a xen VM. There is no paravirtual driver video driver for it yet, but there is a project proposal.

After some work (took me considerably more than the estimated 16hs, truth be told) got something usable. The patch is here

To apply the patch, run from the kernel’ src dir

patch -p1 < pvfb.patch  

It will patch the default XEN_DOMU kernel configuration to add the new video/keyboard/mouse drivers. The code is basically a glue between xenbus and genfb | wskbddev | wsmousedev

base functionality is in place, check the sample screencast, but there are several aspect that need review/fixes, among others:

  • Xen suspend/resume seems broken, but so do without the driver, too.
  • No way to modify the screen resolution without recompiling. (default is set to 1280x800, 16bits)
  • Keyboard under X do not recognize arrows/most of keypad keys. These are recognized when in terminal, so I think the problem is in wskbd driver in X
  • Framebuffer do not implement feature-update, that is, it do not try to detect what areas did change. This imposes additional work on the qemu side

If you want to give it a try and run X, you likely will need to configure xorg.conf by hand. Use this as a template:

Section "InputDevice"
	Identifier "Mouse0"
    Driver	"mouse"
    Option	"Protocol" "wsmouse"
    Option	"Device" "/dev/wsmouse0"
Section "InputDevice"
    Identifier "Keyboard0"
    Driver	"kbd"
    Option	"Protocol" "wskbd"
    Option	"Device" "/dev/wskbd0"
    Option	"XkbModel" "pc102"
Section "Device"
    Identifier	"driver"
    Driver	"wsfb"
    Option	"device"	"/dev/ttyE3"
Section "Screen"
    Identifier	"screen"
    Device	"driver"
Section "ServerLayout"
    Identifier	"Builtin Default Layout"
    Screen	"screen"

Note this was done from someone -me- that works on erlang for a living, not C, has been a decade since the last time he used a lower level language, and never had written kernel code before. Feedback is appreciated.