em lockups during heavy network I/O on RELENG_7

Josh Carroll josh.carroll at gmail.com
Fri Oct 19 20:20:38 PDT 2007


Hello,

I have managed to lock my (amd64, RELENG_7) machine up twice today. In
both cases, I was transferring a file to my laptop (in one case over
SMB, the other over FTP). Both resulted in a hard lock (no panic). One
of the lockups had an "em1: watchdog timeout" message on the console,
the other had no abnormal messages on the console. Both transfers were
over 100baseTx-FD ethernet over my em card (em1).

This is a new occurrence on RELENG_7. The box was stable on
6.2-RELEASE. The hardware is as follows:

Asus P5B motherboard (BIOS revison 1405)
Intel Core 2 Quad Q6600
Two Intel em cards (em0: internet facing, em1: LAN facing)

Further below is my full kernel config, but here are the options I
have that GENERIC does not (not necessarily in order, as they were
sorted when I was diff'ing with GENERIC):

device atapicam
device coretemp
device if_bridge
device pf
device pflog
device tap
ident PFLOG64
machine amd64
makeoptions COPTFLAGS="-O2 -pipe"
options ALTQ
options ALTQ_CBQ
options ALTQ_HFSC
options ALTQ_NOPCC
options ALTQ_PRIQ
options ALTQ_RED
options ALTQ_RIO
options COMPAT_LINUX32
options HZ=1000
options LIBICONV
options LIBMCHAIN
options NETSMB
options SC_PIXEL_MODE
options SMBFS
options UDF
options VGA_WIDTH90

I plan on removing the HZ, LIBICONV, LIBMCHAIN, SC_PIXEL_MODE, and
VGA_WIDTH90 options and seeing if that helps. Do any of the other
options look like likely culprits?

If the above doesn't help, is there a way to debug hard lockups? I
have 15mbit FiOS and have maxed em0 out without causing this.  So I'm
guessing either I'm not pushing enough packets through em0 to induce
this, or the problem is related to em1 sharing an interrupt with a USB
controller:

interrupt                          total       rate
irq1: atkbd0                           6          0
irq6: fdc0                            10          0
irq17: uhci1+                         91          0
irq19: uhci3+                     924492         32
irq22: em0                         85919          3
irq23: em1 uhci2+                   6627          0
cpu0: timer                     56950868       1999
cpu1: timer                     56950834       1999
cpu2: timer                     56950835       1999
cpu3: timer                     56950834       1999
Total                          228820516       8035

Anyway, here is the full kernel configuration:

makeoptions    COPTFLAGS="-O2 -pipe"

machine		amd64
cpu		HAMMER
ident		PFLOG64
options		COMPAT_IA32
options		COMPAT_LINUX32

##########################################################################

options SMP            # Symmetric MultiProcessor Kernel
options	STOP_NMI
options SCHED_4BSD
options PREEMPTION
options HZ=1000

options 	INET			# InterNETworking
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		UFS_GJOURNAL	# Enable gjournal-based UFS
options 	NFSCLIENT		# Network Filesystem Client
options 	NFSSERVER		# Network Filesystem Server
options		NETSMB
options		SMBFS
options		LIBICONV
options		LIBMCHAIN
options 	CD9660			# ISO 9660 Filesystem
options		UDF
options 	PROCFS			# Process filesystem (requires PSEUDOFS)
options 	PSEUDOFS		# Pseudo-filesystem framework
options		GEOM_LABEL              # Provides labelization
options		GEOM_PART_GPT           # GUID Partition Tables.
options 	COMPAT_43TTY		# Compatible with BSD 4.3 [KEEP THIS!]
options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
options		COMPAT_FREEBSD5		# Compatible with FreeBSD5
options		COMPAT_FREEBSD6		# Compatible with FreeBSD6
options 	SCSI_DELAY=5000		# 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.
options		AUDIT                   # Security event auditing

# Bus support.  Do not remove isa, even if you have no isa slots
device		pci
device		acpi

# Floppy drives
device		fdc

# coretemp: on-die sensor on Intel Core and newer CPUs
device          coretemp

# ATA and ATAPI devices
device		ata
device		atadisk		# ATA disk drives
device		atapicd		# ATAPI CDROM drives
options 	ATA_STATIC_ID	# Static device numbering

# SCSI peripherals
device		scbus		# SCSI bus (required for SCSI)
device		da		# Direct Access (disks)
device		cd		# CD
device		pass		# Passthrough device (direct SCSI access)
device		atapicam

# 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
options		VGA_WIDTH90
options		SC_PIXEL_MODE

device		splash		# Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device		sc

device		if_bridge

# PCI Ethernet NICs.
device		em		# Intel PRO/1000 adapter Gigabit Ethernet Card

# Pseudo devices.
device		loop		# Network loopback
device		random		# Entropy device
device		ether		# Ethernet support
device		tap
device		pty		# Pseudo-ttys (telnet etc)
device		md		# Memory "disks"

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device		bpf		# Berkeley packet filter
device		pf
device		pflog

# USB support
device		uhci		# UHCI PCI->USB interface
device		ohci		# OHCI PCI->USB interface
device		ehci		# EHCI PCI->USB interface (USB 2.0)
device		usb		# USB Bus (required)
device		ugen		# Generic
device		umass		# Disks/Mass storage - Requires scbus and da

# FireWire support
device		firewire	# FireWire bus code
device		sbp		# SCSI over FireWire (Requires scbus and da)

# altq support
options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build


Thanks!
Josh


More information about the freebsd-stable mailing list