Date: Tue, 18 Mar 2008 04:52:43 -0400 From: sanket hase <shase@andrew.cmu.edu> To: freebsd-drivers@freebsd.org Cc: Sanket Somnath Hase <sanket@cmu.edu> Subject: Freebsd/Xen: pcifront: IRQ resource allocation failed: Query Message-ID: <47DF82DB.5020302@andrew.cmu.edu>
next in thread | raw e-mail | index | archive | help
Hi , I am a Masters student at Carnegie Mellon Univ. working on xen/freebsd opensource project. I have been working on pci-passtrhough support for freebsd domU. I am testing pcifront on freebsd domU using following sound card [ Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] Following sound driver is used for this sound card on Freebsd: *snd_csa*-- Crystal Semiconductor CS461x/462x/4280 PCI bridge device driver I am able to detect the card. pci3: <PCI bus> on pcib3 csa0: <CS4280/CS4614/CS4622/CS4624/CS4630> mem 0xfafff000-0xfaffffff,0xfae00000-0xfaefffff irq 16 at device 5.0 on pci3 csa: card is Turtle Beach Santa Cruz But going ahead IRQ resource allocations fails, before interrupt handler can be setup. I found that it fails in "rman_reserve_resource_bound" Because: r = TAILQ_FIRST(&rm->rm_list) = is still NULL , as it was initialized. Here is the stacktrace: (gdb) where #0 rman_reserve_resource_bound (rm=0xc07b3de0, start=16, end=16, count=1, bound=0, flags=4, dev=0xc0d8f700) at ../../../kern/subr_rman.c:282 #1 0xc01747bc in rman_reserve_resource (rm=0xc07b3de0, start=16, end=16, count=1, flags=4, dev=0xc0d8f700) at ../../../kern/subr_rman.c:491 #2 0xc035cb75 in nexus_alloc_resource (bus=0xc0db3000, child=0xc0d8f700, type=1, rid=0xc0d8f994, start=16, end=16, count=1, flags=6) at ../../../i386/i386/nexus.c:367 #3 0xc016adae in bus_generic_alloc_resource (dev=0xc0d8f800, child=0xc0d8f700, type=1, rid=0xc0d8f994, start=16, end=16, count=1, flags=6) at bus_if.h:263 #4 0xc016adae in bus_generic_alloc_resource (dev=0xc0d8f500, child=0xc0d8f700, type=1, rid=0xc0d8f994, start=16, end=16, count=1, flags=6) at bus_if.h:263 #5 0xc016af34 in resource_list_alloc (rl=0xc0e03604, bus=0xc0e04b00, child=0xc0d8f700, type=1, rid=0xc0d8f994, start=16, end=16, count=1, flags=6) at bus_if.h:263 #6 0xc00ab3d5 in pci_alloc_resource (dev=0xc0e04b00, child=0xc0d8f700, type=1, rid=0xc0d8f994, start=0, end=4294967295, count=1, flags=6) at ../../../dev/pci/pci.c:3488 #7 0xc016ad1c in bus_alloc_resource (dev=0xc0d8f700, type=1, rid=0xc0d8f994, start=0, end=4294967295, count=1, flags=6) at bus_if.h:263 #8 0xc00b54e6 in csa_attach (dev=0xc0d8f700) at bus.h:376 #9 0xc0169ecf in device_attach (dev=0xc0d8f700) at device_if.h:178 #10 0xc016a9f0 in device_probe_and_attach (dev=0xc0d8f700) at ../../../kern/subr_bus.c:2369 #11 0xc016aad9 in bus_generic_attach (dev=0xc0e04b00) at ../../../kern/subr_bus.c:2907 #12 0xc00ae8bf in pci_attach (dev=0xc0e04b00) at ../../../dev/pci/pci.c:2611 #13 0xc0169ecf in device_attach (dev=0xc0e04b00) at device_if.h:178 #14 0xc016a9f0 in device_probe_and_attach (dev=0xc0e04b00) at ../../../kern/subr_bus.c:2369 #15 0xc016aad9 in bus_generic_attach (dev=0xc0d8f500) at ../../../kern/subr_bus.c:2907 #16 0xc033811b in xpcib_attach (dev=0xc0d8f500) at ../../../dev/xen/pcifront/pcifront.c:702 #17 0xc0169ecf in device_attach (dev=0xc0d8f500) at device_if.h:178 #18 0xc016a9f0 in device_probe_and_attach (dev=0xc0d8f500) at ../../../kern/subr_bus.c:2369 #19 0xc016aad9 in bus_generic_attach (dev=0xc0d8f800) at ../../../kern/subr_bus.c:2907 #20 0xc03383ab in xpcife_attach (dev=0xc0d8f800) at ../../../dev/xen/pcifront/pcifront.c:640 #21 0xc0169ecf in device_attach (dev=0xc0d8f800) at device_if.h:178 #22 0xc016a9f0 in device_probe_and_attach (dev=0xc0d8f800) at ../../../kern/subr_bus.c:2369 #23 0xc033792a in pcifront_backend_changed (xdev=0xc0e05000, be_state=XenbusStateConnected) at ../../../dev/xen/pcifront/pcifront.c:346 #24 0xc032fea8 in otherend_changed (watch=0xc0e05000, vec=0xc0defa00, len=2) at ../../../xen/xenbus/xenbus_probe.c:330 #25 0xc0330aec in xenwatch_thread (unused=0x0) at ../../../xen/xenbus/xenbus_xs.c:741 #26 0xc0129968 in fork_exit (callout=0xc0330980 <xenwatch_thread>, arg=0x0, frame=0xc588bd38) at ../../../kern/kern_fork.c:795 #27 0xc0350e84 in fork_trampoline () at ../../../i386/xen/exception.s:240 (gdb) p rm->rm_list $4 = {tqh_first = 0x0, tqh_last = 0xc07b3de0} (gdb) tqh_first is still 0 ( as it was initialzed ) which ultimately causes the IRQ resource allocation to fail. Am I missing anything ? Looking forward to hearing from you,Thanks for the help in advance. Thanks, Sanket Hase
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47DF82DB.5020302>