Date: Thu, 5 Mar 1998 15:10:45 +1100 From: Bruce Evans <bde@zeta.org.au> To: freebsd-current@FreeBSD.ORG, john.saunders@scitec.com.au, shimon@simon-shapiro.org Subject: Re: silo overflows (Was Re: 3.0-RELEASE?) Message-ID: <199803050410.PAA32045@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>If you use an IDE disk then 10 to 1 that's the problem. Particularly Perhaps if you use the busmastering DMA version. All busmastering DMA devices potentially steal too many cycles for PIO drivers to operate properly. >if the IDE driver is doing multi-sector transfers. Interrupts must be >disabled during IDE PIO transfers (or you can risk data corruption) Interrupts aren't disabled during IDE PIO transfers under FreeBSD. >and the time taken to transfer, say 16 sectors, is significant. When >Linux supported Intel Triton busmaster IDE the occurance of FIFO >overflows disappeared on Triton boards. The reverse is the case under FreeBSD. PIO IDE can only delay sio interrupt handling by one bus cycle. DMA can delay not only interrupt handling (which often requires a bus access to access the ICU), but all PIO bus accesses. sio needs to do about 50 bus accesses per port (normal worst case) to handle a 16550 interrupt. If DMA delays bus accesses by as little as 4 usec each, then interrupt latency for a second port will increase from about 60 usec to about 260 usec - too much to work at 115200 bps with the default fifo trigger level. >The solution is to use either a SCSI disk system, or support >busmastering IDE. The real problem is the crazy IRQ priorities of >the PC architeture. The IRQ priorities aren't a significant problem under FreeBSD or Linux. Both systems essentially ignore them. FreeBSD rotates the priorities to give IRQ3 highest priority, but this only makes a tiny difference. IRQ3 just gets noticed first if there are concurrent interrupts, and its handler will be preempted within 5 usec if one of the concurrent interrupt has a higher (BSD) priority. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803050410.PAA32045>