Sun Enterprise 220R Server Service Manual

7.6 How to Use OpenBoot Diagnostics (OBDiag)

When you turn on the system power, OBDiag runs automatically if any of the following conditions apply:

In the event of an automatic system reset, POST diagnostics run under the following condition:

You can also run OBDiag in an interactive mode and select which tests you want to perform. The following procedure describes how to run OBDiag interactively from the system ok prompt.

7.6.1 What to Do


Note -

Perform this procedure with the power on and the keyswitch in the Power-On/Off position.


  1. With the keyswitch in the Power-On/Off position, press the Break key on your alphanumeric terminal keyboard, or enter the Stop-a sequence on a Sun keyboard.

    To enter the Stop-a sequence, press the Stop key and the a key simultaneously. The ok prompt is displayed.

  2. (Optional) Select a diagnostic level.

    Three different levels of diagnostic testing are available for OBDiag; see "7.7 How to Set the Diagnostic Level for POST and OBDiag".

  3. At the ok prompt type:


    ok setenv diag-switch? true
    diag-switch? = true

  4. At the ok prompt, type:


    ok obdiag
    

    The OBDiag menu is displayed.


    Note -

    The OBDiag menu is built dynamically each time you run the obdiag command. The exact number and order of menu items in the example might not match the menu items on your system.



     OBDiag Menu
    
      0 ..... PCI/Cheerio
      1 ..... EBUS DMA/TCR Registers
      2 ..... Ethernet
      3 ..... Keyboard
      4 ..... Mouse
      5 ..... Parallel Port
      6 ..... Serial Port A
      7 ..... Serial Port B
      8 ..... NVRAM
      9 ..... Audio
     10 ..... SCSI
     11 ..... All Above
     12 ..... Quit
     13 ..... Display this Menu
     14 ..... Toggle script-debug
     15 ..... Enable External Loopback Tests
     16 ..... Disable External Loopback Tests
    
    Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 
  5. At the OBDiag menu prompt, type 14 to select toggle script-debug.


    Note -

    Selecting toggle script-debug enables verbose test message displays.


  6. At the Enter prompt, type the appropriate test number.

7.6.2 OBDiag Tests

The OBDiag tests are described in the following sections:


Note -

The OBDiag Audio test is not available for this system.


7.6.3 PCI/Cheerio

The PCI/Cheerio test performs the following diagnostics.

Test 

Function 

vendor_ID_test

Verifies that the U2P ASIC vendor ID is 108e. 

device_ID_test

Verifies that the U2P ASIC device ID is 1000. 

mixmode_read

Verifies that the PCI configuration space is accessible as half-word bytes by reading the EBus2 vendor ID address. 

e2_class_test

Verifies the address class code. Address class codes include bridge device (0 x B, 0 x 6), other bridge device (0 x A and 0 x 80), and programmable interface (0 x 9 and 0 x 0). 

status_reg_walk1

Performs walk-one test on status register with mask 0 x 280 (U2P ASIC is accepting fast back-to-back transactions, DEVSEL timing is 0 x 1). 

line_size_walk1

Performs tests a through e. 

latency_walk1

Performs walk-one test on latency timer. 

line_walk1

Performs walk-one test on interrupt line. 

pin_test

Verifies that the interrupt pin is logic-level high (1) after reset. 

The following example shows the PCI/Cheerio diagnostic output message.


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 0
Test
vendor_ID_test
device_ID_test
mixmode_read
e2_class_test
status_reg_walk1
line_size_walk1
latency_walk1
line_walk1
pin_test
SUBTEST='pin_test'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 

7.6.4 EBus DMA/TCR Registers

The EBus DMA/TCR registers diagnostic performs the following tests.

Test 

Function 

DMA_reg_test

Performs a walking ones bit test for control status register, address register, and byte count register of each channel. Verifies that the control status register is set properly. 

DMA_func_test

Validates the DMA capabilities and FIFOs. Test is executed in a DMA diagnostic loopback mode. Initializes the data of transmitting memory with its address, performs a DMA read and write, and verifies that the data received is correct. Repeats for four channels.  

The following example shows the EBus DMA/TCR registers diagnostic output message.


Example 7-1


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 1

TEST='all_dma/ebus_test'
SUBTEST='dma_reg_test'
SUBTEST='dma_func_test'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.5 Ethernet

The Ethernet diagnostic performs the following tests.

Test 

Function 

my_channel_reset

Resets the Ethernet channel. 

hme_reg_test

Performs walk-one on the following registers set: global register 1, global register 2, bmac xif register, bmac tx register, and the mif register. 

MAC_internal_loopback_test

Performs Ethernet channel engine internal loopback. 

10_mb_xcvr_loopback_test

Enables the 10BASE-T data present at the transmit MII data inputs to be routed back to the receive MII data outputs. 

100_mb_phy_loopback_test

Enables MII transmit data to be routed to the MII receive data path. 

100_mb_twister_loopback_test

Forces the twisted-pair transceiver into loopback mode. 

The following example shows the Ethernet diagnostic output message.


Example 7-2


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 2

TEST='ethernet_test'
SUBTEST='my_channel_reset'
SUBTEST='hme_reg_test'
SUBTEST='global_reg1_test'
SUBTEST='global_reg2_test'
SUBTEST='bmac_xif_reg_test'
SUBTEST='bmac_tx_reg_test'
SUBTEST='mif_reg_test'
SUBTEST='mac_internal_loopback_test'
SUBTEST='10mb_xcvr_loopback_test'
SUBTEST='100mb_phy_loopback_test'
Enter (0-12 tests, 13 -Quit, 14 -Menu) ===>

7.6.6 Keyboard

The keyboard diagnostic consists of an external and an internal loopback. The external loopback requires a passive loopback connector. The internal loopback verifies the keyboard port by transmitting and receiving 128 characters.

The following example shows the keyboard diagnostic output message.


Example 7-3


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 3

TEST='keyboard_test'
SUBTEST='internal_loopback'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.7 Mouse

The mouse diagnostic performs a keyboard-to-mouse loopback.

The following example shows the mouse diagnostic output message.


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 4

TEST='mouse_test'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.8 Parallel Port

The parallel port diagnostic performs the following tests.

Test 

Function 

sio_passive_lb

Sets up the Super I/O configuration register to enable extended/compatible parallel port select, then does a write 0, walk one, write 0 x ff to the data register. It verifies the results by reading the status register. 

dma_read

Enables ECP mode and ECP DMA configuration, and FIFO test mode. Transfers 16 bytes of data from memory to the parallel port device and then verifies the data is in FIFO device. 

The following example shows the parallel port diagnostic output message.


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 5

TEST='parallel_port_test'
SUBTEST='dma_read'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.9 Serial Port A

The serial port A diagnostic invokes the uart_loopback test, which transmits and receives 128 characters and checks the transaction validity. The following baud rates are tested in asynchronous mode: 460800, 307200, 230400, 153600, 76800, 57600, 38400, 19200, 9600, 4800, 2400, and 800.

The following example shows the serial port A output message when serial port A is being used for the tip connection.


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 6

TEST='uarta_test'
`UART A in use as console - Test not run.'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

The following example shows the serial port A diagnostic output message.


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 7

TEST='uartb_test'
BAUDRATE='1200'
BAUDRATE='1800'
BAUDRATE='2400'
BAUDRATE='4800'
BAUDRATE='9600'
BAUDRATE='19200'
BAUDRATE='38400'
BAUDRATE='57600'
BAUDRATE='76800'
BAUDRATE='115200'
BAUDRATE='153600'
BAUDRATE='230400'
BAUDRATE='307200'
BAUDRATE='460800'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.10 Serial Port B

The serial port B diagnostic is identical to the serial port A diagnostic.

The following example shows the serial port B diagnostic output message.


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 7

TEST='uartb_test'
BAUDRATE='1200'
BAUDRATE='1800'
BAUDRATE='2400'
BAUDRATE='4800'
BAUDRATE='9600'
BAUDRATE='19200'
BAUDRATE='38400'
BAUDRATE='57600'
BAUDRATE='76800'
BAUDRATE='115200'
BAUDRATE='153600'
BAUDRATE='230400'
BAUDRATE='307200'
BAUDRATE='460800'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.11 NVRAM

The NVRAM diagnostic verifies the NVRAM operation by performing a write and read to the NVRAM.

The following example shows the NVRAM diagnostic output message.


Example 7-4


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 8

TEST='nvram_test'
SUBTEST='write/read_patterns'
SUBTEST='write/read_inverted_patterns'
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===>

7.6.12 Audio

The audio diagnostic is not included for this system.

7.6.13 SCSI

The SCSI diagnostic validates both the SCSI chip and the SCSI bus subsystem.

The following example shows the SCSI diagnostic output message.


Example 7-5


Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 10

TEST='selftest'
Enter (0-12 tests, 13 -Quit, 14 -Menu) ===>

7.6.14 All Above

The all above diagnostic validates the system.

The following example shows the all above diagnostic output message.


Note -

The all above diagnostic stalls if the tip line is installed on serial port A or serial port B.



Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 11

TEST='all_pci/cheerio_test'
SUBTEST='vendor_id_test'
SUBTEST='device_id_test'
SUBTEST='mixmode_read'
SUBTEST='e2_class_test'
SUBTEST='status_reg_walk1'
SUBTEST='line_size_walk1'
SUBTEST='latency_walk1'
SUBTEST='line_walk1'
SUBTEST='pin_test'

TEST='all_dma/ebus_test'
SUBTEST='dma_reg_test'
SUBTEST='dma_func_test'

TEST='ethernet_test'
SUBTEST='my_channel_reset'
SUBTEST='hme_reg_test'
SUBTEST='global_reg1_test'
SUBTEST='global_reg2_test'
SUBTEST='bmac_xif_reg_test'
SUBTEST='bmac_tx_reg_test'
SUBTEST='mif_reg_test'
SUBTEST='mac_internal_loopback_test'
SUBTEST='10mb_xcvr_loopback_test'
SUBTEST='100mb_phy_loopback_test'

TEST='keyboard_test'
SUBTEST='internal_loopback'

TEST='mouse_test'
SUBTEST='mouse_loopback'

###OBDIAG_MFG_START###
TEST='mouse_test'
STATUS='FAILED'
SUBTEST='mouse_loopback'
ERRORS='1 `
TTF='456 `
SPEED='450.04 MHz'
PASSES='1 `
MESSAGE='Error: Timeout receiving a character'

TEST='floppy_test'
SUBTEST='floppy_id0_read_test'

TEST='parallel_port_test'
SUBTEST='dma_read'

TEST='uarta_test'
`UART A in use as console - Test not run.'

TEST='uartb_test'
BAUDRATE='1200'
BAUDRATE='1800'
BAUDRATE='2400'
BAUDRATE='4800'
BAUDRATE='9600'
BAUDRATE='19200'
BAUDRATE='38400'
BAUDRATE='57600'
BAUDRATE='76800'
BAUDRATE='115200'
BAUDRATE='153600'
BAUDRATE='230400'
BAUDRATE='307200'
BAUDRATE='460800'

TEST='nvram_test'
SUBTEST='write/read_patterns'
SUBTEST='write/read_inverted_patterns'

TEST='audio_test'
SUBTEST='cs4231_test'
Codec_ID='8a'
Version_ID='a0'
SUBTEST='external_lpbk'
External Audio Test not run: Please set the mfg-mode to sys-ext.
###OBDIAG_MFG_START###
TEST='audio_test'
STATUS='FAILED'
SUBTEST='external_lpbk'
ERRORS='1 `
TTF='468 `
SPEED='450.04 MHz'
PASSES='1 `
MESSAGE='Error: internal_loopback TBD'

TEST='selftest'
Enter (0-12 tests, 13 -Quit, 14 -Menu) ===>