aboutsummaryrefslogtreecommitdiff
path: root/doc/mpipl.html
blob: 329ab2cf28a88c998e615c6e5cf15ba771c8cd7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MPIPL (aka FADUMP) Overview &#8212; skiboot 5133e1e
 documentation</title>
    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <script type="text/javascript" src="_static/language_data.js"></script>
    
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Virtual Accelerator Switchboard (VAS)" href="vas.html" />
    <link rel="prev" title="Power Management" href="power-management.html" /> 
  </head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="vas.html" title="Virtual Accelerator Switchboard (VAS)"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="power-management.html" title="Power Management"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">skiboot 5133e1e
 documentation</a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="mpipl-aka-fadump-overview">
<span id="mpipl"></span><h1>MPIPL (aka FADUMP) Overview<a class="headerlink" href="#mpipl-aka-fadump-overview" title="Permalink to this headline"></a></h1>
<p>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.</p>
<div class="section" id="registration">
<h2>Registration<a class="headerlink" href="#registration" title="Permalink to this headline"></a></h2>
<p>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
<a class="reference internal" href="opal-api/opal-mpipl-173-174.html#opal-api-mpipl"><span class="std std-ref">OPAL MPIPL APIs</span></a>).</p>
</div>
<div class="section" id="initiating-dump">
<h2>Initiating dump<a class="headerlink" href="#initiating-dump" title="Permalink to this headline"></a></h2>
<p>Whenever Linux crashes, it makes reboot2 OPAL call with type as MPIPL. (see
<a class="reference internal" href="opal-api/opal-cec-reboot-6-116.html#opal-api-cec-reboot"><span class="std std-ref">OPAL_CEC_REBOOT and OPAL_CEC_REBOOT2</span></a>). Depending on sevice processor type OPAL makes
appropriate call to initiate MPIPL. On FSP system we call <cite>attn</cite> instruction
(see <code class="docutils literal notranslate"><span class="pre">__trigger_attn()</span></code>) and on BMC system we call SBE <cite>S0 interrupt</cite>
(see <code class="docutils literal notranslate"><span class="pre">p9_sbe_terminate()</span></code>).</p>
</div>
<div class="section" id="dump-collection">
<h2>Dump collection<a class="headerlink" href="#dump-collection" title="Permalink to this headline"></a></h2>
<p>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.</p>
<p>SBE/Hostboot also does the requisite procedures to gather hardware register
states for all active threads at the time of the crash.</p>
</div>
<div class="section" id="mpipl-boot">
<h2>MPIPL boot<a class="headerlink" href="#mpipl-boot" title="Permalink to this headline"></a></h2>
<p>On MPIPL boot, OPAL adds device tree entry (<code class="docutils literal notranslate"><span class="pre">/ibm,opal/dump/mpipl-boot</span></code>)
to indicate its MPIPL boot. Kernel will use OPAL_MPIPL_QUERY_TAG API
(<a class="reference internal" href="opal-api/opal-mpipl-173-174.html#opal-api-mpipl"><span class="std std-ref">OPAL MPIPL APIs</span></a>) 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.</p>
</div>
<div class="section" id="device-tree">
<h2>Device tree<a class="headerlink" href="#device-tree" title="Permalink to this headline"></a></h2>
<p>We create new device tree node (<code class="docutils literal notranslate"><span class="pre">/ibm,opal/dump</span></code>) to pass dump details to Linux
kernel from OPAL (see <a class="reference internal" href="device-tree/ibm,opal/dump.html#device-tree-ibm-opal-dump"><span class="std std-ref">Dump (MPIPL) Device Tree Binding</span></a>).</p>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">MPIPL (aka FADUMP) Overview</a><ul>
<li><a class="reference internal" href="#registration">Registration</a></li>
<li><a class="reference internal" href="#initiating-dump">Initiating dump</a></li>
<li><a class="reference internal" href="#dump-collection">Dump collection</a></li>
<li><a class="reference internal" href="#mpipl-boot">MPIPL boot</a></li>
<li><a class="reference internal" href="#device-tree">Device tree</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="power-management.html"
                        title="previous chapter">Power Management</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="vas.html"
                        title="next chapter">Virtual Accelerator Switchboard (VAS)</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/mpipl.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="vas.html" title="Virtual Accelerator Switchboard (VAS)"
             >next</a> |</li>
        <li class="right" >
          <a href="power-management.html" title="Power Management"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">skiboot 5133e1e
 documentation</a> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2016-2017, IBM, others.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
    </div>
  </body>
</html>