System firmware and FSP

Information about low level stuff: the POWER system firmware, the hypervisor and the Flexible Service Processor (FSP).

By reading this document, you acknowledge that I cannot be held liable for any damage coming from the use of the information listed below. If you don't accept it, please leave this page.

Trivia

  • Power Hypervisor - PHYP is "Based on iSeries (SLIC) hypervisor, enhanced for converged i/p design, provides VLAN, virtual I/O, sub-processor partitioning" - applies for POWER5++ [1]
  • "The POWER Hypervisor code is based on the iSeries PLIC code that is enhanced for use with the IBM eServer i5 hardware." [4]
  • PHYP consists of two parts: a non-blocking interrupt driven layer, called Platform Licensed Internal Code (PLIC), and a multitasking kernel, called Dispatchable PHYP. [2]
  • ==> PLIC performs time critical operations required for virtualization. It enforces, for example, the partitioned environment. [2]
  • ==> Dispatchable PHYP executes as a hidden LPAR and provides non-critical platform services. One of its main duties is to process messages from the HMC and services processor. ... Dispatchable PHYP is responsible for processing and maintaining configuration data on the platform. [2]
  • On AS/400: "Partitioning LIC, or PLIC, is the code that communicates with each partition and controls the hardware. PLIC is used to implement Logical Partition (LPAR) functions and to control bus and storage management functions for each partition." [3]
  • "The layers of code supporting Linux and AIX-5L consist of System Firmware and Run-Time Abstraction Services (RTAS)." [4]
  • ==> "System Firmware is composed of Low Level Firmware and Open Firmware. Low Level Firmware is code that performs server unique input/output (I/O) configurations such as high-speed link (HSL)-2/RIO-G loops and PCI-X bridges. Open Firmware contains the boot time drivers (for example, SCSI, SSA, Token Ring, and Ethernet), the boot manager, and the device drivers required to initialize the PCI adapters and attached devices." [4]
  • ==> "The Run-Time Abstraction Services consist of code that supplies platform dependent accesses and can be called from the operating system. The intent of this code is to minimize the need for an operating system to understand hardware unique details. These calls are passed to the POWER Hypervisor that handles all I/O interrupts." [4]
  • The hypervisor "Runs on CEC (main system) CPU and resides in CEC Memory" and is "Loaded into the CEC by the FSP on base system IPL" [6]
  • "On partitioned hardware, all partitions have a Virtual Service Processor (VSP), provided by the Hypervisor." [6] The PHYP itself has a hidden partition, number 0.

System Firmware updates

  • POWER6, POWER7 firmware is delivered in 'code streams' (separate firmware by platform MTM, for example: 01AM720_xxx_yyy for Power 770 and 780) [1]
  • Concurrent firmware activation requires a Hardware Management Console. [1]
  • HMC is required for firmware updates: POWER5: 590, 595 or 570 with Dual FSP; POWER6 560, 570, 575 and 595; POWER7 770, 780 and 795 [1]
  • By default, once an HMC is connected to a managed server, the firmware update policy is set as HMC managed. If you no longer have an HMC your only option is to set the system back to ‘Manufacturing Default Configuration' [1]
  • Resetting the managed system to a nonpartitioned configuration

Access the PHYP command interface

"You can gather additional debug information from a failing system by using the debug virtual server (DVS). The DVS enables communication with the server firmware and partition firmware. DVS allows a maximum of eight open connections. External interfaces such as the ASMI and service processor remote application can communicate with the server firmware and partition firmware through DVS. This communication is bidirectional. External interfaces can send a message to the server firmware and partition firmware through DVS. DVS uses the partition ID and session ID to distinguish between the server firmware and partition firmware. The range for both the partition ID and session ID is 0 to 255. Clients, such as the ASMI, interact with DVS using a TCP/IP socket. Port 30002 on the service processor is used for this communication." [5]

  • Log on to the ASMI as 'celogin' or 'celogin1'. The user 'admin' doesn't have the full ASMI menu.
  • Select "Debug Virtual TTY".
  • For partition ID, select 0 for PHYP (see below), session ID 0.
  • When the message "Operation completed successfully" appears, telnet from the HMC or another IP in the HMC private LAN to the service processor' s IP address, port 30002.
  • You should get to the phyp # prompt now.
  • See the referred IBM document [7] for details

Note: the port is only open for a certain amount of time. After that, you will be dropped with the message "Command Time expired Set time 1176079193, Current Time 1218914654"

FSP commands

These commands are not guaranteed to work. As you can see, some of them are not even there on a POWER6 system. I guess these are pretty much outdated now. I have found some of these notes on a random site without any reference.

Most commands have no --help or other flags. The 'registry' command is an exception, see below.

Please bear in mind that the use of these commands may lead to unexpected behavior, system crash/reboot and data loss, and irreversible damage to the system. If you just want to examine the config files or binaries, the only way I found to extract them from the FSP is to create a symlink into the lighttpd's served directory, then get the files via the Web server. The config files can be viewed with cat, for example.

[*] Note: Clear FSP errors (errl -p) and FIPS errors (fipsdump -i) before restarting

registry command

IBM FSP Registry Command 3.2
Usage: registry [flags] option [] []
options:
-r, --read : read
-w, --write : write
-s, --size : sizeof
-u, --udata : retrieve user data
-m, --mpoint : retrieve mount point
-l, --list : list registry keys
-h, --help : print this message
flags:
-H, --hex : print output in hexadecimal or
write as hexadecimal
-R, --raw : print output in raw form (no formatting)
-E, --echo : echo the passed with write option
-V, --verobose : display command processing error messages

PHYP commonly used commands

Note: To close a PHYP console (telnet) type in the following: ^] (as with regular vterms)

Please bear in mind that the use of these commands may lead to unexpected behavior, system crash/reboot and data loss, and irreversible damage to the system.

phyp # vsp
Running macro: vsp
Phyp VSP native macro version: 2.00
LPAR             IPL             IPL                  Sys IPL  System               Sys  Operating
Id    Name       Mode   Keylock  Reason    State      Action   Reference Code       Attn System
----- ---------- ------ -------- --------- ---------- -------- -------------------- ---- ----------
    0 PHYP       Temp   Normal   Normal    On         IPL                           Off  PHYP
    1 host0vio-1 Normal Normal   Normal    On         Hold                          Off  RPA
    2 somelpar01 Normal Normal   ?         Off        Hold                          Off  RPA
    3 somelpar02 Normal Normal   ?         Off        Hold                          Off  RPA
    4 host0vio-2 Normal Normal   Normal    On         Hold                          Off  RPA
    5 lpar01     Normal Normal   ?         Off        Hold                          Off  RPA
    6 lpar02     Normal Normal   Normal    On         Hold                          Off  RPA
phyp # spcninfo
Running macro: spcninfo
Rack    RRRRUU: 3C0000 Status: Active   Power: Complete  Download Status: Not Possible  Location: U78A0.001.AAABBB2
Cec     RRRRUU: 3C0001 Status: Active   Power: Complete  Download Status: Not Possible  Location: U78A0.001.AAABBB2
     Identify: [OFF] Config ID: 00E6 Limited Function: FALSE  PCI Backplane Serials: 1234567890ABCDE1
Rack    RRRRUU: 3C0300 Status: Active   Power: Complete  Download Status: Not Needed    Location: U7311.D20.123123A
Slave   RRRRUU: 3C0301 Status: Active   Power: Complete  Download Status: Not Possible  Location: U7311.D20.123123A
     Identify: [OFF] Config ID: 008C Limited Function: FALSE  PCI Backplane Serials: 1234567890ABCDE2
Rack    RRRRUU: 3C0200 Status: Active   Power: Complete  Download Status: Not Needed    Location: U5802.001.0000009
Slave   RRRRUU: 3C0201 Status: Active   Power: Complete  Download Status: Not Possible  Location: U5802.001.0000009
     Identify: [OFF] Config ID: 008E Limited Function: FALSE  PCI Backplane Serials: 1234567890ABCDE3

"Running macro:" is familiar from OS/400 STRSST.

Related acronyms

LIC: "Licensed Internal Code refers to the server firmware of the IBM eServer i5 models." ... "...contains code for the server processor (FSP), hypervisor (PHYP), partition firmware (PFW), and other low level components."

RPA: RS/6000 Platform Architecture

BPC: Bulk Power Controller, present only in the 59x/79x models

MTMS: Machine Type/Model/Serial

CFM: Concurrent Firmware Maintenance

MDC: Manufacturing Default Configuration - the initial single partition setup of the managed system as received from your service provider

LMB: logical memory block

VPA: virtual processor area, a small (one page) data structure shared between the hypervisor and the operating system. Its primary use is to communicate information between the two software layers.CSP: Converged/Central/Common Service Processor - the old style SP in legacy iSeries, or pSeries POWER4 and below.

FSP: Flexible Service Processor (capable of booting/running IBM i and AIX/Linux = RPA partitions), common expansion hardware, from POWER5 models

PESH (pesh): Product Engineering Shell

MSD: main store dump

PAPR: Power Architecture Platform Requirements

RTAS: Run-Time Abstraction Services, documented in PAPR, see power.org. The /rtas node in Open Firmware is the means of communication with Linux.

CEC: Computing Electronic Complex

References

[1] "HMC and Firmware Management for POWER5/6/7", Allyn Walsh, IBM, 2011

[2] "Retrofitting the IBM POWER Hypervisor to Support Mandatory Access Control", Enriquillo Valdez et al., IBM, 2007, http://acsac.org/2007/papers/153.pdf

[3] Redbook: AS/400 Disk Storage Topics and Tools. IBM, 2000. http://www.redbooks.ibm.com/redbooks/pdfs/sg245693.pdf

[4] Intro to HMC and Console Options for i5 Servers/V5R3 LPAR and HMC, IBM, 2004. ftp://ftp.networking.ibm.com/as400/support/techoverview/v5r3/lparhmc082004.pdf

[5] Debugging the virtual tty, http://pic.dhe.ibm.com/infocenter/powersys/v3r1m5/topic/iphby/debugvirtualtty.htm

[6] Power System i DLPAR Virtualization, IBM, 2009 http://www-935.ibm.com/services/kr/gts/html/file/track4_1.ppt

[7] Adding expansion units to a large configuration with SPCN firmware update control

United States Patent 8230077: Hypervisor-based facility for communicating between a hardware management console and a logical partition, http://www.freepatentsonline.com/8230077.html

KVM on POWER7 (PDF)

See also on this site

FSP shell - Power 740

FSP Shell - Power 770

ASMI menu structure

POWER7 firmware AM760, user celogin1

Power/Restart Control

Power On/Off System

Auto Power Restart

Immediate Power Off

System Reboot

Wake On LAN

System Service Aids

Error/Event Logs

Serial Port Snoop

System Dump

Service Processor Dump

Partition Dump

Serial Port Setup

Modem Configuration

Call-Home/Call-In Setup

Call-Home Test

Reset Service Processor

Factory Configuration

Service Processor Command Line

Deconfiguration Records

Resource Dump

Performance Dump

System Information

Vital Product Data

Persistent Storage

Power Control Network Trace

Previous Boot Progress Indicator

Progress Indicator History

Real-time Progress Indicator

Memory Serial Presence Detect Data

Firmware Maintenance History

Memory eRepair Data

System Configuration

System Name

Configure I/O Enclosures

Time Of Day

Firmware Update Policy

PCI Error Injection Policy

Monitoring

Interposer Plug Count

HSL Opticonnect Connections

I/O Adapter Enlarged Capacity

Hardware Management Consoles

Virtual I/O Connections

Virtual Ethernet Switches

Floating Point Unit Computation Test

Power Management Mode Setup

Acoustic Mode Control

PCIe Hardware Topology

Hardware Page Table Size

Estimated Corrosion Rates

Hardware Deconfiguration

Deconfiguration Policies

Field Core Override

Processor Deconfiguration

Memory Deconfiguration

Processing Unit Deconfiguration

Clear All Deconfiguration Errors

Program Vital Product Data

System Brand

System Keywords

System Enclosures

Service Indicators

System Attention Indicator

Enclosure Indicators

Indicators by Location code

Lamp Test

Network Services

Network Configuration

Network Access

Debug Virtual TTY

Performance Setup

Logical Memory Block Size

System Memory Page Setup

On Demand Utilities

CoD Order Information

CoD Activation

CoD Recovery

CoD Command

CoD Processor Information

CoD Memory Information

CoD VET Information

VET Capability Settings

Concurrent Maintenance

Control Panel

RIO/HSL Adapter Slot Reservation

Login Profile

Change Password

Retrieve Login Audits

Change Default Language

Update Installed Languages

Less important stuff (~noise)

FSP default static IP addresses (again)

POWER5: 192.168.2.147 and 192.168.3.147

POWER6, POWER7: 169.254.2.147 and 169.254.3.147

Note that these can be changed from ASMI, and if an HMC is used, a DHCP client will be started and picking up leases from the HMC.

System firmware, FSP and Linux versions

SF240: Linux 2.4.18-rc4, Busybox 0.60

EL350: Linux 2.6.16.27-0-fsp1, Busybox 1.1.0

All FSP commands

Commands available on fips240.

  • System firmware SF240_417
  • Linux 2.4.18-rc4
  • BusyBox v0.60.4FSP-GA2-2-3

NB. If you use the "Service Processor Command Line" function from the ASMI, be aware that stderr is swallowed by default. Use 'id 2>&1' for example.

Commands already 'known' are in the table above.

apor

asm

attnhandlr - "!! Attentions Enabled !!" - turns on attention LED. No options.

bdmp_gzip

bdmp_tar

bdmp_util

calldialer

callexec

ccmm

cecserver

comp.resolve

ctrmserver

cupdcmd

dumpsystem

disr_rsrl_complete

errlsrv

evennotifier

evensignal

fsh

fspinit

fspkillall

fsptelinit

fwhp

get_reset_error

hdat_prepare_startos

hdat_prepareos

hdat_startos

hdat_timeos

hdatstep

(this list is to be continued...)