Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Race in MSCP (ra/rx) driver



> I now think that I probably added [the Qbus mapping code] before I
> realized the race below, the one that was the _real_ problem, was
> there, and never took it out.  I'll go remove it and test to make
> sure it really does work as well as the docs say it should (other
> things make me fully expect that it will).

Surprise.

That Qbus mapping code is necessary - or else something else has to
change, to move the rings.  It appears EK-KA630-UG-001 lies, or else
some other code is clearing most of the mapping registers.

I replaced my mapping code with code to read and compare.  Turns out,
they _are_ set up to map low memory, but only the first 64K of memory!
(The first 128 mapping registers are set up appropriately; above that,
they're all zero.)  And the bootblock's rings are a few tens of K above
the 1M mark (specifically, at 0x00105754), so of course they fail.

This is in sharp contrast to the text on page 3-11, which says it sets
it up "so that all unoccupied pages of the Q22-Bus are mapped to the
corresponding pages in the first 4Mbytes of local memory".  I suppose
everything past the first 64K could be "occupied", because it does not
define what it means for a page to be occupied, but at the very least
it's misleading.

I suppose it's conceivable that I have a bug in my emulator that
confuses the ROM code into loading only part of the Qbus map.  But I
can't imagine what could have that effect, and the rest of the ROM code
appears to run fine.  As does the NetBSD code I've run.

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index