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