[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference mvblab::alphaserver_4100

Title:AlphaServer 4100
Moderator:MOVMON::DAVISS
Created:Tue Apr 16 1996
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:648
Total number of notes:3158

605.0. "...SOFTWARE PCI RESET??..." by VAXRIO::LEANDRO () Wed May 14 1997 20:11

    Hi Everyone,
    
    I have 2 systems AS4100, in different customers, and one gave me RESET
    when i was logged in. I thought was a normal shutdown from the operator
    - its OVMS 6.2-1h3 - but i was wrong. The system was going down itself.
    The system has an UPS, so no power outage possibility. Looking for any
    clue in console mode i did immediately ( no power off/on or inits ):
    
    >>> show power
    
    power, fans andt temp oks. but one new event for me:
    
    " The system was last reset via software PCI reset "
    
    This System has problem with onboard scsi bus ( DAT and CDROM ) but i
    have ordered an new B3040-AA ( BLITZ - Slow scsi and etc).
    
    When the system had reset i was doing check on HSZ50 with SET HOST/SCSI
    command. Any relation?
    
    The SRM version was 3.0-10 (from cd3.7), now is 4.8-7 last one i think.
    Firmware upgrade was the first thing i did.
    
    Today i've got a new call from another customer tha suffered the same 
    problem. SRM 3.0-10, UPS on, 2 X B3004-AA, CIPCA, DE500, and the same
    message after SHOW POWER command :
    
    THE SYSTEM WAS LAST RESET VIA SOFTWARE PCI RESET.
    
    Can anyone explain what this message does mean?
    
    Tks in advance,
    
    Leandro.
    MCS-Brasilia.
    
    
T.RTitleUserPersonal
Name
DateLines
605.1Are you sure the entire system was reset vs just the PCIs?MAY21::CUMMINSThu May 15 1997 10:5594
    This is expected behavior.
    
    There are four types of reset, over and above power on reset:
    
    1. Front-panel reset
    2. SRM console init command (system software reset)
    3. RCM (remote console monitor) reset
    4. Software PCI reset - does not reset entire system, but rather,
       only the PCI buses.
    
    The first three all produce the same behavior. The entire system is
    reset. The last does not reset the system bus (CPUs, memory, MCBus,
    etc.)
    
    The SRM console resets the PCIs any time the console must transition
    from a running operating system back to console in interrupt mode. When
    UNIX/VMS return to console via halt, shutdown, reboot, crash dump, the
    console runs polled (IPL 31) until a request is made that requires the
    console to switch back to interrupt mode (examples: SHOW DEVICE, BOOT
    or reboot, TEST command, etc.) The console resets all PCI buses before
    turning on interrupts in this case.
    
    Thus, if the system in question had been shutdown and then been booted,
    or rebooted or crashed, one would expect to see that the last reset was
    a software PCI reset.
    
    Note that UNIX and VMS never reset the PCI buses. Only console ever
    does so. This means the last reset you saw was from console switching
    to interrupt mode. Are you sure you saw the entire system reset versus
    just say the VGA being re-initialized and all I/O devices being reset?
    
    I've provided a code snippet for SHOW POWER's last reset status. It's
    likely more details than you care to know, but I figured I'd include it
    for completeness.
    
/*
 * Two versions of the Saddle's last reset register exist. Each has bugs in it,
 * at least in terms of agreement with the System Programmer's Manual (SPM).
 * Initial designs return the following values:
 * 
 *      4     3     2     1     0
 *   +-----+-----+-----+-----+-----+
 *   | RCM | OCP | CAP | SFT | XXX |
 *   +-----+-----+-----+-----+-----+
 *      0     0     0     1     X      Software reset (write to bit 0 above)
 *      0     0     1     0     X      Power-on or PCI reset
 *      0     1     0     0     X      OCP (front-panel) reset
 *      1     0     0     0     X      RCM reset
 * 
 * Newer designs (H03 Saddles and beyond) return the following values:
 * 
 *      0     0     0     1     X      Software reset (write to bit 0 above)
 *      0     0     0     0     X      Power-on
 *      0     1     0     X     X      OCP (front-panel) reset
 *      1     0     0     X     X      RCM reset
 * 
 * On H03 Saddles, once the software reset bit has been set, it remains set.
 * One therefore can read both software reset and OCP reset set if an OCP
 * reset. Same idea for RCM reset (software reset can be set). A power-on
 * clears all state, so the software reset bit is cleared (if previously set).
 * 
 * PCI reset has been lost in the H03 (and beyond) Saddle's last reset status.
 * On top of this, PCI resets clear last reset status of certain other bits -
 * with the exception that once software reset is set, it remains set.
 * 
 * Console accounts for both implementations by doing the following:
 *
 *   Following a PCI reset, set PCI_RESETTED flag. Clear flag during power-up.
 *   If (PCI_RESETTED=1, assume a PCI reset as the last reset)
 *   ELSE (read last reset register contents and decode as described below).
 *
 *   If 0000X, then new Saddle --> power-on reset.
 *   If 0010X, then old Saddle --> power-on reset.
 *   If 0001X, then either new or old Saddle --> software reset.
 *   If 010XX, then either new or old Saddle --> OCP reset.
 *   If 100XX, then either new or old Saddle --> RCM reset.
 *
 */
	sprintf(reset_string, "n unknown");
	reset_reason = inportb(0, RESET_CONTROL) & RESET_REASON_MASK;
	if ( pci_resetted == 1 ) {			/* Assume console PCI reset if pci_resetted; */
	    sprintf(reset_string, " software PCI");	/* UNIX/VMS don't ever reset PCI buses..     */
        } else {
	    if ( (reset_reason == 0) || ((reset_reason & MC_RESET) == MC_RESET) )
		sprintf(reset_string, " power-on");
	    if ( (reset_reason & SW_RESET) == SW_RESET )
		sprintf(reset_string, " system software");
	    reset_reason = reset_reason & ~SW_RESET;    /* Strip off SW_RESET bit; may be set from before.. */
	    if ( (reset_reason & OCP_RESET) == OCP_RESET )
		sprintf(reset_string, " front-panel (OCP)");
	    if ( (reset_reason & RCM_RESET) == RCM_RESET )
		sprintf(reset_string, " Remote Console");
	}
	printf("The system was last reset via a%s reset\n\n", reset_string);
605.2Thanks...VAXRIO::LEANDROThu May 15 1997 20:5810
    Hi Bill,
    
    Thanks. Very clear and interesting.
    
    By reading 413.* i think i've saw a CRASH with no clue in DECEVENT 2.2
    and or in my simple console troubleshooting - i just did SH POWER and
    nothing more advanced like in 413 note. i used to see dumps when
    systems crashes. Now i have more tools to find out the problem.
    
    Leandro.