Path: utzoo!attcan!uunet!munnari!otc!metro!basser!natmlab!ditsyda!evans From: evans@ditsyda.oz (Bruce Evans) Newsgroups: comp.os.minix Subject: Re: Hard drives on ST Message-ID: <1803@ditsyda.oz> Date: 14 Feb 89 11:01:11 GMT References: <1630@psu-cs.UUCP> Organization: CSIRO DIT Sydney, Australia Lines: 24 in article <1630@psu-cs.UUCP>, kirkenda@psu-cs.UUCP (Steve Kirkendall) says: > Basically, the problem is that the older Supra board send extra interrupts > after the DMA transfer is complete. This either causes the kernel to print > "dma interrupt discarded" (a minor nuisance) or to panic when the hard disk > driver task received a message from -1, which is hardware. In the PC at_wini.c, there is a potential bug which may be related to this. It doesn't matter yet because of the way interrupts are handled, but probably will matter for PS/2's. The bug is around line 215 of w_transfer(). After setting up DMA, it does receive message read buffer out of DMA port to memory get results Two interrupts should be geneated since there are two sectors per block. The code is in a loop to take care of this. But the interrupts are generated when the buffer is ready, before the buffer is read and not after. So the second interrupt may arrive before the results of the first have been read, leading to the second receive hanging. The fix is to get the results immediately after receiving the message. Bruce Evans evans@ditsyda.oz.au