Port-vax archive

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

Re: VAX RPB (Restart Parameter Block)



Kenn Humborg wrote:

> > There is not that much in the Manual about this:
> > 
> > "4.2.1 Restart
> > The restart opration searches system memory for a restart parameter block
> > (RPB). Tihs data structure is construced by the VQXELN operating system or
> > by the console program. If a valid RPB is found, the operating system is
> > restarted at an address specified in the RPB. An internal flag indicating
> > restart in progress is set to prevent repeated attempts to restart a
> > failing operating system. A system restart can occur as the result of a
> > processor halt."
> > 
> > We do have a system restart as result of a processor halt (..if I inserted
> > an __asm("halt)).
> 
> The RPB isn't what you need to be looking at.  You want the CPU
> to stop dead in its tracks on a HALT and drop to the console
> prompt, so that you can use the console E and D commands to 
> look at and modify memory.  If it's going off hunting for a 
> valid RPB, then it is in the process of booting, and the state
> of the machine has already been changed somewhat.
> 
> If I understand it correctly, the main design of the RPB is for
> powerfail recovery.  The assumption is that main memory will
> be preserved by a battery backup.  If the OS supports resuming
> from powerfail, it sets up an RPB with the restart address field
> pointing to the powerfail recovery code in the running OS.
> 
> On power-up, the console firmware looks for a valid RPB and jumps 
> to the restart address without modifying any memory.  The OS then
> has a chance to bring itself back to life.
> 
> Just before it jumps to the restart address, the firmware sets
> this restart-in-progress bit somewhere.  If this bit is set on the
> next restart, it doesn't jump to the RPB restart address and
> performs a normal boot.  (In the KA630 and KA650, this flag
> is stored in the "Console Mailbox", which is not part of RAM.
> Your CPU's hardware manual might tell you where it keeps this
> bit.)
> 
> You've mentioned that setting the console HALT options doesn't
> seem to work.  Could it be that the non-volatile memory used for
> storing it is failing, or has a dead battery?  When I rescued
> a KA650-based machine, I had to replace the batteries that
> powered the memory that stored the configuration data.  If you
> use the SET BOOT command to change the boot device, does this
> change persist across restarts/power-cycles?  Check with the 
> SHOW BOOT command.

I've already changed a small soldered in Lithium Cell, a 3,6V LTC-3PN-S2
against a socket for an CR2032, sine the original cell was empty and is
Unobtanium here in Europe.
The CR2032 has only 3V and I don't know if this is enough.
No, the entries don't persist a power-cycle, but there are 12 Dip Switches
too, thought the have something todo with the cold start behavior too..

In the Documentation the Console Mailbox is referenced, ans yes, I even
found its contents bitwise declared:

 7   6   5   4   3   2   1   0
TRG|RMT|HLT_SWX|RIP|BIP|HLT_ACT|

RIP is the Restart in Progress Flag, BIP is Bootstrap in Progress, the
HLT_SWX is the Halt Switch Field for the console action after a processor
halt what is exactly that what I wan't to know. HLT_ACT is for the Halt
Activity after the next halt

Even the Offset of 0x0 in the Scratch memory area is documented,
followinf this location comes a Byte for the Display/Console Existence, the
Boot Register, a reserved one, an SCR$A_RESTORE_CONSOLE word and an
SCR$A_SAVE_CONSOLE word.

The funny thing is again, that nowhere is to read where that Scratch Memory
Area is located.

One can read this:

4.8.1.2 System Scratch RAM
The rtVAX 300 system firmware acquires a number of pages of RAM memory at
power-on initialization. These Pages are marked "bad" in the memory bitmap
to prevent higher-level software from modifying their data
indiscriminately.
Table 4-6 lists the offsets in the scratch RAM to paramters and variables
of interrest to operating system or option ROM developers.

Maybe I can locate those cells, since Mouse dissassembled a part of the
console related routines of the ROM code and it seems to fiddle with a cell
that looks to be related to the console existence that is located in the
next byte.
I think it's quite possible that netbsd is initializing the memorya map
bits on its own and deletes all information in the bad marked area.

> 
> Another devious possibility might be to use the RPB mechanism...
> I don't know about your firmware (I believe Mouse has disassembled
> it?), but the KA650 ROM contains a full copy of an XDELTA-like
> debugger.  If your ROM does too, maybe you could create a valid
> RPB in RAM and point the restart address to the entrypoint of
> this debugger?  

The ROM wasn't disassembled completely, we only looked for the console
driver stuff.

> 
> The XDELTA manual is at
> http://h71000.www7.hp.com/doc/83final/4540/4540pro.html.
> 
> Hope this helps,
> Kenn
> 
> 

I'll have a look at it but I don't think that it is in the ROMs.
At least the string DELTA doesn't appear in the ROM Code.


..looked at the disassembled ROM code a this moment, the Display/Console
Existence cell is only referenced trogh a pointer in R11 and I don't know
his contents..
Is there a data structure that possibly contains the location of that CMBX
Cell at programm start?

Thanks,

Holm

-- 
      Technik Service u. Handel Tiffe, www.tsht.de, Holm Tiffe, 
     Freiberger Straße 42, 09600 Oberschöna, USt-Id: DE253710583
  www.tsht.de, info%tsht.de@localhost, Fax +49 3731 74200, Mobil: 0172 8790 741



Home | Main Index | Thread Index | Old Index