Panic in RELENG_7_1 with fxp(4)

Pyun YongHyeon pyunyh at gmail.com
Mon Jan 5 03:27:07 UTC 2009


On Sat, Jan 03, 2009 at 10:16:58PM -0800, Garrett Cooper wrote:
 > On Jan 3, 2009, at 5:17 PM, Brandon Weisz wrote:
 > 
 > >After running 7-PRERELEASE from around November 25th, I upgraded  
 > >today to find the system panics repeatably on RELENG_7_1 sources.  I  
 > >can boot back to the old kernel and it operates as expected.  It  
 > >seems to be related to fxp(4).
 > >
 > >FreeBSD didy.internal 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Sat Jan  3
 > >18:11:18 CST 2009     bweisz at didy.internal:/usr/obj/usr/src/sys/ 
 > >DIDY  i386
 > >
 > >(19:00:35 bweisz at didy </usr/obj/usr/src/sys/DIDY>) 507 $ sudo kgdb  
 > >kernel.debug /var/crash/vmcore.2
 > >GNU gdb 6.1.1 [FreeBSD]
 > >Copyright 2004 Free Software Foundation, Inc.
 > >GDB is free software, covered by the GNU General Public License, and  
 > >you are
 > >welcome to change it and/or distribute copies of it under certain  
 > >conditions.
 > >Type "show copying" to see the conditions.
 > >There is absolutely no warranty for GDB.  Type "show warranty" for  
 > >details.
 > >This GDB was configured as "i386-marcel-freebsd"...
 > >
 > >Unread portion of the kernel message buffer:
 > >
 > >
 > >Fatal trap 12: page fault while in kernel mode
 > >cpuid = 0; apic id = 00
 > >fault virtual address	= 0x40c
 > >fault code		= supervisor read, page not present
 > >instruction pointer	= 0x20:0xc0a94510
 > >stack pointer	        = 0x28:0xe677b878
 > >frame pointer	        = 0x28:0xe677b88c
 > >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		= 843 (ntpd)
 > >trap number		= 12
 > >panic: page fault
 > >cpuid = 0
 > >Uptime: 25s
 > >Physical memory: 995 MB
 > >Dumping 94 MB: 79 63 47 31 15
 > >
 > >Reading symbols from /boot/kernel/vesa.ko...Reading symbols from / 
 > >boot/kernel/vesa.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/vesa.ko
 > >Reading symbols from /boot/kernel/accf_http.ko...Reading symbols  
 > >from /boot/kernel/accf_http.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/accf_http.ko
 > >Reading symbols from /boot/kernel/acpi.ko...Reading symbols from / 
 > >boot/kernel/acpi.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/acpi.ko
 > >Reading symbols from /boot/kernel/pflog.ko...Reading symbols from / 
 > >boot/kernel/pflog.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/pflog.ko
 > >Reading symbols from /boot/kernel/pf.ko...Reading symbols from /boot/ 
 > >kernel/pf.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/pf.ko
 > >Reading symbols from /boot/kernel/nullfs.ko...Reading symbols from / 
 > >boot/kernel/nullfs.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/nullfs.ko
 > >Reading symbols from /boot/kernel/logo_saver.ko...Reading symbols  
 > >from /boot/kernel/logo_saver.ko.symbols...done.
 > >done.
 > >Loaded symbols for /boot/kernel/logo_saver.ko
 > >#0  doadump () at pcpu.h:196
 > >196		__asm __volatile("movl %%fs:0,%0" : "=r" (td));
 > >(kgdb) list *0xc0a94510
 > >0xc0a94510 is in _bus_dmamap_sync (/usr/src/sys/i386/i386/ 
 > >busdma_machdep.c:935).
 > >930			CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x op 0x%x "
 > >931			    "performing bounce", __func__, op, dmat, 
 > >dmat->flags);
 > >932	
 > >933			if (op & BUS_DMASYNC_PREWRITE) {
 > >934				while (bpage != NULL) {
 > >935					bcopy((void *)bpage->datavaddr,
 > >936					      (void *)bpage->vaddr,
 > >937					      bpage->datacount);
 > >938					bpage = STAILQ_NEXT(bpage, links);
 > >939				}
 > >(kgdb) bt
 > >#0  doadump () at pcpu.h:196
 > >#1  0xc079c1b7 in boot (howto=260) at /usr/src/sys/kern/ 
 > >kern_shutdown.c:418
 > >#2  0xc079c489 in panic (fmt=Variable "fmt" is not available.
 > >) at /usr/src/sys/kern/kern_shutdown.c:574
 > >#3  0xc0ab03bc in trap_fatal (frame=0xe677b838, eva=1036) at /usr/ 
 > >src/sys/i386/i386/trap.c:939
 > >#4  0xc0ab0640 in trap_pfault (frame=0xe677b838, usermode=0,  
 > >eva=1036) at /usr/src/sys/i386/i386/trap.c:852
 > >#5  0xc0ab0ffc in trap (frame=0xe677b838) at /usr/src/sys/i386/i386/ 
 > >trap.c:530
 > >#6  0xc0a96e6b in calltrap () at /usr/src/sys/i386/i386/exception.s: 
 > >159
 > >#7  0xc0a94510 in _bus_dmamap_sync (dmat=0xc4048880, map=0xc416e800,  
 > >op=4) at /usr/src/sys/i386/i386/busdma_machdep.c:933
 > >#8  0xc05cc3cd in fxp_start_body (ifp=0xc4163000) at /usr/src/sys/ 
 > >dev/fxp/if_fxp.c:1396
 > >#9  0xc05ccc77 in fxp_start (ifp=0xc4163000) at /usr/src/sys/dev/fxp/ 
 > >if_fxp.c:1183
 > >#10 0xc0830a89 in if_start (ifp=0xc4163000) at /usr/src/sys/net/if.c: 
 > >2768
 > >#11 0xc08374cb in ether_output_frame (ifp=0xc4163000, m=0xc43a5600)  
 > >at /usr/src/sys/net/if_ethersubr.c:405
 > >#12 0xc0837a7c in ether_output (ifp=0xc4163000, m=0xc43a5600,  
 > >dst=0xc423b710, rt0=0xc4489364) at /usr/src/sys/net/if_ethersubr.c:374
 > >#13 0xc087e115 in ip_output (m=0xc43a5600, opt=0x0, ro=0xe677bac4,  
 > >flags=Variable "flags" is not available.
 > >) at /usr/src/sys/netinet/ip_output.c:554
 > >#14 0xc08eb9b9 in udp_send (so=0xc46ef9c0, flags=0, m=0xc43a5600,  
 > >addr=0xc4462ab0, control=0x0, td=0xc421f230) at /usr/src/sys/netinet/ 
 > >udp_usrreq.c:1074
 > >#15 0xc07f2546 in sosend_dgram (so=0xc46ef9c0, addr=0xc4462ab0,  
 > >uio=0xe677bbe8, top=0xc43a5600, control=0x0, flags=Variable "flags"  
 > >is not available.
 > >) at /usr/src/sys/kern/uipc_socket.c:1059
 > >#16 0xc07efbef in sosend (so=0xc46ef9c0, addr=0xc4462ab0,  
 > >uio=0xe677bbe8, top=0x0, control=0x0, flags=0, td=0xc421f230) at / 
 > >usr/src/sys/kern/uipc_socket.c:1288
 > >#17 0xc07f6ef6 in kern_sendit (td=0xc421f230, s=23, mp=0xe677bc64,  
 > >flags=0, control=0x0, segflg=UIO_USERSPACE) at /usr/src/sys/kern/ 
 > >uipc_syscalls.c:805
 > >#18 0xc07fa141 in sendit (td=0xc421f230, s=23, mp=0xe677bc64,  
 > >flags=0) at /usr/src/sys/kern/uipc_syscalls.c:742
 > >#19 0xc07fa258 in sendto (td=0xc421f230, uap=0xe677bcfc) at /usr/src/ 
 > >sys/kern/uipc_syscalls.c:857
 > >#20 0xc0ab0995 in syscall (frame=0xe677bd38) at /usr/src/sys/i386/ 
 > >i386/trap.c:1090
 > >#21 0xc0a96ed0 in Xint0x80_syscall () at /usr/src/sys/i386/i386/ 
 > >exception.s:255
 > >#22 0x00000033 in ?? ()
 > >Previous frame inner to this frame (corrupt stack?)
 > >(kgdb)
 > >
 > >
 > >I replaced the fxp(4) card with an old xl(4) card lying on my desk  
 > >and the panics stopped.  Is this a failing nic card or some other  
 > >trigger?
 > >
 > >Brandon
 > 
 > Memory serves me correctly an MFC was done not too long before 7.1  
 > release was setup.
 > 

I don't know what MFCes were done, at least I didn't MFC any
changes I made.

 > Let's see what Pyun says...
 > 

I'm not sure what is root cause of this panic. If you can reliably
reproduce the panic would you let me know?
CURRENT has a couple of fixes for edge-cases as well as some new
hardware features(TSO, VLAN hardware tagging and WOL etc). Would
you try latest fxp(4) in HEAD?
I think you can use cvsweb interface to get latest files.
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/fxp/if_fxp.c
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/fxp/if_fxpreg.h
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/fxp/if_fxpvar.h

-- 
Regards,
Pyun YongHyeon


More information about the freebsd-stable mailing list