Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jul 2005 11:55:20 +0200
From:      =?ISO-8859-1?Q?C=E9dric?= Jonas <cedric@virtual-globe.net>
To:        freebsd-smp@freebsd.org
Subject:   Panic in ath driver with SMP
Message-ID:  <20050707115520.522ad6bc@ganymed.decemplex.loc>

index | next in thread | raw e-mail

[-- Attachment #1 --]

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@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) 


Kernel config is attached.


Another important detail could be that I use a dual Xeon box, with HT enabled, which results
in 4 logical CPU's (SMP issue?) and explain why anybody reported this problem before?!
I tried to disable PREEMPTION, the hyperthreading functionality (=> 2 logical CPU), and I set
debug.mpsafenet to 0, but the LOR (+ Panic when ath0 is used) continue to occure...
I tried also to downgrade to 5.3-RELEASE, where the problems do _not_ occur... but that's not
a solution.

I hope somebody could help, if you need additional informations, let me know.
Thank you.

-- 
Best regards, 
 Cédric Jonas

[-- Attachment #2 --]
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
help

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