Port-vax archive

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

Re: Race in MSCP (ra/rx) driver



>>> In simh, the initialization steps of the MSCP should be possible to
>>> have instantaneous.  No reason to emulate that part of the
>>> controller, is there?
>> Maybe.  There's comparably sloppy code out there in the init phase,
>> code that requires delays to work - see below.  [...]

This was the main point behind my posting.

>> My fix [to the bootblocks] has two parts.  One is that the code
>> never set up the Qbus mapping registers (see below for more on
>> that); the other was the race.
> The mapping registers are setup by ROM VMB as described in the docs,
> hence no need to do it again.

I suspected as much.  Searching the docs struck me as harder than just
resetting all the mapping registers, though.  Looking, now, I can see I
was wrong in thinking that; EK-KA630-UG-001 page 3-11 was easy to find,
and is quite clear that the Qbus map is set up the way that code needs.

I now think that I probably added that 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).

> Also, this code had a size constraint of boot block size, so not much
> error checking could be done.

True.  That was in my mind when I added the Qbus mapping code; I
checked afterward to make sure the result still fit where it had to.

> IIRC the init code comes from an assembler example code of UDA50 init
> I found somewhere (around 25 years ago).

And it seems to work just fine when running on real hardware talking to
real hardware, because the host reliably wins the race.  But the race
is still there.  Or, at least, it was:

> Note that boot/xxboot had become quite ugly around year 2000 so I
> rewrote it.   It's quite different today.

Yes, I discovered that, too, and it's why I didn't quote my patches to
bootxx.c in my first list mail on the subject.  I didn't find enough of
the relevant code to feel confident I could tell whether it had a
comparable race.  (Using the techniques that led me to find the race I
found would require setting up something current enough to build
-current's bootblocks, which collides with the reasons I don't run
current to begin with.)

/~\ 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