PATCH: i830: Fix int10 calls creating nasty log messages

Alan Hourihane alanh at fairlite.demon.co.uk
Tue Feb 8 01:36:11 PST 2005


On Mon, Feb 07, 2005 at 06:54:45PM -0800, David Bronaugh wrote:
> Hey all,
> 
> Hardware: Panasonic R1N laptop, i830 video.
> 
> I tracked down and have a patch for the following appearing in my logs:
> 
> (EE) I810(0): unknown reason for exception
> (II) I810(0): EAX=0x00005f1c, EBX=0x00000000, ECX=0x00000000, EDX=0x00000098
> (II) I810(0): ESP=0x00000fac, EBP=0x00000fdc, ESI=0xffff1415, EDI=0x00002000
> (II) I810(0): CS=0xc000, SS=0x0100, DS=0x0000, ES=0x0000, FS=0x0000, 
> GS=0x0000
> (II) I810(0): EIP=0x000040c6, EFLAGS=0x00033046
> (II) stack at 0x00001fac:
> 00 00 00 00 42 41 02 32 98 00 00 00 00 00 15 14
> 07 00 00 00 26 3e 1c 5f 1e 14 07 00 66 33 00 00
> 00 00 ee 18 1c 5f 45 80 ff ff ff ff ff ff ff ff
> 40 00 00 00 00 00 00 20 00 00 00 00 00 00 98 00
> 00 00 00 00 00 00 00 00 00 00 1c 5f 00 00 00 06
> 00 00 00 32
> (II) I810(0): code at 0x000c40c6:
> 8a 06 eb 0e 80 fd 01 75 05 67 8b 06 eb 04 67 66
> 8b 06 5b 1f c3 52 eb 11 52 8b 16 63 04 eb 0a 52
> (EE) I810(0): cannot continue
> (WW) I810(0): Extended BIOS function 0x5f1c not supported.
> 
> It seems that at least with the BIOS I have, trying to call BIOS 
> functions (at least SetBIOSPipe) while the overlay is active results in 
> a GPF, which is the exception reported above. mplayer does this. Bad 
> mplayer.
> 
> My patch simply doesn't allow this to happen. Is there a better way to 
> handle this case?

Does this patch work David ?

Alan.

Index: i830_driver.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v
retrieving revision 1.10
diff -u -r1.10 i830_driver.c
--- i830_driver.c	10 Jan 2005 11:29:02 -0000	1.10
+++ i830_driver.c	8 Feb 2005 09:35:09 -0000
@@ -4970,6 +4975,11 @@
    I830Ptr pI830 = I830PTR(pScrn);
    vbeInfoPtr pVbe = pI830->pVbe;
 
+#ifdef I830_XV
+   /* Shutdown the overlay when going into a DPMS state */
+   I830VideoSwitchModeBefore(pScrn, pScrn->currentMode);
+#endif
+
    if (pI830->Clone) {
       SetBIOSPipe(pScrn, !pI830->pipe);
       if (xf86LoaderCheckSymbol("VBEDPMSSet")) {
@@ -5020,6 +5030,10 @@
       }
       xf86ExecX86int10_wrapper(pVbe->pInt10, pScrn);
    }
+
+#ifdef I830_XV
+   I830VideoSwitchModeAfter(pScrn, pScrn->currentMode);
+#endif
 }
 
 static Bool



More information about the xorg mailing list