Matrox Oopsed when using kernel with ACPI support...

From: Dawid Kuroczko <hidden>
Date: 2002-08-07 08:57:47

I'm running kernel 2.4.19 and I'm exeriencing repeatable kernel Oops
with Matrox Mystique card.  Kernel appears OK when compiled with
APM, but oopses whem compiled with ACPI...  More below oops dump.

ksymoops 2.4.4 on i686 2.4.19.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.19/ (default)
     -m /boot/System.map-2.4.19 (default)

Warning: You did not tell me where to find symbol information.  I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc.  ksymoops -h explains the options.

No modules in ksyms, skipping objects
Warning (read_lsmod): no symbols in lsmod, is /proc/modules a valid lsmod file?
Aug  7 02:08:34 atlantis kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000200
Aug  7 02:08:34 atlantis kernel: c024d739
Aug  7 02:08:34 atlantis kernel: *pde = 00000000
Aug  7 02:08:34 atlantis kernel: Oops: 0000
Aug  7 02:08:34 atlantis kernel: CPU:    1
Aug  7 02:08:34 atlantis kernel: EIP:    0010:[matrox_cfbX_putcs+393/640]    Not tainted
Aug  7 02:08:34 atlantis kernel: EIP:    0010:[<c024d739>]    Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
Aug  7 02:08:34 atlantis kernel: EFLAGS: 00010202
Aug  7 02:08:34 atlantis kernel: eax: 00000010   ebx: f0809000   ecx: 00000004   edx: 01200010
Aug  7 02:08:34 atlantis kernel: esi: 00000200   edi: f0809000   ebp: 00000010   esp: c1857e60
Aug  7 02:08:34 atlantis kernel: ds: 0018   es: 0018   ss: 0018
Aug  7 02:08:34 atlantis kernel: Process keventd (pid: 2, stackpage=c1857000)
Aug  7 02:08:34 atlantis kernel: Stack: 00000001 011f0118 0000007f 00000010 01200010 00000001 07070707 c03ec65c 
Aug  7 02:08:34 atlantis kernel:        e607ae10 00000012 c024d88d 07070707 00000000 c03ec65c e607ae58 00000040 
Aug  7 02:08:34 atlantis kernel:        00000012 00000000 c03f0970 c03ec65c 00000000 c0246f44 efde7600 c03ec65c 
Aug  7 02:08:34 atlantis kernel: Call Trace:    [matrox_cfb8_putcs+93/112] [fbcon_putcs+148/256] [do_update_region+295/400] [redraw_screen+244/336] [complete_change_console+43/192]
Aug  7 02:08:34 atlantis kernel: Call Trace:    [<c024d88d>] [<c0246f44>] [<c0205257>] [<c0205d74>] [<c020378b>]
Aug  7 02:08:34 atlantis kernel:   [<c020907a>] [<c011f8cd>] [<c01286aa>] [<c01284a0>] [<c0105000>] [<c01073c6>]
Aug  7 02:08:34 atlantis kernel:   [<c01284a0>]
Aug  7 02:08:34 atlantis kernel: Code: f3 a5 a8 02 74 02 66 a5 a8 01 74 01 a4 8b 74 24 34 0f b7 96 
quoted
EIP; c024d739 <matrox_cfbX_putcs+189/280>   <=====
Trace; c024d88d <matrox_cfb8_putcs+5d/70>
Trace; c0246f44 <fbcon_putcs+94/100>
Trace; c0205257 <do_update_region+127/190>
Trace; c0205d74 <redraw_screen+f4/150>
Trace; c020378b <complete_change_console+2b/c0>
Trace; c020907a <console_callback+3a/b0>
Trace; c011f8cd <__run_task_queue+5d/70>
Trace; c01286aa <context_thread+20a/220>
Trace; c01284a0 <context_thread+0/220>
Trace; c0105000 <_stext+0/0>
Trace; c01073c6 <kernel_thread+26/30>
Trace; c01284a0 <context_thread+0/220>
Code;  c024d739 <matrox_cfbX_putcs+189/280>
00000000 <_EIP>:
Code;  c024d739 <matrox_cfbX_putcs+189/280>   <=====
   0:   f3 a5                     repz movsl %ds:(%esi),%es:(%edi)   <=====
Code;  c024d73b <matrox_cfbX_putcs+18b/280>
   2:   a8 02                     test   $0x2,%al
Code;  c024d73d <matrox_cfbX_putcs+18d/280>
   4:   74 02                     je     8 <_EIP+0x8> c024d741 <matrox_cfbX_putcs+191/280>
Code;  c024d73f <matrox_cfbX_putcs+18f/280>
   6:   66 a5                     movsw  %ds:(%esi),%es:(%edi)
Code;  c024d741 <matrox_cfbX_putcs+191/280>
   8:   a8 01                     test   $0x1,%al
Code;  c024d743 <matrox_cfbX_putcs+193/280>
   a:   74 01                     je     d <_EIP+0xd> c024d746 <matrox_cfbX_putcs+196/280>
Code;  c024d745 <matrox_cfbX_putcs+195/280>
   c:   a4                        movsb  %ds:(%esi),%es:(%edi)
Code;  c024d746 <matrox_cfbX_putcs+196/280>
   d:   8b 74 24 34               mov    0x34(%esp,1),%esi
Code;  c024d74a <matrox_cfbX_putcs+19a/280>
  11:   0f b7 96 00 00 00 00      movzwl 0x0(%esi),%edx

OK, and now for more information.  The system is SMP 2 x PIII 733
machine with:
   matroxfb: Matrox Mystique (PCI) detected
   matroxfb: MTRR's turned on
   matroxfb: 640x480x8bpp (virtual: 640x3270)
   matroxfb: framebuffer at 0xD6000000, mapped to 0xc8805000, size 2097152
Everything works just fine, there is an fbdev X server running on one of
the consoles.  The oops results when following script is run (please note
that it works fine when ACPI is not compiled in):
--- >8 --- CUT here --- /etc/rc.d/init.d/fbset
#!/bin/sh
#
# hdpram        Sets up fbcon video modes.
#
#
# chkconfig:	2345 5 30
# description:	fbset is a utility with which fbcons video modes can be read\
#		and changed


# Source function library
. /etc/rc.d/init.d/functions

# Get service config
[ -f /etc/sysconfig/fbset ] && . /etc/sysconfig/fbset

# See how we were called.
case "$1" in
  start)
	# Check if we have framebuffer in kernel.
	if [ -f /proc/fb ]; then
		# /proc files show as files with size=0, this is a workaround.
		cat /proc/fb | grep -q "." || exit 0
	else
		exit 0
	fi

	if [ -n "${FBMODE_default}" ]; then
		show "Setting default video mode"
		busy
		/usr/sbin/fbset -a ${FBMODE_default}
		deltext
		ok
	fi
	for tty in /dev/tty[1-9] /dev/tty[1-6][0-9]; do
		eval FBMODE=\${FBMODE_${tty#/dev/}}
		if [ -n "${FBMODE}" ]; then
			echo "settking $tty to $FBMODE"
			# XXX fuser $tty <- sprawdziæ, czy tty jest wolna.
			show "Setting $tty video mode to $FBMODE" 
			busy
			echo -n > $tty
			/usr/bin/open -s -c ${tty#/dev/tty} -- /usr/sbin/fbset ${FBMODE}
			deltext
			ok
		fi
	done
	touch /var/lock/subsys/fbset
	;;
    stop)	
	rm -f /var/lock/subsys/fbset
	;;
  status)
	# Check if we have framebuffer in kernel.
	if [ -f /proc/fb ]; then
		# /proc files show as files with size=0, this is a workaround.
		cat /proc/fb | grep -q "." || exit 0
		echo "Frame buffer present."
	fi
	;;
  restart|reload)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: $0 {start|stop|status|restart|reload}"
	exit 1
esac

exit 0
--- >8 --- END

--- >8 --- /etc/sysconfig/fbset
# This file lets you set your default console video mode and
# video modes for individual virtual consoles.
# See /etc/fb.modes for sample video mode definitions.

FBMODE_default="Q100x31"

FBMODE_tty1=
FBMODE_tty2=
FBMODE_tty3=
FBMODE_tty4=
FBMODE_tty5=
FBMODE_tty6=
FBMODE_tty7=
FBMODE_tty8=

FBMODE_tty12="Q128x48"

FBMODE_tty21="Q128x48"
FBMODE_tty22="Q80x25"
FBMODE_tty23="Q128x48"
FBMODE_tty24="Q128x48"
--- >8 --- END
If I missed any needed information, please ask. :-)

   Regards,
     Dawid
-- 
                 http://www.muppetlabs.com/~breadbox/bf/
+++++[>++++++<-]>++[>+>++>+++>++++<<<<-]>>++++.>+.>---------.<++++++++.--
---.<<.>+++++++.>>--.---.---.<-.>+++++++++++.<++++++++.++++.>>++++++++++.



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help