Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 May 2002 14:31:18 +1200
From:      Nigel Roberts <nigel@tsnz.net>
To:        freebsd-hackers@freebsd.org
Subject:   Possible problem with rl (Realtek) ethernet card driver in 4.5-STABLE
Message-ID:  <20020522023118.GD31847@katie.paradise.net.nz>

next in thread | raw e-mail | index | archive | help
About a month ago, I ran into problems with a realtek card in an AMD
K6-2 based machine I have. The box was built to act as a firewall for
a 10Mb internet connection, and everytime it came under load ie. > 5Mb
throughput, it fell over with a page fault, although occcasionally it
also fell over under minimal load. I've since replaced the card with
an fxp (intel) card and the problem has gone away.

The realtek card is currently sitting in a linux 2.4.17 machine and is
running fine (current uptime ~15 days) and handles high throughput
quite readily. I haven't tested the card in a machine running GENERIC,
but I can if anyone thinks it's worth doing. 2 * 128MB core dumps +
debug kernel are available on request.

Does this look like a driver bug, a hardware fault or all of the
above? I realise the realtek chips are not the best, but they
shouldn't cause a box to fall over :)

Here are the details from the core dumps I got, which led me to
believe it was a problem with the card/driver:

$ uname -a
FreeBSD earnest.nobiscuit.com 4.5-STABLE FreeBSD 4.5-STABLE #6: Sat Apr 27 12:42:27 NZST 2002     root@earnest.nobiscuit.com:/usr/obj/usr/src/sys/EARNEST  i386

$ gdb -k kernel.debug.20020427 vmcore.0
<--snip--> 
IdlePTD at phsyical address 0x00390000
initial pcb at physical address 0x002f8300
panicstr: page fault
panic messages:
---
Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x3a
fault code		= supervisor write, page not present
instruction pointer	= 0x8:0xc025387e
stack pointer	        = 0x10:0xc8cc1c2c
frame pointer	        = 0x10:0xc8cc1ccc
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def32 1, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 2271 (setiathome)
interrupt mask		= net tty 
trap number		= 12
panic: page fault

syncing disks... 2 
done
Uptime: 1d3h24m45s

dumping to dev #ad/0x20001, offset 401520
dump ata0: resetting devices .. done
128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 
---
#0  dumpsys () at ../../kern/kern_shutdown.c:487
487		if (dumping++) {
(kgdb)  where
#0  dumpsys () at ../../kern/kern_shutdown.c:487
#1  0xc017e243 in boot (howto=256) at ../../kern/kern_shutdown.c:316
#2  0xc017e681 in panic (fmt=0xc02c802c "%s") at ../../kern/kern_shutdown.c:595
#3  0xc0287583 in trap_fatal (frame=0xc8cc1bec, eva=58)
    at ../../i386/i386/trap.c:966
#4  0xc0287231 in trap_pfault (frame=0xc8cc1bec, usermode=0, eva=58)
    at ../../i386/i386/trap.c:859
#5  0xc0286dd7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, 
      tf_edi = -943714304, tf_esi = -1070594804, tf_ebp = -926147380, 
      tf_isp = -926147560, tf_ebx = 0, tf_edx = 0, tf_ecx = -926147464, 
      tf_eax = 1, tf_trapno = 12, tf_err = 2, tf_eip = -1071302530, tf_cs = 8, 
      tf_eflags = 66178, tf_esp = -926535008, tf_ss = -1070594804})
    at ../../i386/i386/trap.c:458
#6  0xc025387e in vm_fault (map=0xc030050c, vaddr=3351252992, 
    fault_type=1 '\001', fault_flags=0) at ../../vm/vm_object.h:189
#7  0xc02871de in trap_pfault (frame=0xc8cc1d40, usermode=0, eva=3351252992)
    at ../../i386/i386/trap.c:848
#8  0xc0286dd7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, 
      tf_edi = -1066163320, tf_esi = -943714306, tf_ebp = -926147144, 
      tf_isp = -926147220, tf_ebx = -1066038272, tf_edx = 2048, tf_ecx = 286, 
      tf_eax = -122449014, tf_trapno = 12, tf_err = 0, tf_eip = -1071096414, 
      tf_cs = 8, tf_eflags = 66070, tf_esp = 6752410, tf_ss = -1066038272})
    at ../../i386/i386/trap.c:458
#9  0xc0285da2 in generic_bcopy ()
#10 0xc0237fbe in rl_rxeof (sc=0xc0b9d200) at ../../pci/if_rl.c:1151
#11 0xc023827a in rl_intr (arg=0xc0b9d200) at ../../pci/if_rl.c:1342
#12 0xc0279c7a in vec3 ()
#13 0xc01c2196 in ether_output (ifp=0xc0ba4000, m=0xc076af00, dst=0xc0c28770, 
    rt0=0xc0c59d00) at ../../net/if_ethersubr.c:369
#14 0xc01d4663 in ip_output (m0=0xc076af00, opt=0x0, ro=0xc02f9970, flags=1, 
    imo=0x0) at ../../netinet/ip_output.c:822
#15 0xc01d3c78 in ip_forward (m=0xc076af00, srcrt=0)
    at ../../netinet/ip_input.c:1745
#16 0xc01d2ca6 in ip_input (m=0xc076af00) at ../../netinet/ip_input.c:638
#17 0xc01d2ee7 in ipintr () at ../../netinet/ip_input.c:869
#18 0xc0279bf5 in swi_net_next ()
#19 0x1422c in ?? ()
#20 0x3414 in ?? ()
#21 0xef9b in ?? ()
#22 0x138fe in ?? ()
#23 0x13a25 in ?? ()
#24 0x2abb in ?? ()
#25 0x107e in ?? ()

$ gdb -k kernel.debug.20020427 vmcore.1

IdlePTD at phsyical address 0x00390000
initial pcb at physical address 0x002f8300
panicstr: page fault
panic messages:
---
Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x3a
fault code		= supervisor write, page not present
instruction pointer	= 0x8:0xc025387e
stack pointer	        = 0x10:0xc02cfd94
frame pointer	        = 0x10:0xc02cfe34
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def32 1, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= Idle
interrupt mask		= net tty 
trap number		= 12
panic: page fault

syncing disks... 

Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x30
fault code		= supervisor read, page not present
instruction pointer	= 0x8:0xc0242174
stack pointer	        = 0x10:0xc02cfb88
frame pointer	        = 0x10:0xc02cfb90
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def32 1, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= Idle
interrupt mask		= net tty bio 
trap number		= 12
panic: page fault
Uptime: 2h50m23s

dumping to dev #ad/0x20001, offset 401520
dump ata0: resetting devices .. done
128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 
---
#0  dumpsys () at ../../kern/kern_shutdown.c:487
487		if (dumping++) {
(kgdb) where
#0  dumpsys () at ../../kern/kern_shutdown.c:487
#1  0xc017e243 in boot (howto=260) at ../../kern/kern_shutdown.c:316
#2  0xc017e681 in panic (fmt=0xc02c802c "%s") at ../../kern/kern_shutdown.c:595
#3  0xc0287583 in trap_fatal (frame=0xc02cfb48, eva=48)
    at ../../i386/i386/trap.c:966
#4  0xc0287231 in trap_pfault (frame=0xc02cfb48, usermode=0, eva=48)
    at ../../i386/i386/trap.c:859
#5  0xc0286dd7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, tf_edi = 0, 
      tf_esi = -1059931392, tf_ebp = -1070793840, tf_isp = -1070793868, 
      tf_ebx = -1070698244, tf_edx = 6864896, tf_ecx = -927154624, tf_eax = 0, 
      tf_trapno = 12, tf_err = 0, tf_eip = -1071373964, tf_cs = 8, 
      tf_eflags = 66054, tf_esp = -1059931392, tf_ss = -1059931392})
    at ../../i386/i386/trap.c:458
#6  0xc0242174 in acquire_lock (lk=0xc02e70fc)
    at ../../ufs/ffs/ffs_softdep.c:266
#7  0xc0246274 in softdep_update_inodeblock (ip=0xc0d2bb00, bp=0xc34d5eb4, 
    waitfor=0) at ../../ufs/ffs/ffs_softdep.c:3813
#8  0xc02412a9 in ffs_update (vp=0xc8bcbe40, waitfor=0)
    at ../../ufs/ffs/ffs_inode.c:106
#9  0xc024ad79 in ffs_fsync (ap=0xc02cfc3c) at ../../ufs/ffs/ffs_vnops.c:273
#10 0xc0249687 in ffs_sync (mp=0xc0c19c00, waitfor=2, cred=0xc0731600, 
    p=0xc030ea00) at vnode_if.h:558
#11 0xc01add3b in sync (p=0xc030ea00, uap=0x0) at ../../kern/vfs_syscalls.c:569
#12 0xc017dfde in boot (howto=256) at ../../kern/kern_shutdown.c:235
#13 0xc017e681 in panic (fmt=0xc02c802c "%s") at ../../kern/kern_shutdown.c:595
#14 0xc0287583 in trap_fatal (frame=0xc02cfd54, eva=58)
    at ../../i386/i386/trap.c:966
#15 0xc0287231 in trap_pfault (frame=0xc02cfd54, usermode=0, eva=58)
    at ../../i386/i386/trap.c:859
#16 0xc0286dd7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, 
      tf_edi = -943714304, tf_esi = -1070594804, tf_ebp = -1070793164, 
      tf_isp = -1070793344, tf_ebx = 0, tf_edx = 0, tf_ecx = -1070793248, 
      tf_eax = 1, tf_trapno = 12, tf_err = 2, tf_eip = -1071302530, tf_cs = 8, 
      tf_eflags = 66194, tf_esp = 0, tf_ss = -1070594804})
    at ../../i386/i386/trap.c:458
#17 0xc025387e in vm_fault (map=0xc030050c, vaddr=3351252992, 
    fault_type=1 '\001', fault_flags=0) at ../../vm/vm_object.h:189
#18 0xc02871de in trap_pfault (frame=0xc02cfea8, usermode=0, eva=3351252992)
    at ../../i386/i386/trap.c:848
#19 0xc0286dd7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, 
      tf_edi = -1066140228, tf_esi = -943714306, tf_ebp = -1070792928, 
      tf_isp = -1070793004, tf_ebx = -1066112000, tf_edx = 2048, tf_ecx = 145, 
      tf_eax = -122425922, tf_trapno = 12, tf_err = 0, tf_eip = -1071096414, 
      tf_cs = 8, tf_eflags = 66070, tf_esp = 6752410, tf_ss = -1066112000})
    at ../../i386/i386/trap.c:458
#20 0xc0285da2 in generic_bcopy ()
#21 0xc0237fbe in rl_rxeof (sc=0xc0b9d200) at ../../pci/if_rl.c:1151
#22 0xc023827a in rl_intr (arg=0xc0b9d200) at ../../pci/if_rl.c:1342


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020522023118.GD31847>