Re: 1.3.0, and lrmi.c

Search this archive.

From: Alain Borel (Alain.Borel@icma.unil.ch)
Date: Thu 16 Jul 1998 - 09:20:46 IDT


On 14-Jul-98 Iftikhar Rathore wrote:
> 
> No1: Can some one mail me libvga.a and libvgagl.a please
> 
> OK here is the deal, I have succesfuly compile the 1.3.0, but I am having
> problems with vasa and lrmi (I have kernel 2.0.34). I get the message 
> (On the matrox)
> ./vgatest
> cant get mode info (vm86 failure)
> Chose one of the following video modes
> 1
> 2
> ...
> 9
> 32
> 
> all these modes do work (but they are low resolution or low color).
> 
> I compiled the vbetest in lrm-0.1 package and got this result
> ./vbetest
> Can't get VESA info (vm86 failure)
> 
> it looks like vm86() in liblrmi.so is returning 1 and errno is not getting
> set. somehow it does not look good, vm86 is only supposed to return 0 or
> -1
> My entry.S  does have both vm86old and vm86 (113 nd 166) and dosemu
> (which was compiled yesterday on the same machine) is able to do the vm86
> switch fine. The have hancoded the number 133 in their code (why??)
> 
> emu.c:297 (dosemu-0.97.10)
> static inline void
> vm86plus_init(void)
> {#ifdef REQUIRES_VM86PLUS
>     static inline int vm86_old(struct vm86_struct* v86)
>     {
>         int __res;
>         __asm__ __volatile__("int $0x80\n"
>         :"=a" (__res):"a" ((int)113), "b" ((int)v86));
>         return __res;
>     }
>     if (!vm86_plus(VM86_PLUS_INSTALL_CHECK,0)) return;
>     if (!vm86_old((void *)0xffffff01)) {
>       fprintf(stderr, "your kernel contains an older (interim) vm86plus
> version\
> n\r"
>                       "please upgrade to an newer one\n\r");
>     }
>     else fprintf(stderr, "vm86plus service not available in your
> kernel\n\r");
>     fflush(stdout);
>     fflush(stderr);
>  
> 
> I am hopful once I get to switch to vm86 the driver should work fine, plus
> it seemed to be working correctly on my work machine which is if I
> remember correctly is 2.0.33

I have the same problem here (Matrox Millenium II, kernel 2.1.99, pgcc 1.0.3a;
maybe the compiler mmatters: for example it breaks wine); did you get any info?

Here is some more food for thought. I straced vbetest; it seems that it makes
some 15 (suspicious number? 2^4 -1) syscalls to vm86 (shouldn't it be vm86old?
does vm86old end calling vm86? I'm not a kernel guru) that fail returning -1.
errno IS actually set by thos calls, giving ENOSYS (call not implemented).
I then started stepping through the code using gdb, but here again I do not
know it as well as I should and was unable to display the content of the vm
member of the context structure un lrmi.c (which seems rather important in the
process, doesn't it?).

----------------------------------
E-Mail: Alain Borel <Alain.Borel@icma.unil.ch>
Date: 16-Jul-98
Time: 08:09:38


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:22 IST