Date: Fri, 21 Apr 2000 03:52:11 -0400 (EDT) From: Mike Nowlin <mike@argos.org> To: freebsd-stable@FreeBSD.ORG Cc: adoyle@viewsnet.com Subject: Re: ppi Geek Port crash - more info Message-ID: <Pine.LNX.4.05.10004210329220.28275-100000@jason.argos.org> In-Reply-To: <Pine.LNX.4.05.10004150406230.28959-100000@jason.argos.org>
next in thread | previous in thread | raw e-mail | index | archive | help
More information on this problem:
On Sat, 15 Apr 2000, Mike Nowlin wrote:
> Bringing back a problem discussed earlier that I couldn't find a
> resolution on, I'm having problems with the ppi interface blowing up the
> system (CVSup'd to 4.0-CURRENT somewhere around April 3). (I just want my
> I'll try to update tomorrow and try it again, but I get the feeling that
> I'll have the same problem.
-- done as of 4/20, no changes... It DOES work on my 3.4-STABLE system.
(I'm about ready to start backing my 4.0 up week-by-week until it works,
then doing some diff's... :) )
This bug is triggered by an open() on /dev/ppi0... PR kern/14something...
I hooked up a serial kgdb and got the back trace of what happened to cause
this... Looks to me like irq=0 when it hits BUS_SETUP_INTR in several
places, which is passed on to nexus_setup_intr(), causing the panic.
I'm not that familiar with how this all works, but I'm more than willing
to play with it -- been digging into this code for the last three hours,
but can't really "get a grip on it." If someone has a few pointers as to
where to look, I'll see what I can do. This whole BUS_SETUP_INTR thing is
messing with my mind -- long day/week/month/year at work... :)
Hints as to what UNITOSOFTC() really does?
Thanks - Mike
------- Lots of debugging stuff below -------
db> trace
Debugger(c0271e63) at Debugger+0x3c
panic(c02997c0,c0840d80,c0837e00,c0840c80,c61e8ba0) at panic+0x70
nexus_setup_intr(c082de80,c0840c00,0,1,c012d838) at nexus_setup_intr+0x19
BUS_SETUP_INTR(c082de80,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
bus_generic_setup_intr(c082de00,c0840c00,0,1,c012d838) at
bus_generic_setup_intr+0x2e
BUS_SETUP_INTR(c082de00,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
bus_generic_setup_intr(c082dd00,c0840c00,0,1,c012d838) at
bus_generic_setup_intr+0x2e
BUS_SETUP_INTR(c082dd00,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
bus_generic_setup_intr(c082db00,c0840c00,0,1,c012d838) at
bus_generic_setup_intr+0x2e
BUS_SETUP_INTR(c082db00,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
isa_setup_intr(c082d600,c0840c00,0,1,c012d838) at isa_setup_intr+0x26
BUS_SETUP_INTR(c082d600,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
ppc_setup_intr(c0837e00,c0840c00,0,1,c012d838) at ppc_setup_intr+0x5e
BUS_SETUP_INTR(c0837e00,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
ppbus_setup_intr(c0840d00,c0840c00,0,1,c012d838) at ppbus_setup_intr+0x50
BUS_SETUP_INTR(c0840d00,c0840c00,0,1,c012d838) at BUS_SETUP_INTR+0x40
ppiopen(c0840980,3,2000,c5c86080,0) at ppiopen+0x90
spec_open(c61e8e10,c61e8de8,c02207a9,c61e8e10,c61e8e84) at spec_open+0xfd
spec_vnoperate(c61e8e10,c61e8e84,c0171a57,c61e8e10,0) at spec_vnoperate+0x15
ufs_vnoperatespec(c61e8e10,0,c61e8f80,c096b240,c61edb00) at
ufs_vnoperatespec+0x15
vn_open(c61e8edc,3,1,c5c86080,c02a772c) at vn_open+0x3d7
open(c5c86080,c61e8f80,1,bfbffcd8,bfbffce0) at open+0xb5
syscall(2f,2f,2f,bfbffce0,bfbffcd8) at syscall+0x176
Xint0x80_syscall() at Xint0x80_syscall+0x26
db>
#0 0xc0141c95 in panic (fmt=0xc0299b20 "nexus_setup_intr: NULL irq resource!")
at ../../kern/kern_shutdown.c:526
#1 0xc0255a2d in nexus_setup_intr (bus=0xc082de00, child=0xc0840c00, irq=0x0,
flags=1, ihand=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at ../../i386/i386/nexus.c:402
#2 0xc0120178 in BUS_SETUP_INTR (dev=0xc082de00, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#3 0xc0149ef6 in bus_generic_setup_intr (dev=0xc082dd80, child=0xc0840c00,
irq=0x0, flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980,
cookiep=0xc0841e14) at ../../kern/subr_bus.c:1968
#4 0xc0120178 in BUS_SETUP_INTR (dev=0xc082dd80, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#5 0xc0149ef6 in bus_generic_setup_intr (dev=0xc082dc80, child=0xc0840c00,
irq=0x0, flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980,
cookiep=0xc0841e14) at ../../kern/subr_bus.c:1968
#6 0xc0120178 in BUS_SETUP_INTR (dev=0xc082dc80, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#7 0xc0149ef6 in bus_generic_setup_intr (dev=0xc082da80, child=0xc0840c00,
irq=0x0, flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980,
cookiep=0xc0841e14) at ../../kern/subr_bus.c:1968
#8 0xc0120178 in BUS_SETUP_INTR (dev=0xc082da80, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#9 0xc026278e in isa_setup_intr (bus=0xc082d580, child=0xc0840c00, r=0x0,
flags=1, ihand=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at ../../i386/isa/isa.c:252
#10 0xc0120178 in BUS_SETUP_INTR (dev=0xc082d580, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#11 0xc026645e in ppc_setup_intr (bus=0xc0837d80, child=0xc0840c00, r=0x0,
flags=1, ihand=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at ../../isa/ppc.c:1978
#12 0xc0120178 in BUS_SETUP_INTR (dev=0xc0837d80, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#13 0xc012d660 in ppbus_setup_intr (bus=0xc0840d00, child=0xc0840c00, r=0x0,
flags=1, ihand=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at ../../dev/ppbus/ppbconf.c:420
#14 0xc0120178 in BUS_SETUP_INTR (dev=0xc0840d00, child=0xc0840c00, irq=0x0,
flags=1, intr=0xc012d8d4 <ppiintr>, arg=0xc0840980, cookiep=0xc0841e14)
at bus_if.c:162
#15 0xc012d96c in ppiopen (dev=0xc0840980, flags=3, fmt=8192, p=0xc5cc5f20)
at ../../dev/ppbus/ppi.c:276
#16 0xc0176fc1 in spec_open (ap=0xc61d4e10)
at ../../miscfs/specfs/spec_vnops.c:191
#17 0xc0176ec1 in spec_vnoperate (ap=0xc61d4e10)
at ../../miscfs/specfs/spec_vnops.c:117
#18 0xc0220951 in ufs_vnoperatespec (ap=0xc61d4e10)
at ../../ufs/ufs/ufs_vnops.c:2301
#19 0xc0171ae7 in vn_open (ndp=0xc61d4edc, fmode=3, cmode=1) at vnode_if.h:189
#20 0xc016dad9 in open (p=0xc5cc5f20, uap=0xc61d4f80)
at ../../kern/vfs_syscalls.c:994
#21 0xc025a3b6 in syscall (frame={tf_fs = 47, tf_es = 47, tf_ds = 47,
tf_edi = -1077936964, tf_esi = -1077936972, tf_ebp = -1077937056,
tf_isp = -971157548, tf_ebx = 1, tf_edx = 4, tf_ecx = 672007776,
tf_eax = 5, tf_trapno = 12, tf_err = 2, tf_eip = 671918804, tf_cs = 31,
tf_eflags = 659, tf_esp = -1077937100, tf_ss = 47})
at ../../i386/i386/trap.c:1073
#22 0xc024e8b6 in Xint0x80_syscall ()
#23 0x80483bd in ?? ()
(kgdb) frame 15
#15 0xc012d96c in ppiopen (dev=0xc0840980, flags=3, fmt=8192, p=0xc5cc5d80)
at ../../dev/ppbus/ppi.c:276
276 BUS_SETUP_INTR(device_get_parent(ppidev), ppidev, ppi->intr_resource,
(kgdb) print (struct ppi_data) ppi
$4 = {ppi_unit = -1065083904, ppi_flags = -1065088000,
ppi_count = -1065088640, ppi_mode = -971145884,
ppi_buffer = "x\001\022A\000\r\204A\000\f\204A\000\000\000\000\001\000\000\000OØ\022A\200\t\204A\024\036\204A\224}\035ÆlU\022A\000\r\204A\000\f\204A\000\000\000\000\001\000\000\000OØ\022A\200\t\204A\024\036\204Aà+\032Æ\200\t\204A\200]IÅ0\t\204A\003\000\000\000\000 \000\000\200]IÅ\000\000\000\000à+\032Æ\200\001\000\000 m*A\000\000\000\000\000/*Aà+\032Æ\000\000\000\000\200]IÅÜ}\035ÆAn\027A\020~\035Æè}\035ÆQ\t\"A\020~\035Æ\204~\035Æç\032\027A\020~\035Æ\000\000\000\000\200\177\035Æ\000º\215Aà+\032Æ$~\035Æ\200\231\215A"...,
intr_resource = 0xc5cc5d80, intr_cookie = 0xc61d7f80}
(kgdb) print ppi
$5 = (struct ppi_data *) 0xc0841c00
(kgdb) print ppi->intr_resource
$6 = (struct resource *) 0x0
(kgdb)
(kgdb) print unit
$8 = 3229879296
(kgdb) print dev
$9 = 0xc0840980
> The crash:
>
> hawk:/home/mike# ./geekport
> panic: nexus_setup_intr: NULL irq resource!
>
> syncing disks... 6 6
> done
> Uptime: 3m28s
>
> dumping to dev #ad/0x20001, offset 73728
> dump ata0: resetting devices .. done
> 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
> 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15
> 14 13 12 11 10 9 8 7 6 5 4 3 2 1 succeeded
> Automatic reboot in 15 seconds - press a key on the console to abort
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.05.10004210329220.28275-100000>
