Bug #1752

if_ath and contigmalloc

Added by nonsolosoft over 4 years ago. Updated 5 months ago.

Status:ClosedStart date:
Priority:NormalDue date:
Assignee:dillon% Done:

0%

Category:Networking
Target version:3.8.0

Description

Hi,

uname -a
DragonFly lap 2.7-DEVELOPMENT DragonFly v2.7.2.35.g209d9-DEVELOPMENT #3:
Fri Apr 23 10:20:05 CEST 2010 ferz@lap:/dati/obj/usr/src/sys/GENERIC
i386

kldload if_ath.ko # doesn't return

from top:

PID 3980
USERNAME root
PRI 170
NICE 0
SIZE 304K
RES 152K
STATE vpctw0
TIME 0:00
CTIME 0:00
CPU 9.28%
COMMAND kldload

kgdb /boot/kernel /dev/kmem

looked for kldload thread:

#
hread 14
#
[Switching to thread 14 (pid 2888/0, ifconfig)]#0 _crit_exit_quick ()
#
at /usr/src/sys/sys/thread2.h:177
#
177 globaldata_t gd = curtd->td_gd;
#
(kgdb) bt
#
#0 _crit_exit_quick () at /usr/src/sys/sys/thread2.h:177
#
#1 lwkt_switch () at /usr/src/sys/kern/lwkt_thread.c:777
#
#2 0xc0368f6e in tsleep (ident=0xcfef4d28, flags=0, wmesg=0xc0652d69
"vpctw0", timo=0)
#
at /usr/src/sys/kern/kern_synch.c:622
#
#3 0xc0544060 in vm_page_sleep_busy (queue=257, count=112642) at
/usr/src/sys/vm/vm_page.h:659
#
#4 vm_contig_pg_clean (queue=257, count=112642) at
/usr/src/sys/vm/vm_contig.c:153
#
#5 vm_contig_pg_flush (queue=257, count=112642) at
/usr/src/sys/vm/vm_contig.c:188
#
#6 0xc0544541 in vm_contig_pg_alloc (size=192000, type=0xc06ef300,
flags=5633, low=0,
#
high=4294967295, alignment=4096, boundary=0, map=0xc078e240) at
/usr/src/sys/vm/vm_contig.c:266
#
#7 contigmalloc_map (size=192000, type=0xc06ef300, flags=5633, low=0,
high=4294967295,
#
alignment=4096, boundary=0, map=0xc078e240) at
/usr/src/sys/vm/vm_contig.c:475
#
#8 0xc0544915 in contigmalloc (size=192000, type=0xc06ef300,
flags=5633, low=0, high=0,
#
alignment=4096, boundary=0) at /usr/src/sys/vm/vm_contig.c:457
#
#9 0xc05c926c in bus_dmamem_alloc (dmat=0xd3e7a280, vaddr=0xcfbdcf8c,
flags=5, mapp=0xcfbdcfa4)
#
at /usr/src/sys/platform/pc32/i386/busdma_machdep.c:570
#
#10 0xd3fef92f in ath_descdma_setup (sc=0xcfbdc7c0, dd=0xcfbdcf88,
head=0xcfbdcfac,
#
name=0xd3ff5bd7 "tx", nbuf=200, ndesc=10) at
/usr/src/sys/dev/netif/ath/ath/if_ath.c:3373
#
#11 0xd3feffc1 in ath_desc_alloc (devid=26, sc=0xcfbdc7c0)
#
at /usr/src/sys/dev/netif/ath/ath/if_ath.c:3481
#
#12 ath_attach (devid=26, sc=0xcfbdc7c0) at
/usr/src/sys/dev/netif/ath/ath/if_ath.c:456
#
#13 0xd3ff4ec5 in ath_pci_attach (dev=0xc2a468a8)
#
at /usr/src/sys/dev/netif/ath/ath/if_ath_pci.c:165
#
#14 0xc0371ba8 in DEVICE_ATTACH (dev=0xc2a468a8) at ./device_if.h:40
#
#15 device_doattach (dev=0xc2a468a8) at /usr/src/sys/kern/subr_bus.c:1662
#
#16 0xc03726cd in device_probe_and_attach (dev=0xc2a468a8) at
/usr/src/sys/kern/subr_bus.c:1622
#
#17 0xc04e8785 in pci_driver_added (dev=0xc2a46858, driver=0xd3ff75ac)
#
at /usr/src/sys/bus/pci/pci.c:3099
#
#18 0xc03713ce in BUS_DRIVER_ADDED (dc=0xc29a1600, driver=0xd3ff75ac) at
./bus_if.h:71
#
#19 devclass_add_driver (dc=0xc29a1600, driver=0xd3ff75ac) at
/usr/src/sys/kern/subr_bus.c:642
#
#20 0xc0371b22 in driver_module_handler (mod=0xccacfe18, what=0,
arg=0xd3ff7598)
#
at /usr/src/sys/kern/subr_bus.c:3068
#
#21 0xc0337552 in module_register_init (arg=0xd3ff758c) at
/usr/src/sys/kern/kern_module.c:112
#
#22 0xc03391a2 in linker_file_sysinit (filename=0xc294c6d8
"/boot/modules/if_ath.ko",
#
result=0xd3b2ec7c) at /usr/src/sys/kern/kern_linker.c:171
#
#23 linker_load_file (filename=0xc294c6d8 "/boot/modules/if_ath.ko",
result=0xd3b2ec7c)
#
at /usr/src/sys/kern/kern_linker.c:336
#
#24 0xc03392cd in linker_load_module (kldname=<value optimized out>,
modname=0xcf9e6400 "if_ath",
#
parent=0x0, verinfo=0x0, lfpp=0xd3b2eca8) at
/usr/src/sys/kern/kern_linker.c:1497
#
#25 0xc0339676 in sys_kldload (uap=0xd3b2ecf0) at
/usr/src/sys/kern/kern_linker.c:785
#
#26 0xc05de7f7 in syscall2 (frame=0xd3b2ed40) at
/usr/src/sys/platform/pc32/i386/trap.c:1319
#
#27 0xc05cc046 in Xint0x80_syscall () at
/usr/src/sys/platform/pc32/i386/exception.s:876
#
#28 0x0000001f in ?? ()
#
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

http://pastebin.com/d76uRuPu

History

#1 Updated by tuxillo over 4 years ago

Hi Ferz,

As spoken you may workaround this by loading if_ath at boot time. Just add the
following line to your /boot/loader.conf:

if_ath_load=YES

It should load without problems, otherwise you may want to tell us.

HTH.

Cheers,
Antonio Huete

#2 Updated by tuxillo over 1 year ago

  • Description updated (diff)
  • Status changed from New to Feedback
  • Assignee deleted (0)

Hi Ferz,

ath(4) and the IEEE80211 stack was updated. Also contigmalloc was reworked some time ago.
I don't think this happens anymore but can you please confirm it?

Cheers,
Antonio Huete

#3 Updated by tuxillo 8 months ago

  • Description updated (diff)
  • Category set to Networking
  • Target version set to 3.8.0

Ferz,

Can you please confirm this works?

Cheers,
Antonio Huete

#4 Updated by tuxillo 5 months ago

  • Status changed from Feedback to Closed
  • Assignee set to dillon

ath(4) and the IEEE80211 stack have been updated since this bug was opened. There have not been reports of this happening with ath(4) anymore. Nevertheless in the case it happens again, just open a new ticket. We can use contigmalloc(9) for the particular cases it may happen.

Also available in: Atom PDF