Skip site navigation (1)Skip section navigation (2)
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 m=
y

> 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=3D0 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... :)  =20

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=20
=09bus_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=20
=09bus_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=20
=09bus_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+0x1=
5
ufs_vnoperatespec(c61e8e10,0,c61e8f80,c096b240,c61edb00) at=20
=09ufs_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=3D0xc0299b20 "nexus_setup_intr: NULL irq resou=
rce!")
    at ../../kern/kern_shutdown.c:526
#1  0xc0255a2d in nexus_setup_intr (bus=3D0xc082de00, child=3D0xc0840c00, i=
rq=3D0x0,
    flags=3D1, ihand=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0x=
c0841e14)
    at ../../i386/i386/nexus.c:402
#2  0xc0120178 in BUS_SETUP_INTR (dev=3D0xc082de00, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#3  0xc0149ef6 in bus_generic_setup_intr (dev=3D0xc082dd80, child=3D0xc0840=
c00,
    irq=3D0x0, flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980,
    cookiep=3D0xc0841e14) at ../../kern/subr_bus.c:1968
#4  0xc0120178 in BUS_SETUP_INTR (dev=3D0xc082dd80, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#5  0xc0149ef6 in bus_generic_setup_intr (dev=3D0xc082dc80, child=3D0xc0840=
c00,
    irq=3D0x0, flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980,
    cookiep=3D0xc0841e14) at ../../kern/subr_bus.c:1968
#6  0xc0120178 in BUS_SETUP_INTR (dev=3D0xc082dc80, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#7  0xc0149ef6 in bus_generic_setup_intr (dev=3D0xc082da80, child=3D0xc0840=
c00,
    irq=3D0x0, flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980,
    cookiep=3D0xc0841e14) at ../../kern/subr_bus.c:1968
#8  0xc0120178 in BUS_SETUP_INTR (dev=3D0xc082da80, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#9  0xc026278e in isa_setup_intr (bus=3D0xc082d580, child=3D0xc0840c00, r=
=3D0x0,
    flags=3D1, ihand=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0x=
c0841e14)
    at ../../i386/isa/isa.c:252
#10 0xc0120178 in BUS_SETUP_INTR (dev=3D0xc082d580, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#11 0xc026645e in ppc_setup_intr (bus=3D0xc0837d80, child=3D0xc0840c00, r=
=3D0x0,
    flags=3D1, ihand=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0x=
c0841e14)
    at ../../isa/ppc.c:1978
#12 0xc0120178 in BUS_SETUP_INTR (dev=3D0xc0837d80, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#13 0xc012d660 in ppbus_setup_intr (bus=3D0xc0840d00, child=3D0xc0840c00, r=
=3D0x0,
    flags=3D1, ihand=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0x=
c0841e14)
    at ../../dev/ppbus/ppbconf.c:420
#14 0xc0120178 in BUS_SETUP_INTR (dev=3D0xc0840d00, child=3D0xc0840c00, irq=
=3D0x0,
    flags=3D1, intr=3D0xc012d8d4 <ppiintr>, arg=3D0xc0840980, cookiep=3D0xc=
0841e14)
    at bus_if.c:162
#15 0xc012d96c in ppiopen (dev=3D0xc0840980, flags=3D3, fmt=3D8192, p=3D0xc=
5cc5f20)
    at ../../dev/ppbus/ppi.c:276
#16 0xc0176fc1 in spec_open (ap=3D0xc61d4e10)
    at ../../miscfs/specfs/spec_vnops.c:191
#17 0xc0176ec1 in spec_vnoperate (ap=3D0xc61d4e10)
    at ../../miscfs/specfs/spec_vnops.c:117
#18 0xc0220951 in ufs_vnoperatespec (ap=3D0xc61d4e10)
    at ../../ufs/ufs/ufs_vnops.c:2301
#19 0xc0171ae7 in vn_open (ndp=3D0xc61d4edc, fmode=3D3, cmode=3D1) at vnode=
_if.h:189
#20 0xc016dad9 in open (p=3D0xc5cc5f20, uap=3D0xc61d4f80)
    at ../../kern/vfs_syscalls.c:994
#21 0xc025a3b6 in syscall (frame=3D{tf_fs =3D 47, tf_es =3D 47, tf_ds =3D 4=
7,
      tf_edi =3D -1077936964, tf_esi =3D -1077936972, tf_ebp =3D -107793705=
6,
      tf_isp =3D -971157548, tf_ebx =3D 1, tf_edx =3D 4, tf_ecx =3D 6720077=
76,
      tf_eax =3D 5, tf_trapno =3D 12, tf_err =3D 2, tf_eip =3D 671918804, t=
f_cs =3D 31,
      tf_eflags =3D 659, tf_esp =3D -1077937100, tf_ss =3D 47})
    at ../../i386/i386/trap.c:1073
#22 0xc024e8b6 in Xint0x80_syscall ()
#23 0x80483bd in ?? ()



(kgdb) frame 15
#15 0xc012d96c in ppiopen (dev=3D0xc0840980, flags=3D3, fmt=3D8192, p=3D0xc=
5cc5d80)
    at ../../dev/ppbus/ppi.c:276
276                     BUS_SETUP_INTR(device_get_parent(ppidev), ppidev, p=
pi->intr_resource,
(kgdb) print (struct ppi_data) ppi
$4 =3D {ppi_unit =3D -1065083904, ppi_flags =3D -1065088000,
  ppi_count =3D -1065088640, ppi_mode =3D -971145884,
  ppi_buffer =3D "x\001\022A\000\r\204A\000\f\204A\000\000\000\000\001\000\=
000\000O=D8\022A\200\t\204A\024\036\204A\224}\035=C6lU\022A\000\r\204A\000\=
f\204A\000\000\000\000\001\000\000\000O=D8\022A\200\t\204A\024\036\204A=E0+=
\032=C6\200\t\204A\200]I=C50\t\204A\003\000\000\000\000 \000\000\200]I=C5\0=
00\000\000\000=E0+\032=C6\200\001\000\000=A0m*A\000\000\000\000\000/*A=E0+\=
032=C6\000\000\000\000\200]I=C5=DC}\035=C6An\027A\020~\035=C6=E8}\035=C6Q\t=
\"A\020~\035=C6\204~\035=C6=E7\032\027A\020~\035=C6\000\000\000\000\200\177=
\035=C6\000=BA\215A=E0+\032=C6$~\035=C6\200\231\215A"...,
  intr_resource =3D 0xc5cc5d80, intr_cookie =3D 0xc61d7f80}
(kgdb) print ppi
$5 =3D (struct ppi_data *) 0xc0841c00
(kgdb) print ppi->intr_resource
$6 =3D (struct resource *) 0x0
(kgdb)

(kgdb) print unit
$8 =3D 3229879296
(kgdb) print dev
$9 =3D 0xc0840980


> The crash:
>=20
> hawk:/home/mike# ./geekport
> panic: nexus_setup_intr: NULL irq resource!
>=20
> syncing disks... 6 6
> done
> Uptime: 3m28s
>=20
> 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 4=
0
> 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 1=
5
> 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>