Lock order reversal: em0 and Giant

Josh Tolbert hemi at puresimplicity.net
Tue Apr 26 11:42:35 PDT 2005

On Tue, Apr 26, 2005 at 12:23:19PM -0600, Scott Long wrote:
> Crumbs, I'll look at this.  Can you provide some details of your system?
> dmesg?  Could you also provide the output of 'sysctl hw.busdma'?  Thanks,
> Scott

Hi Scott,

The machine is a Tyan Tiger LE with 2x PIII/733s, an Intel Pro/1000 MT 64-bit
NIC in a 64-bit/66MHz PCI slot. Storage is 2x WD800JBs in RAID1 on the
on-board Promise IDE RAID controller. A CD-RW lives at the on-board primary
master IDE location. Video (when I need it) is the on-board ATI. There's not
much more to it.

The machine is used for NFS, samba, DNS and a few other services for my home


Copyright (c) 1992-2004 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD 5.3-RELEASE-p5 #0: Thu Mar 10 23:17:01 CST 2005
    root at ram.home.lan:/usr/obj/usr/src/sys/RAM-TEST
WARNING: WITNESS option enabled, expect reduced performance.
MPTable: <AMI      CNB30LE     >
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel Pentium III (731.02-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x686  Stepping = 6
real memory  = 536870912 (512 MB)
avail memory = 519897088 (495 MB)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0: Assuming intbase of 0
ioapic1: Assuming intbase of 16
ioapic0 <Version 1.1> irqs 0-15 on motherboard
ioapic1 <Version 1.1> irqs 16-31 on motherboard
npx0: [FAST]
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <MPTable Host-PCI bridge> pcibus 0 on motherboard
pci0: <PCI bus> on pcib0
pci0: <display, VGA> at device 1.0 (no driver attached)
atapci0: <Promise PDC20267 UDMA100 controller> port
0xdf00-0xdf3f,0xdfa8-0xdfab,0xdfa0-0xdfa7,0xdfac-0xdfaf,0xdfe0-0xdfe7 mem
0xfeaa0000-0xfeabffff irq 31 at device 3.0 on pci0
ata2: channel #0 on atapci0
ata3: channel #1 on atapci0
isab0: <PCI-ISA bridge> port 0x580-0x58f at device 15.0 on pci0
isa0: <ISA bus> on isab0
atapci1: <ServerWorks ROSB4 UDMA33 controller> port
0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 15.1 on pci0
ata0: channel #0 on atapci1
ata1: channel #1 on atapci1
ohci0: <OHCI (generic) USB controller> mem 0xfeafc000-0xfeafcfff irq 10 at
device 15.2 on pci0
usb0: OHCI version 1.0, legacy support
usb0: <OHCI (generic) USB controller> on ohci0
usb0: USB revision 1.0
uhub0: (0x1166) OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 4 ports with 4 removable, self powered
pcib1: <MPTable Host-PCI bridge> pcibus 1 on motherboard
pci1: <PCI bus> on pcib1
em0: <Intel(R) PRO/1000 Network Connection, Version - 1.7.35> port
0xef00-0xef3f mem 0xfebe0000-0xfebfffff irq 23 at device 3.0 on pci1
em0: Ethernet address: 00:07:e9:1a:a8:7f
em0:  Speed:N/A  Duplex:N/A
cpu0 on motherboard
cpu1 on motherboard
orm0: <ISA Option ROMs> at iomem 0xc8000-0xcffff,0xc0000-0xc7fff on isa0
pmtimer0 on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x64,0x60 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
ppc0: parallel port not found.
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
unknown: <PNP0303> can't assign resources (port)
unknown: <PNP0c02> can't assign resources (port)
unknown: <PNP0501> can't assign resources (port)
unknown: <PNP0501> can't assign resources (port)
Timecounters tick every 10.000 msec
acd0: CDRW <LITE-ON LTR-40125S/ZS0J> at ata0-master UDMA33
ad4: 76319MB <WDC WD800JB-00DUA3/75.13B75> [155061/16/63] at ata2-master
ad6: 76319MB <WDC WD800JB-00DUA3/75.13B75> [155061/16/63] at ata3-master
ar0: 76319MB <ATA RAID1 array> [9729/255/63] status: READY subdisks:
 disk0 READY on ad6 at ata3-master
 disk1 READY on ad4 at ata2-master
SMP: AP CPU #1 Launched!
Mounting root from ufs:/dev/ar0s1a
WARNING: / was not properly dismounted
WARNING: /mnt/media was not properly dismounted
WARNING: /tmp was not properly dismounted
WARNING: /usr was not properly dismounted
WARNING: /usr/home was not properly dismounted
WARNING: /var was not properly dismounted
em0: Link is up 1000 Mbps Full Duplex
lock order reversal
 1st 0xc162e3b4 em0 (network driver) @ /usr/src/sys/dev/em/if_em.c:980
 2nd 0xc0663d80 Giant (Giant) @ /usr/src/sys/vm/vm_contig.c:538
KDB: stack backtrace:
kdb_backtrace(c0619e00,c0663d80,c0615a3e,c0615a3e,c06270aa) at
witness_checkorder(c0663d80,9,c06270aa,21a,d403d964) at
_mtx_lock_flags(c0663d80,0,c06270aa,21a,c04b9b5f) at _mtx_lock_flags+0x8a
contigmalloc(1000,c063d760,1,0,ffffffff) at contigmalloc+0x42
alloc_bounce_pages(c1737d00,4,101,c18ac100,c162e000) at
bus_dmamap_create(c1737d00,1,d403da28,c0672c20,0) at bus_dmamap_create+0x131
em_encap(c162e000,c18ac100,c0609329,267,c162e0e8) at em_encap+0x90
em_start_locked(c162e000,ffffffff,c044cfc0,c162e000,c162e37c) at
em_intr(c162e000,0,c0613eaa,269,c0663d40) at em_intr+0x143
ithread_loop(c1566400,d403dd48,c0613cce,323,b20684f9) at ithread_loop+0x172
fork_exit(c04b0410,c1566400,d403dd48) at fork_exit+0xc6
fork_trampoline() at fork_trampoline+0x8
--- trap 0x1, eip = 0, esp = 0xd403dd7c, ebp = 0 ---

hw.busdma.free_bpages: 512
hw.busdma.reserved_bpages: 0
hw.busdma.active_bpages: 0
hw.busdma.total_bpages: 512
hw.busdma.total_bounced: 0
hw.busdma.total_deferred: 0

Josh Tolbert
hemi at puresimplicity.net  ||  http://www.puresimplicity.net/~hemi/

If your sysadmin's not being fascist, you're paying him too much.
   --Sam Greenfield

More information about the freebsd-stable mailing list