POWER9 System Firmware Debug Support Menu

 

A picture containing computer

Description automatically generated

 

I’ve written about the new POWER9 Secured OF environment before, when trying to obtain the WWPNs on a new P9 system here: http://gibsonnet.net/blog/cgaix/html/Displaying%20WWPN%20information%20on%20POWER9%20Systems.html

 

e.g. using the display_adapter_wwpn macro from the Secured OF prompt.

 

0 > display_adapter_wwpn

 

U78D4.ND1.ACH10F7-P1-C4-T1

PORT-WWN: 10000090fa8e3391

 

U78D4.ND1.ACH10F7-P1-C4-T2

PORT-WWN: 10000090fa8e3392

 

You may also be familiar with using the standard OF prompt to obtain other information relating to IO adapters i.e. firmware levels, MAC addresses, etc. Armin Schmidt wrote a great blog about this here: https://powercampus.de/en/wwpn-of-fc-ports-in-open-firmware/. Sadly, with FW940 and the Secure OF environment, many (all?) of these commands (e.g. “ls”, “.properties”, etc) no longer work.

 

0 > ls

Invalid command in Secured OF environment.

Type macro_help for list of valid commands.

 

There’s more information on the list of (limited but) supported macros (macro_help) that we can access from the Restricted OF prompt here: http://gibsonnet.net/aix/POWER_SYSTEMS_WIKI/html/Power%20Systems%20%20%20POWER9%20Firmware%20Secure%20Boot%20Partition%20Firmware%20Extensions%20on%20PowerVM.html

 

However, all is not lost! I recently learnt that there’s a special SMS menu option which can help further. From the SMS Main menu enter 99.  This will take you to a special debug menu.

 

IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM

 

          1 = SMS Menu                          5 = Default Boot List

          9 = Restricted Open Firmware Prompt   6 = Stored Boot List

 

PowerPC Firmware  Version FW940.10 (VL940_050)

SMS (c) Copyright IBM Corp. 2000,2020 All rights reserved.

-------------------------------------------------------------------------------

 

 DEBUG Support Menu

 

 1.   Display trace buffer

 2.   Display trace buffer for component

 3.   Display network trace buffer

 4.   Firmware build information

 5.   List device tree

 6.   Display device tree node properties

 7.   Dump device tree

 8.   Perform showprops

 9.   PCI utilities

10.   PFDS utilities

11.   RTAS utilities

12.   Toggle IOR Debug mode <Disabled>

 

Options 5, 6 and 8 should be the most helpful in most situations. 

 

For example, if I wanted to display the firmware level of an Ethernet adapter in my POWER9 system I could use the procedure below.

 

PowerPC Firmware

 Version FW940.10 (VM940_037)

 SMS (c) Copyright IBM Corp. 2000,2019 All rights reserved.

-------------------------------------------------------------------------------

 Main Menu

 1.   Select Language

 2.   Setup Remote IPL (Initial Program Load)

 3.   I/O Device Information

 4.   Select Console

 5.   Select Boot Options

 

 

 -------------------------------------------------------------------------------

 Navigation Keys:

 

                                             X = eXit System Management Services

 -------------------------------------------------------------------------------

 Type menu item number and press Enter or select Navigation key:99                        <<< Enter 99

 

PowerPC Firmware

  Version FW940.10 (VM940_037)

  SMS (c) Copyright IBM Corp. 2000,2019 All rights reserved.

 -------------------------------------------------------------------------------

  DEBUG Support Menu

 

  1.   Display trace buffer

  2.   Display trace buffer for component

  3.   Display network trace buffer

  4.   Firmware build information

  5.   List device tree

  6.   Display device tree node properties

  7.   Dump device tree

  8.   Perform showprops

  9.   PCI utilities

 10.   PFDS utilities

 11.   RTAS utilities

 12.   Toggle IOR Debug mode <Disabled>

 

  -------------------------------------------------------------------------------

  Navigation keys:

 

  ESC key = return to previous screen

  -------------------------------------------------------------------------------

  Type menu item number and press Enter or select Navigation key:

 

a) 5.   List device tree.

 

For example, checking the firmware level of an Ethernet adapter.

 

Type menu item number and press Enter or select Navigation key:5

 

000002096348: /

0000020a1ab8: /ibm,serial

0000020a3878: /chosen

0000020a3b38: /packages

...

000002264880: /pci@800000020000030

0000022bb960:   /ethernet@0

0000022cabf0:   /ethernet@0,1           <<< Ethernet adapter is 0000022cabf0

0000022d9e80:   /ethernet@0,2

0000022e9110:   /ethernet@0,3

0000022723f8: /pci@800000020000038

0000022f8568:   /fibre-channel@0

0000023153f8:     /fp

000002315f28:     /disk

000002317f78:     /tape

0000023197d8:   /fibre-channel@0,1

000002336658:     /fp

000002337188:     /disk

0000023391d8:     /tape

 

b) 6.   Display device tree node properties

 

Type menu item number and press Enter or select Navigation key:6

 

Node phandle: 0000022cabf0                                         <<< Enter adapter number from previous step (a) i.e. 0000022cabf0

ibm,loc-code            U78D4.ND1.RCH10F7-P1-C5-T2

vendor-id               000014e4

device-id               00001657

revision-id             00000001

class-code              00020000

ibm,pci-config-space-type

                        00000001

ibm,req#msi             00000008

ibm,req#msi-x           00000011

ibm,msi-ranges          00000023 00000001

min-grant               00000000

max-latency             00000000

subsystem-vendor-id     00001014

subsystem-id            00000420

devsel-speed            00000000

name                    ethernet

compatible              pciex14e4,1657.1014.420.1

                        pciex14e4,1657.1014.420

                        pciex1014,420

                        pciex14e4,1657.1

                        pciex14e4,1657

                        pciexclass,020000

                        pciexclass,000200

reg                     00010100 00000000 00000000  00000000 00000000

                        43010110 00000000 00000000  00000000 00010000

                        43010118 00000000 00000000  00000000 00010000

                        43010120 00000000 00000000  00000000 00010000

                        02010130 00000000 00000000  00000000 00040000

fcode-rom-offset        00010800

ibm,fw-fcode-validation 00000000

supported-network-types ethernet,auto,none,auto

max-frame-size          000005f2

address-bits            00000030

device_type             network

ibm,fw-adapter-name     PCIe2 4-port 1GbE Adapter

local-mac-address       40f2e95c 3275

mac-address             40f2e95c 3275

ibm,fw-revision-level   00000310                                                    <<<<< Firmware level.

assigned-addresses      83010110 00000000 80180000  00000000 00010000

                        83010118 00000000 80170000  00000000 00010000

                        83010120 00000000 80160000  00000000 00010000

                        82010130 00000000 80080000  00000000 00040000

ibm,my-drc-index        22010030

 

Here’s a list of known macros in the Secured OF environment (from macro_help).

 

0 > macro_help

>> BOOT_FROM_SEQ [ADDPARMS]

   where:

      [ADDPARMS] = additional parameters such as debug flags

                   (if not provided, boot from devices in boot-device list without debug)

 

>> DISPLAY_BOOTSEQ

 

>> SET_DEFAULT_BOOTSEQ

 

 

 

>> BOOT_FROM_DEVICE <DEVTYPE> <ADDRESS> [BOOTPARMS]

   where:

      DEVTYPE     = { #disk | #cd/dvd | #san | #network | #tape }

      ADDRESS     = location-code

      [BOOTPARMS] = specific to the device type

                    (see Restricted OF Prompt User Guide for examples)

 

>> DISPLAY_BOOT_DEVICES <DEVTYPE>

   where:

      DEVTYPE = { #disk | #cd/dvd | #san | #network | #tape | #all }

 

>> DISPLAY_MAC_ADDRESS <ADDRESS>

   where:

      ADDRESS = location-code

 

>> DISPLAY_NETWORK_PATHNAME <ADDRESS>

   where:

      ADDRESS = location-code

 

>> PING <ADDRESS> [PINGPARMS]

   where:

      ADDRESS     = location-code

      [PINGPARMS] = required and optional parameters

                    (see Restricted OF Prompt User Guide for examples)

 

>> DISPLAY_PCI_PROPS [ADDRESS]

   where:

      [ADDRESS] = location-code

                  (if not provided, all adapter PCI properties will be displayed)

 

>> DISPLAY_ADAPTER_WWPN [ADDRESS]

   where:

      [ADDRESS] = location-code

                  (if not provided, all adapter WWPNs will be displayed)

 

>> LUN_ATTACHED? <ADDRESS>

   where:

      ADDRESS = location-code

 

>> IS_RESTRICTED_PROMPT?

 

>> RESET_PARTITION

 

>> DISPLAY_NVRAM_VARS [VARNAME]

   where:

      [VARNAME] = variable-name

                  (if not provided, all NVRAM variables will be displayed)

 

>> SET_NVRAM_DEFAULTS

 

>> ENABLE_LANCER_DEBUG <ADDRESS>

   where:

      ADDRESS = location-code of the specific device function

 

>> ENABLE_SAILFISH_DEBUG

 

>> DISABLE_LANCER_DEBUG <ADDRESS>

   where:

      ADDRESS = location-code of the specific device function

 

>> DISABLE_SAILFISH_DEBUG

 

Usage:

   macro_name parm1 ... parmN

      <parm> = required

      [parm] = optional

 

 ok

0 >