48 lines
1.9 KiB
ReStructuredText
48 lines
1.9 KiB
ReStructuredText
.. _mpipl:
|
|
|
|
MPIPL (aka FADUMP) Overview
|
|
===========================
|
|
|
|
Memory Preserving Initial Program Load (MPIPL) is a Power feature where the
|
|
contents of memory are preserved while the system reboots after a failure.
|
|
This is accomplished by the firmware/OS publishing ranges of memory to be
|
|
preserved across boots.
|
|
|
|
Registration
|
|
------------
|
|
In the OPAL context, OPAL and host Linux communicate the memory ranges to be
|
|
preserved via source descriptor tables in the HDAT (MDST and MDDT table inside
|
|
SPIRAH). Host Linux can register/unregister using OPAL_MPIPL_UPDATE API (see
|
|
:ref:`opal-api-mpipl`).
|
|
|
|
Initiating dump
|
|
---------------
|
|
Whenever Linux crashes, it makes reboot2 OPAL call with type as MPIPL. (see
|
|
:ref:`opal-api-cec-reboot`). Depending on sevice processor type OPAL makes
|
|
appropriate call to initiate MPIPL. On FSP system we call `attn` instruction
|
|
(see ``__trigger_attn()``) and on BMC system we call SBE `S0 interrupt`
|
|
(see ``p9_sbe_terminate()``).
|
|
|
|
Dump collection
|
|
---------------
|
|
Hostboot then re-IPLs the machine taking care to copy over contents of the
|
|
source memory to a alternate memory locations as specified in descriptor table.
|
|
Hostboot publishes this information in the result descriptor tables (MDRT table
|
|
inside SPIRAH structure). The success/failure of the copy is indicated by a
|
|
results table.
|
|
|
|
SBE/Hostboot also does the requisite procedures to gather hardware register
|
|
states for all active threads at the time of the crash.
|
|
|
|
MPIPL boot
|
|
----------
|
|
On MPIPL boot, OPAL adds device tree entry (``/ibm,opal/dump/mpipl-boot``)
|
|
to indicate its MPIPL boot. Kernel will use OPAL_MPIPL_QUERY_TAG API
|
|
(:ref:`opal-api-mpipl`) to retrieve metadata tag. Kernel then uses its
|
|
existing logic (kdump/fadump) to write out a core dump of OPAL and Linux
|
|
kernel in a format that GDB and crash can understand.
|
|
|
|
Device tree
|
|
-----------
|
|
We create new device tree node (``/ibm,opal/dump``) to pass dump details to Linux
|
|
kernel from OPAL (see :ref:`device-tree/ibm,opal/dump`).
|