sio issue

Ed Maste emaste at sandvine.com
Fri Aug 22 14:21:43 PDT 2003


I can reliably cause a panic in the sio driver by trying to enter the kernel
debugger (with <cr> ~ ^b) while large numbers of kernel messages are being
output to the console.  I've included a stack trace excerpt showing what
happens.  In all of my cases siointr1 was called by comstart, and then is
entered again from Xfastintr4 and it gives me the panic about the com lock
shown.

John Baldwin has a patch
(http://www.geocrawler.com/mail/msg.php3?msg_id=8616108&list=163) for IRQ
sharing, which doesn't set INTR_FAST for the shared case.  I also tried
switching sio to use normal interrupts since it seems safer, and I am unable
to reproduce the panic.  Does sio specify INTR_FAST only for performance
reasons?  We don't care about modems etc. dropping characters so I'd be
happy eliminating the INTR_FAST if it's there only for improved performance.

-ed



#12 0xc01bd801 in panic (
    fmt=0xc02d592e "rslock: cpu: %d, addr: 0x%08x, lock: 0x%08x")
    at /usr/src/sys/kern/kern_shutdown.c:607
#13 0xc02d592e in bsl1 ()
#14 0xc02c2960 in Xfastintr4 ()
#15 0xc02eb79c in siocnopen (sp=0xe166ab5c, iobase=1016, speed=115200)
    at /usr/src/sys/isa/sio.c:3099
#16 0xc02ebc9d in siocnputc (dev=0xc0363b04, c=116)
    at /usr/src/sys/isa/sio.c:3418
#17 0xc01da2fc in cnputc (c=116) at /usr/src/sys/kern/tty_cons.c:476
#18 0xc014628a in db_putchar (c=116, arg=0x0)
    at /usr/src/sys/ddb/db_output.c:108
#19 0xc01cb8d8 in kvprintf (fmt=0xc02f812e "opped at\t", 
    func=0xc0146270 <db_putchar>, arg=0x0, radix=16, ap=0xe166ac5c "")
    at /usr/src/sys/kern/subr_prf.c:532
#20 0xc014636e in db_printf (fmt=0xc02f812c "Stopped at\t")
    at /usr/src/sys/ddb/db_output.c:164
#21 0xc01470ea in db_trap (type=3, code=0) at /usr/src/sys/ddb/db_trap.c:76
#22 0xc02c1188 in kdb_trap (type=3, code=0, regs=0xe166accc)
    at /usr/src/sys/i386/i386/db_interface.c:158
#23 0xc02d701c in trap (frame={tf_fs = 24, tf_es = 16, tf_ds = 16, tf_edi =
1, 
      tf_esi = -1019379712, tf_ebp = -513364692, tf_isp = -513364744, 
      tf_ebx = -1019379712, tf_edx = 1016, tf_ecx = 50331649, tf_eax = 0, 
      tf_trapno = 3, tf_err = 0, tf_eip = -1070685984, tf_cs = 8, 
      tf_eflags = 70, tf_esp = -1019379712, tf_ss = -1018515456})
    at /usr/src/sys/i386/i386/trap.c:592
#24 0xc02ea0e0 in siointr1 (com=0xc33d8000) at machine/cpufunc.h:67
#25 0xc02eb171 in comstart (tp=0xc34ab000) at /usr/src/sys/isa/sio.c:2782
#26 0xc01d7883 in ttstart (tp=0xc34ab000) at /usr/src/sys/kern/tty.c:1401
#27 0xc01d8506 in ttwrite (tp=0xc34ab000, uio=0xe166aedc, flag=8323073)
    at /usr/src/sys/kern/tty.c:1969
#28 0xc02e9bff in siowrite (dev=0xc0363b04, uio=0xe166aedc, flag=8323073)
    at /usr/src/sys/isa/sio.c:1769



More information about the freebsd-hackers mailing list