VBE, int10 yeilds 0000:f8da: 00 ILLEGAL EXTENDED X86 OPCODE
Curtis Villamizar
curtis at occnc.com
Tue May 19 11:05:02 PDT 2009
Apparently I'm having trouble with int10. I'm running xorg-1.6.1,1 on
FreeBSD-7.2 using xorg-7.4.
Driver "openchrome"
VendorName "VIA Technologies, Inc."
BoardName "CN896/VN896/P4M900 [Chrome 9 HC]"
This works fine with the "via" driver in xorg-6.9, which is now
obsolete. It sort of works with xorg-7.2 with the "vesa" driver but
insists on 1024x768 when the real resolution is 1280x768. With
xorg-7.4 I get:
0000:f8da: 00 ILLEGAL EXTENDED X86 OPCODE!
Here is what I've found out so far. I really would appreciate some
help in taking this further.
The openchrome driver falls back to VBE which puts this in the vesa
driver.
(WW) CHROME(0): Panel on K8M800, PM800, VM800, P4M890, K8M890, CX700
or P4M900 is currently not supported.
(WW) CHROME(0): Using VBE to set modes to work around this.
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/local/lib/xorg/modules//libint10.so
(II) CHROME(0): initializing int10
(II) CHROME(0): Primary V_BIOS segment is: 0xc000
(II) CHROME(0): VESA BIOS detected
(II) CHROME(0): VESA VBE Version 3.0
(II) CHROME(0): VESA VBE Total Mem: 32768 kB
(II) CHROME(0): VESA VBE OEM: VIA N3364
(II) CHROME(0): VESA VBE OEM Software Rev: 1.0
(II) CHROME(0): VESA VBE OEM Vendor:
(II) CHROME(0): VESA VBE OEM Product:
(II) CHROME(0): VESA VBE OEM Product Rev:
(II) CHROME(0): Searching for matching VESA mode(s):
[...]
(II) CHROME(0): Not using mode "1920x1200" (height too large for
virtual size)
(II) CHROME(0): Monitor[0]: Using hsync range of 30.00-62.00 kHz
(II) CHROME(0): Monitor[0]: Using vrefresh range of 43.00-60.00 Hz
(II) CHROME(0): Attempting to use 60Hz refresh for mode "1024x768"
(118)
0000:f8da: 00 ILLEGAL EXTENDED X86 OPCODE!
I stuck in an "abort()" to get a core dump.
(gdb) where
#0 0x285eae67 in kill () from /lib/libc.so.7
#1 0x285072f7 in raise () from /lib/libthr.so.3
#2 0x285e99da in abort () from /lib/libc.so.7
#3 0x2884608b in x86emuOp2_illegal_op ()
from /usr/local/lib/xorg/modules//libint10.so
#4 0x28831f03 in x86emuOp_two_byte ()
from /usr/local/lib/xorg/modules//libint10.so
#5 0x28843af3 in X86EMU_exec () from
/usr/local/lib/xorg/modules//libint10.so
#6 0x2882ffd5 in xf86ExecX86int10 ()
from /usr/local/lib/xorg/modules//libint10.so
#7 0x2884b38b in VBEGetPixelClock ()
from /usr/local/lib/xorg/modules//libvbe.so
#8 0x2884d146 in VBESetModeParameters ()
from /usr/local/lib/xorg/modules//libvbe.so
#9 0x286c730b in ViaVbeModePreInit ()
from /usr/local/lib/xorg/modules/drivers//openchrome_drv.so
#10 0x286bce76 in VIAPreInit ()
from /usr/local/lib/xorg/modules/drivers//openchrome_drv.so
#11 0x080a6816 in InitOutput ()
#12 0x0806bd8b in main ()
I also added debug with --enable-debug (with the abort still in the
code since it is after the trace is done). This adds a little
information, but not much.
(II) CHROME(0): Not using mode "1920x1200" (height too large for
virtual size)
xf86ValidateModes(0x2870e800, 0x0, 0x2870a320, 0x0,
0x0, 0, 2048, 1, 0, 2048, 1280, 768, 131072, 0x1)
(II) CHROME(0): Monitor[0]: Using hsync range of 30.00-62.00 kHz
(II) CHROME(0): Monitor[0]: Using vrefresh range of 43.00-60.00 Hz
xf86CheckModeForMonitor(0x28740060 1024x768, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x287401a0 1024x768, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x287402e0 1024x768, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x28740420 1024x768, 0x2873b300 Monitor[0])
(II) CHROME(0): Attempting to use 60Hz refresh for mode "1024x768"
(118)
0000:f8da: 00 ILLEGAL EXTENDED X86 OPCODE!
halt_sys: file ./../x86emu/ops2.c, line 66
halted
Setting clock 65.00MHz, closest is 0.00MHz
xf86CheckModeForMonitor(0x2873f8e0 800x600, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x2873fa20 800x600, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x2873fb60 800x600, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x2873fca0 800x600, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x2873fde0 800x600, 0x2873b300 Monitor[0])
(II) CHROME(0): Attempting to use 60Hz refresh for mode "800x600"
(115)
In the config there is a modeline which seems to be completely
ignored:
Modeline "1280x768" 77.37 1280 1344 1480 1680 768 769 772 794
That modeline came from the vendor (HP) config for xorg-6.9 (came
loaded with SLED10) so the modeline is likely to be useable (which is
more than I can say for HP's idea of a SLED distribution).
Any help is appreciated. If there is some workaround to avoid
VBEGetPixelClock or force the result to the 77.37 value, please let me
know. I fix would be nice, but I'd settle for a workaround.
Without the abort, the code marches on and hangs. A SIGQUIT gets me:
(gdb) where
#0 0x28837d57 in store_data_byte ()
from /usr/local/lib/xorg/modules//libint10.so
#1 0x28863fdc in x86emuOp_add_byte_RM_R ()
from /usr/local/lib/xorg/modules//libint10.so
#2 0x288388e3 in X86EMU_exec () from
/usr/local/lib/xorg/modules//libint10.so
#3 0x28830f35 in xf86ExecX86int10 ()
from /usr/local/lib/xorg/modules//libint10.so
#4 0x2886a38b in VBEGetPixelClock ()
from /usr/local/lib/xorg/modules//libvbe.so
#5 0x2886c146 in VBESetModeParameters ()
from /usr/local/lib/xorg/modules//libvbe.so
#6 0x286ca30b in ViaVbeModePreInit ()
from /usr/local/lib/xorg/modules/drivers//openchrome_drv.so
#7 0x286bfe76 in VIAPreInit ()
from /usr/local/lib/xorg/modules/drivers//openchrome_drv.so
#8 0x080a6a16 in InitOutput ()
#9 0x0806bdeb in main ()
But for some reason a different mode is picked this time:
(II) CHROME(0): Not using mode "1920x1200" (height too large for virtual size)
xf86ValidateModes(0x2870e800, 0x0, 0x2870a320, 0x0,
0x0, 0, 2048, 1, 0, 2048, 1280, 768, 131072, 0x1)
(II) CHROME(0): Monitor[0]: Using hsync range of 30.00-62.00 kHz
(II) CHROME(0): Monitor[0]: Using vrefresh range of 43.00-60.00 Hz
xf86CheckModeForMonitor(0x28740060 1024x768, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x287401a0 1024x768, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x287402e0 1024x768, 0x2873b300 Monitor[0])
xf86CheckModeForMonitor(0x28740420 1024x768, 0x2873b300 Monitor[0])
(II) CHROME(0): Attempting to use 60Hz refresh for mode "1024x768" (118)
What other information would be helpful in debugging this?
TIA,
Curtis
More information about the xorg
mailing list