Skip site navigation (1)Skip section navigation (2)
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>