Stopping copyout from doing 32-bit transfers

Stopping copyout from doing 32-bit transfers

Post by M J Dan » Fri, 24 Apr 1992 21:14:14



|> We're evaluating some Sbus to VME adaptors and accessing an A24/D16
|> VME card. Basically, we are squirting data in and out of VME through a
|> device driver using the copyin and copyout routines. It's running on a
|> Sparc 2 running the latest Sunos.
|>
|> However, for data transfers of any significant size, the copy routines
|> seem to use 32-bit transfers which our D16 VME card doesn't handle (we
|> get a bus error, correctly).
|>
|> Now this seems to me that uiomove is getting copyin and copyout to do
|> a byte-by-byte transfer which would suit us fine (we just can't handle
|> 32-bit ones). And, indeed, the sample drivers that came with the
|> adaptors use uiomove and seem to work just fine.
|>
|> Can anyone provide any more information on this?
I do not have SUN source but it is highly likely that they optimise copyouts
by writing byte by byte up until the first 32 bit boundary and then writing
4 byte long words as long as possible possible finishing with a couple of
single byte writes (this is what we do in our kernel which is NOT a SUN)

However looking up the doc on the onlu SBUS to VME converter that I have
(but haven't yet used) which is a BIT3 Model 466 you have to configure the
adaptor with on-voard jumpers to set both the data path size (D16 or D32)
and the address path size (A24 or A32). You didn't say which board(s)
you have but I imagine this would be a fairly standard way of doing it
(of course if you have a mix of D16 and D32 cards then you are stuck with D16
transfers).

Hope this helps,

        Mickey

PS. If (or rather) when you have things working as you wish I would be very
interested to hear about your experiences (ie choice of cards, attainable
transfer rates etc).