l4linux GPU direct access

Abhishek Gupta abhishek.ismdhn at ismu.ac.in
Wed Jun 6 15:28:53 CEST 2012


I was trying to run xserver on l4linux using vesa frame buffer (l4 is
running on kvm) and virtual machine
hangs and it seems that a infinite loop is started which
is continuously try to do something
but doesn't succeed.

When I tried to debug it using gdb, it displays
0xb6ee9b28 in SetResetBIOSVars (pInt=0x820f5a0, set=<value optimized out>)
at ../../../../hw/xfree86/int10/helper_exec.c:686

this code is from the xserver 1.7.7

static void
SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set)
    int pagesize = getpagesize();
    unsigned char* base = xf86MapVidMem(pInt->scrnIndex,
VIDMEM_MMIO, 0, pagesize);
    int i;

    if (set) {
    MEM_WW(pInt, i, *(base + i));
    } else {
              /*line 685*/
    *(base + i) = MEM_RW(pInt, i);
                                      /*line 686*/ //This line of code is
not working


The value of base becomes 0 after xf86MapVidMem func is called. So my Guess
is that this func is failing and returning NULL
but I am not able to figure out why

Also I read in previous years mailing list that Linux tries to execute
int10 to set the VESA mode but L4 applications are not
allowed to execute real-mode code. Does this have anything to do with my
problem?? How can I fix this problem?
Also, Is there a way to allow L4 applications to execute code in real mode
and then switch back? May be add some code
to L4 to allow applications to execute code in real mode and then switch

Abhishek Gupta
Indian School of Mines
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://os.inf.tu-dresden.de/pipermail/l4-hackers/attachments/20120606/56a87318/attachment.html>

More information about the l4-hackers mailing list