Port-amiga archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Problems with IOblix serial ports
John Klos wrote:
> One part of the problem turned out to be the lpt port(s). My card only
> has one lpt chip (78C36; the second one is an option on these boards),
> but the kernel was configuring two lpt ports:
>
> lpt0 at iobl0 port 0x0200 ipl 6
> lpt1 at iobl0 port 0x0300 ipl 6
>
> with lpt0 in the kernel config instead of lpt*, it still paniced when I
> tried to use the com ports, but with neither lpt0 nor lpt*, the com
> ports work fine, so I assume that there's a problem with the lpt port
> driver.
All IOblix devices, the com ports and the lpt ports install a level 6
insterrupt handler. So when you get an interrupt from one of your com ports
all handlers (4 x comintr() and 2 x lptintr()) might be called until the
first confirmed having handled the interrupt.
Which means when the lpt-handlers are before the com-handlers in the isr
queue, they will be called first and might cause a crash when something bad
happens (ok, this doesn't explain your success with printf in comintr).
> I wouldn't have any way to test an lpt port, anyhow.
I guess nobody ever tested it. I found a message from Ignatios in the
cvs-log where he wrote that IOblix lpt is untested. But I think he tested
the serial port without panics.
> Any ideas?
You could continue to explore the problem in two directions:
- Debug lptintr(). Although not used, the lptintr() will probably be called
on each level 6 interrupt.
- Revert busfuncs.c to 1.10, simple_busfuncs.c to 1.5 and
amiga_bus_simple_4.c to 1.5. This will make sure I didn't introduce a bug
there.
--
Frank Wille
Home |
Main Index |
Thread Index |
Old Index