Re: ATA Patch #7 (Re: ATA Patch #6)

看板DFBSD_kernel作者時間21年前 (2004/12/01 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/6 (看更多)
--7JfCtLOvnd9MIVvH Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Nov 29, 2004 at 10:40:36AM -0800, Matthew Dillon wrote: > > :Ok, it may be too early to speak, but if I understand the documents > :correctly, the device control register should not be accessed when > :DMACK is assert -- that is, you can't disable device interrupt after > :ata_dmastart(), right? Here's a small modification to ATA Patch #7 > :that just worked(but slightly worse numbers from dd command compared > :to unpatched kernel) on Dynabook SS3500. > :- reduced DELAY()'s you added down to 1 > :- move up ata_clear_interlock() before ata_dmastart() > :- add missing ata_clear_interlock() after calls to ata_command() > : with ATA_WAIT_READY flag. > > Ooh. I think you are onto something. That makes a lot of sense. > > You need to add one thing, and that is to put a critical section > around the clearing of the interlock and the DMA start so no interrupt > can occur inbetween the two. > > Also, the command delay is mandatory... it's either in the specs > (somewhere), or it had to be done some time in the past to support > slow devices. The selection DELAY (the first one) below can be reduced > to 1us, but the command-start DELAY (the second one) cannot. > > Maybe we should make the command-start delay programmable with a > sysctl. Here's another patch to be applied on top of ATA Patch #7(attached). I added ata_clear_interlock() in ata_dmastart() because it needs device interrupt enabled anyway. Here I'm assuming that the critical section can be nested(looking at thread2.h it can). Command-start delay can be changed via hw.ata.command_delay(default: 10). Negative value is ignored and silently reset to 0 (can we let sysctl(8) to reject bogus values?). --7JfCtLOvnd9MIVvH Content-Type: application/x-gunzip Content-Disposition: attachment; filename="ata-7-take2.patch.gz" Content-Transfer-Encoding: base64 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 OEoNsN6yrbJhSUkj7j9bV+mdzhAAAA== --7JfCtLOvnd9MIVvH--
文章代碼(AID): #11hBLw00 (DFBSD_kernel)
文章代碼(AID): #11hBLw00 (DFBSD_kernel)