Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!mimsy!chris
From: chris@mimsy.UUCP (Chris Torek)
Newsgroups: comp.unix.wizards
Subject: Re: BSD 4.2 minphys() < 64K
Message-ID: <4763@mimsy.UUCP>
Date: Tue, 16-Dec-86 15:10:11 EST
Article-I.D.: mimsy.4763
Posted: Tue Dec 16 15:10:11 1986
Date-Received: Wed, 17-Dec-86 19:26:58 EST
References: <376@wyszecki.munsell.UUCP> <1871@utah-gr.UUCP>
Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742
Lines: 24

In article <1871@utah-gr.UUCP>thomas@utah-gr.UUCP (Spencer W. Thomas) writes:
>physio() is often used to write to Unibus devices.  These devices have a
>limit of 64k bytes transferred (due to a 16 bit count register).  It has
>nothing to do with host memory size.

This is true (although many Unibus devices use a word count, not
a byte count, so should be able to handle 128kb ... maybe).  That
does not explain why all the massbuss code uses the same routine.

All the pages involved in physical I/O must be locked into core
during the transfer.  The MBA byte count register is 32 bits wide,
so it should be able to handle up to 4Gb, but physio itself would
probably hang or crash in pagein() if you tried to transfer more
in one shot than you have in free pages.  Rather than compute this
at runtime, it seems easier to have all the MBA drivers use the
same minphys routine.  At 63k-at-a-time, I get a raw data rate of
1.1Mb/s on a Vax 785 with Eagles on an Emulex SC788 (I am told it
is a 788; they all look alike to me).  This amounts to less than
20 interrupts per second---quite trivial; the *clock* interrupts
100 times per second.  Even with an XMD controller, at 2.2Mb/s,
that would be only 35 interrupts per second.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
UUCP:	seismo!mimsy!chris	ARPA/CSNet:	chris@mimsy.umd.edu