Date: Tue, 28 Nov 1995 08:56:16 +0000 () From: Michael Smith <msmith@atrad.adelaide.edu.au> To: jgreco@brasil.moneng.mei.com (Joe Greco) Cc: rich@spirit.com.au, hsu@clinet.fi, msmith@atrad.adelaide.edu.au, freebsd-hackers@freefall.freebsd.org Subject: Re: 16 ports Boca - anyone using it? Message-ID: <199511280856.IAA07993@genesis.atrad.adelaide.edu.au> In-Reply-To: <199511270623.AAA10644@brasil.moneng.mei.com> from "Joe Greco" at Nov 27, 95 00:23:17 am
next in thread | previous in thread | raw e-mail | index | archive | help
Joe Greco stands accused of saying: > > Um. "Fascinating", I say. I didn't have any diagnostic tools handy so I > rebooted the box and wrote a little program that would page me if the board > died again. The next day I went and hooked up my trusty logic probe, and > the wait began. :-) A week later (last nite, actually!), I got a page, > and fortunately somebody was at the office to observe the logic probe. > The interrupt line is being held ACTIVE....???!!! (solid red on the probe, > normally green). Yecch. > Do any sio-shared-interrupt-geniuses have any ideas? I can picture all > sorts of plausible race conditions and I have no idea what the code is > doing. ISA interrupts are edge-triggered, so something happened to lose you one. As far as I can tell, siopoll() doesn't check for pending interrupts on ports as it cycles around (I can imagine a possible race if it did...) You could possibly add some code to siopoll() to check the interrupt status of open ports, and spew a console printf if it found a port with pending interrupt status. Something like : if (incc <= 0 || !(tp->t_state & TS_ISOPEN)) continue; + disable_intr(); + iir = inb(com->int_id_port) & 0x07; + enable_intr(); + if (iir) + printf("sio%d: interrupt pending (%d) in poll\n", + com->unit,iir); /* * Avoid the grotesquely inefficient lineswitch routine * (ttyinput) in "raw" mode. It usually takes about 450 (Bruce is probably laughing himself silly over some obvious mistake I'm making here, but that's what I'd start with). If this "works" (it may fill your log partition pretty quickly 8), then we could find a way to call siointr to handle the missed interrupt. > Joe Greco - Systems Administrator jgreco@ns.sol.net -- ]] Mike Smith, Software Engineer msmith@atrad.adelaide.edu.au [[ ]] Genesis Software genesis@atrad.adelaide.edu.au [[ ]] High-speed data acquisition and (GSM mobile) 041-122-496 [[ ]] realtime instrument control (ph/fax) +61-8-267-3039 [[ ]] "Who does BSD?" "We do Chucky, we do." [[
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511280856.IAA07993>