Subject: Lance and cache on 3100/76
To: None <port-vax@NetBSD.ORG>
From: Bertram Barth <bertram@ifib.uni-karlsruhe.de>
List: port-vax
Date: 03/23/1997 08:12:50
I'm resending this message from here since the message i sent from home
yesterday didn't show up. Sorry if you get both copies...

--------------------

Now that booting via mop is possible i'm once again fighting against
my VAXstation 3100 M76...

I get the Nboot: prompt, but when i try to go on, the machine stops
somewhere within the LANCE stuff in boot/if_le.c

>From the debug-messages to me it looks like anything goes alright
until CPU tries to access memory which was previously accessed by
the LANCE, ie. le_put() seems to work until the transmit-ring is
completed and the first buffer is to be used again, then it halts.
le_get() crashes the machine when trying to read the first buffer.

In both cases the crash happens not when accessing the buffer itself
but when checking the OWN flag in the bufdesc struct, ie. within
        if (rdesc[next_rdesc].bd_adrflg & BR_OWN)...
resp.
        if (tdesc[next_tdesc].bd_adrflg & BT_OWN)...
[ie. reading "rdesc[next_rdesc].bd_adrflg" is enough to cause a halt]

Thus with my limited knowledge i suspect a problem with caches and/or
parity after the LANCE has modified this OWN flag (PR_PCSTS always
displays a value of 0x02AA or 0x2A0 which IMHO indicates an error).
I think it could be a problem with LANCE using different/no parity
and/or with LANCE (not?) invalidating cache when doing DMA...

Does anybody have a solution to this problem?
Could some kind soul please give me some advice on how to correctly
enable/disable/invalidate cache(s)? And how to setup parity correctly?

Ciao,
	bertram