POWER9 System Firmware Debug Support Menu
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
>