Panic in bus_dmamap_load_mbuf (pmap.h:201)
Cédric Jonas
cedric at virtual-globe.net
Sun Jul 3 20:56:42 GMT 2005
Hello,
Since 1 or 2 months, I experienced panics when I use the ath interface of our server (configured as hostap). Also, the system hangs often (without panic) during the boot process at the "Setting hostname: icarus." level. Because I had absolutely no time, I couldn't learn to use the kernel debugger before.
icarus# uname -a
FreeBSD icarus 5.4-STABLE FreeBSD 5.4-STABLE #0: Sun Jul 3 15:14:13 CEST 2005 cedric at icarus:/usr/obj/usr/src/sys/ICARUS i386
Sources are from July, 1
debug.mpsafenet: 1
After compiling the kernel with debug options, I get the following during the boot process:
Setting hostname: icarus.
lock order reversal
1st 0xc2cd4c6c ath0 (network driver) @ /usr/src/sys/dev/ath/if_ath.c:893
2nd 0xc30583c8 user map (user map) @ /usr/src/sys/vm/vm_map.c:2998
I suppose this explains the occasional hangups during the boot process?
The following was obtained after a panic (which occured only when I use the ath interface):
icarus# kgdb kernel.debug /var/crash/vmcore.86
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"]
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".
#0 doadump () at pcpu.h:160
160 __asm __volatile("movl %%fs:0,%0" : "=r" (td));
(kgdb) list *0xc0695dfd
0xc0695dfd is in bus_dmamap_load_mbuf (pmap.h:201).
196
197 if ((pa = PTD[va >> PDRSHIFT]) & PG_PS) {
198 pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1));
199 } else {
200 pa = *vtopte(va);
201 pa = (pa & PG_FRAME) | (va & PAGE_MASK);
202 }
203 return pa;
204 }
205
(kgdb) backtrace
#0 doadump () at pcpu.h:160
#1 0xc05241dc in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:410
#2 0xc05244f1 in panic (fmt=0xc06f0b1f "%s") at /usr/src/sys/kern/kern_shutdown.c:566
#3 0xc06a96ec in trap_fatal (frame=0xe5ba3b80, eva=3221110944) at /usr/src/sys/i386/i386/trap.c:817
#4 0xc06a941f in trap_pfault (frame=0xe5ba3b80, usermode=0, eva=3221110944) at /usr/src/sys/i386/i386/trap.c:735
#5 0xc06a9085 in trap (frame=
{tf_fs = -440795112, tf_es = -1068433392, tf_ds = -1027473392, tf_edi = -1026674344, tf_esi = -1026496768, tf_ebp = -440779748, tf_isp = -440779860, tf_ebx = 0, tf_edx = 0, tf_ecx = -117273402, tf_eax = 1019944, tf_trapno = 12, tf_err = 0, tf_eip = -1066836483, tf_cs = 8, tf_eflags = 66055, tf_esp = -440779804, tf_ss = -1068382496}) at /usr/src/sys/i386/i386/trap.c:425
#6 0xc069796a in calltrap () at /usr/src/sys/i386/i386/exception.s:140
#7 0xe5ba0018 in ?? ()
#8 0xc0510010 in exit1 (td=0xc2cba680, rv=-440779764) at /usr/src/sys/kern/kern_exit.c:394
#9 0xc0494122 in ath_rxbuf_init (sc=0xc2cd4000, bf=0xc2ce3158) at /usr/src/sys/dev/ath/if_ath.c:1601
#10 0xc0494560 in ath_rx_proc (arg=0xc2cd4000, npending=1) at /usr/src/sys/dev/ath/if_ath.c:1818
#11 0xc0540c57 in taskqueue_run (queue=0xc2c94dc0) at /usr/src/sys/kern/subr_taskqueue.c:191
#12 0xc0540cbe in taskqueue_swi_run (dummy=0x0) at /usr/src/sys/kern/subr_taskqueue.c:213
#13 0xc0512ad8 in ithread_loop (arg=0xc2c28300) at /usr/src/sys/kern/kern_intr.c:547
#14 0xc0511ed4 in fork_exit (callout=0xc05129b4 <ithread_loop>, arg=0xc2c28300, frame=0xe5ba3d38) at /usr/src/sys/kern/kern_fork.c:791
#15 0xc06979cc in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:209
(kgdb)
My kernel config:
machine i386
cpu I686_CPU
ident ICARUS
# To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options KDB # Enable kernel debugger support.
options GDB # Support remote GDB.
options INVARIANTS # Enable calls of extra sanity checking
options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
options WITNESS # Enable checks to detect deadlocks and cycles
options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
options SCHED_4BSD # 4BSD scheduler
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options SCSI_DELAY=15000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
device apic # I/O APIC
# Bus support. Do not remove isa, even if you have no isa slots
device isa
device pci
# Floppy drives
device fdc
# ATA and ATAPI devices
device ata
device atadisk # ATA disk drives
device ataraid # ATA RAID drives
device atapicd # ATAPI CDROM drives
device atapifd # ATAPI floppy drives
device atapist # ATAPI tape drives
options ATA_STATIC_ID # Static device numbering
# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)
# SCSI controller
device sym
# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse
device vga # VGA video card driver
device splash
device green_saver
# syscons is the default console driver, resembling an SCO console
device sc
device agp # support several AGP chipsets
# Floating point support - do not disable.
device npx
# Power management support (see NOTES for more options)
device apm
# Add suspend/resume support for the i8254.
device pmtimer
# Serial (COM) ports
#device sio # 8250, 16[45]50 based serial ports
# Parallel port
device ppc
device ppbus # Parallel port bus (required)
device lpt # Printer
device plip # TCP/IP over parallel
device ppi # Parallel port interface device
device vpo # Requires scbus and da
# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device rl # RealTek 8129/8139
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
# Wireless NIC cards
device wlan # 802.11 support
device ath
device ath_hal # Atheros HAL (includes binary component)
# Pseudo devices.
device loop # Network loopback
device mem # Memory and kernel memory devices
device io # I/O device
device random # Entropy device
device ether # Ethernet support
device sl # Kernel SLIP
device ppp # Kernel PPP
device tun # Packet tunnel.
device pty # Pseudo-ttys (telnet etc)
device md # Memory "disks"
device gif # IPv6 and IPv4 tunneling
device faith # IPv6-to-IPv4 relaying (translation)
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
device bpf # Berkeley packet filter
# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device usb # USB Bus (required)
device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# PF
device pf #PF OpenBSD packet-filter firewall
device pflog #logging support interface for PF
device pfsync #synchronization interface for PF
options ALTQ
options ALTQ_PRIQ # Priority Queueing
options ALTQ_NOPCC # Required for SMP build
# PPPoE DSL
options NETGRAPH
options NETGRAPH_SOCKET
options NETGRAPH_PPPOE
options NETGRAPH_ETHER
# SMP
options SMP # Symmetric MultiProcessor Kernel
options MPTABLE_FORCE_HTT # Enable HTT CPUs with the MP Table
options PREEMPTION
options CPU_ENABLE_TCC
options CPU_FASTER_5X86_FPU
options CPU_SUSP_HLT
# Save kernel config in binary's
options INCLUDE_CONFIG_FILE
# Disks
options QUOTA #enable disk quotas
# Posix 1003.1b
options P1003_1B_SEMAPHORES
# Sound
# device sound
# device snd_ich
# device speaker #Play IBM BASIC-style noises out your speaker
# SMBus
device smbus # Bus support, required for smb below.
device ichsmb
device smb
# Reboot after panic
options PANIC_REBOOT_WAIT_TIME=60
# Emulation
options COMPAT_LINUX
options COMPAT_AOUT
options LINPROCFS
# Filesystems
options NULLFS #NULL filesystem
Another important detail could be that I use a dual Xeon box, which HT enabled, which results in 4 logical CPU's and explain why anybody reported this problem before?!
I hope somebody could help, if you need additional informations, let me know.
Thank you.
--
Best regards,
Cédric Jonas
More information about the freebsd-hackers
mailing list