Problem with DMF32 under 4.2

stevens at hsi.UUCP stevens at hsi.UUCP
Sat Mar 10 00:39:27 AEST 1984


We are having a strange problem under 4.2 on a 750 with the
distributed DMF32 driver.  We have been running for months with no
problems with one DEC DMF32 (8-lines) and one Emulex CS21/F
(DMF32 emulation, 16 lines, looks like 2 DEC units) using character
I/O (they call it "silo mode", as opposed to DMA mode).
We then turned on the DMA mode, found two missing declarations which
were trivial to fix (we just looked at the 4.1 driver, which we had
used in DMA mode with only the DEC unit without any problems) and
thats when the problems started.

It looks like there is an overrun condition, mainly with
the lines on the Emulex unit, but there have been a few of these
conditions with the DEC unit too.  The problem is trivial to reproduce
and it appears to be worst when the line is used for raw i/o, such
as "vi" or a spreadsheet package that we use, but we have also seen the
condition with `standard' output from "ls" or "who".  I know that the
Emulex controller is supposed to be faster than the DEC unit since it
uses word transfers on the Unibus, instead of byte transfers, so its
not surprising that there might be a timing problem in the driver that
shows up more with the Emulex unit.  The problem shows up with more than
one terminal type (cit101e and heath19), so I don't think its a delay
problem with the termcap routines.

I spent a few hours looking at the driver and nothing jumped out at me,
but I have the following questions:

(1) Why is there an spl5() around the DMA code in the transmitter
    interrupt handler (it was not there in the 4.1 driver, its not there
    in the equivalent portion of the dh driver) ?  There is an
    spl5() in the dz driver's transmitter interrupt routine with a comment
    "prevent pdma interrupts".  Anyone know what this refers to ?
    Shouldn't the transmitter interrupt routine already be at level 5 ?

(2) We don't have the DMF32 programming guide from DEC (we've ordered it)
    but the Emulex manual (which should be the same for the async ports)
    shows that bit 12 (010000) is the "transmit DMA error flag", while
    /sys/vaxuba/dmfreg.h defines DMF_NXM as 020000 for what appears to
    be the same condition.  Anyone out there got the DEC manual to check this
    with ?  (I doubt that we are getting DMA errors from the Unibus, but
    I'd just like to be sure.)

Any suggestions or pointers would be appreciated.  Thanks.

	Richard Stevens
	Health Systems International, New Haven, CT
	{ decvax | hao | seismo | sdcsvax } ! kpno ! hsi ! stevens
                                             ihnp4 ! hsi ! stevens



More information about the Comp.unix.wizards mailing list