[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Current kernel with http://gnats.netbsd.org/39965 and pmap patches
On Tue, Dec 23, 2008 at 7:32 PM, Izumi Tsutsui
> Is there any device which uses DMA on your machine?
> Could DMA interrupts happen even if it's disabled?
Oh, yes: I have installation of NetBSD on SCSI disk (and another one for
installer/installation testing) and /atari/dev/atari5380.c uses IB_DINT :)
I tried "tar cvf /dev/null *.tgz" for NetBSD installation sets (located at ATA
disk) with SCSI disk switched off and on and kernel prints stray level 71
interrupt and wdc0:0:0: lost interrupt errors for both cases. However it does
not freeze. I also tried copying some files from ATA disk to SCSI and it seems
when reading from ATA and writing to SCSI things go bad and kernel starts to
print wdc:0:0:0: lost interrupt and device timeout messages constantly... So it
seems that sharing IB_DINT causes (at least) freezing problem with interrupts ?
I also tried copying several files from one ATA partition to another: error
messages are same but operation progresses (though cp command outputs input/
output errors and copying fails...) but ATA disk does not freeze.
> atari/intr.c:intr_dispatch() function calls all established interrupt
> handlers, so maybe we should not clear the interrupt register unless
> it's actually processed in that handler.
> (though I don't know about MFP interrupt registers on atari)
> How about to handle MFP register only if wdcintr() returns non zero?
> (Though this might cause a race condition if other DMA interrupts occur
> during wdcintr(). If IB_DINT is also shared among dma and wdc,
> maybe we should prepare special establish and dispatch functions for it)
Maybe with special establish and dispatch functions as you suggest we can
prevent freezing which happens when reading from ATA and writing to SCSI.
Could this also help with problem that occur when ATA is used for reading
and writing ?
This patch has the same behaviour that current has: wdc0:0:0: lost interrupt
messages when mounting partition from ATA disk.
Main Index |
Thread Index |