vga arbiter (news)
vignatti at c3sl.ufpr.br
Thu Nov 22 17:01:57 PST 2007
So we finally have a working code to do the arbitration of the VGA
legacy instructions. The code is separated in three pieces: vgaarb
module , which is the arbiter itself inside Linux; the libvgaaccess
, a set of user space functions to access the arbiter; and
xf86VGAarbiter , the implementation of the library inside Xorg.
Basically we wrapped all the functions of the Xorg which deals with VGA
(those wrapped by the RAC and few others) using the lock/unlock
functions of the libvgaaccess. Really ugly.
The code was not extensively tested, but we're able to start more than
one instance of the Xorg at the same time without having the usual
errors (yay, multiseat!). It's a proof-of-concept. We need to discuss
and define what would be the best way to integrate the Xorg with the
There's an urgent todo which is the lack of DRI support. Currently, the
arbitration will probably not work with DRI because it's not guaranteed
that the registers will keep a sane state in the case of interruptions.
The not so urgent todo is to remove the RAC code  from inside the Xorg.
As suggested by benh, at this moment we want to stress mainly the kernel
implementation to see if all the requirements were completely achieved,
so we can post this to lkml for a complete review. So please, comment
this out. We also started a "Theory of Operation" document here .
Tiago Vignatti and Paulo Zanoni
 git-clone http://www.inf.ufpr.br/ribas/repos/vga-module.git
 git-clone http://www.inf.ufpr.br/ribas/repos/libvgaaccess.git
 patch applicable to Xorg 1.4 branch
or git-clone http://www.inf.ufpr.br/ribas/repos/xserver.git
 This must be discussed more because RAC lets different OSes be
multi-head wise due all of this is only inside the X server. ITOH, the
VGA arbiter relies in a piece inside the kernel. So different OSes would
implement different kernel VGA arbiters.
C3SL - Centro de Computação Científica e Software Livre
More information about the xorg