aboutsummaryrefslogtreecommitdiff
path: root/doc/opal-api/opal-quiesce-158.html
blob: 2083f7c8e413eafe28c3c6a0d49be44e8dbf12f6 (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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />

    <title>OPAL_QUIESCE &#8212; skiboot 25e28ea
 documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
    <link rel="stylesheet" type="text/css" href="../_static/classic.css" />
    
    <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
    <script src="../_static/jquery.js"></script>
    <script src="../_static/underscore.js"></script>
    <script src="../_static/doctools.js"></script>
    
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="OPAL Timed Power On and Delayed Power Off" href="opal-read-write-tpo-dpo-103-104-105.html" />
    <link rel="prev" title="OPAL_QUERY_CPU_STATUS" href="opal-query-cpu-status-42.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="opal-read-write-tpo-dpo-103-104-105.html" title="OPAL Timed Power On and Delayed Power Off"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="opal-query-cpu-status-42.html" title="OPAL_QUERY_CPU_STATUS"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../index.html">skiboot 25e28ea
 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">OPAL API Documentation</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">OPAL_QUIESCE</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <section id="opal-quiesce">
<span id="id1"></span><h1>OPAL_QUIESCE<a class="headerlink" href="#opal-quiesce" title="Permalink to this headline"></a></h1>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#define OPAL_QUIESCE                         158</span>

<span class="kt">int64_t</span><span class="w"> </span><span class="nf">opal_quiesce</span><span class="p">(</span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">quiesce_type</span><span class="p">,</span><span class="w"> </span><span class="kt">int32_t</span><span class="w"> </span><span class="n">cpu_target</span><span class="p">);</span><span class="w"></span>
</pre></div>
</div>
<p>The host OS can use <a class="reference internal" href="#opal-quiesce"><span class="std std-ref">OPAL_QUIESCE</span></a> to ensure CPUs under host control are not
executing OPAL. This is useful in crash or shutdown scenarios to try to
ensure that CPUs are not holding locks, and is intended to be used with
<a class="reference internal" href="opal-signal-system-reset-145.html#opal-signal-system-reset"><span class="std std-ref">OPAL_SIGNAL_SYSTEM_RESET</span></a>, for example.</p>
<section id="arguments">
<h2>Arguments<a class="headerlink" href="#arguments" title="Permalink to this headline"></a></h2>
<section id="quiesce-type">
<h3>quiesce_type<a class="headerlink" href="#quiesce-type" title="Permalink to this headline"></a></h3>
<dl class="simple">
<dt>QUIESCE_HOLD</dt><dd><p>Wait for all target(s) currently executing OPAL to
return to the host. Any new OPAL call that is made
will be held off until QUIESCE_RESUME.</p>
</dd>
<dt>QUIESCE_REJECT</dt><dd><p>Wait for all target(s) currently executing OPAL to
return to the host. Any new OPAL call that is made
will fail with OPAL_BUSY until QUIESCE_RESUME.</p>
</dd>
<dt>QUIESCE_LOCK_BREAK</dt><dd><p>After QUIESCE_HOLD or QUIESCE_REJECT is successful,
the CPU can call QUIESCE_LOCK_BREAK to skip all
locking in OPAL to give the best chance of making
progress in the crash/debug paths. The host should
ensure all other CPUs are stopped (e.g., with
OPAL_SIGNAL_SYSTEM_RESET) before this call is made, to
avoid concurrency.</p>
</dd>
<dt>QUIESCE_RESUME</dt><dd><p>Undo the effects of QUIESCE_HOLD/QUIESCE_REJECT and
QUIESCE_LOCK_BREAK calls.</p>
</dd>
<dt>QUIESCE_RESUME_FAST_REBOOT</dt><dd><p>As above, but also reset the tracking of OS calls
into firmware as part of fast reboot (secondaries
will never return to OS, but instead be released
into a new OS boot).</p>
</dd>
</dl>
</section>
<section id="target-cpu">
<h3>target_cpu<a class="headerlink" href="#target-cpu" title="Permalink to this headline"></a></h3>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">cpu_nr</span> <span class="pre">&gt;=</span> <span class="pre">0</span></code></dt><dd><p>The cpu server number of the target cpu to reset.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">-1</span></code></dt><dd><p>All cpus except the current one should be quiesced.</p>
</dd>
</dl>
</section>
</section>
<section id="returns">
<h2>Returns<a class="headerlink" href="#returns" title="Permalink to this headline"></a></h2>
<dl class="simple">
<dt><a class="reference internal" href="return-codes.html#opal-success"><span class="std std-ref">OPAL_SUCCESS</span></a></dt><dd><p>The quiesce call was successful.</p>
</dd>
<dt><a class="reference internal" href="return-codes.html#opal-partial"><span class="std std-ref">OPAL_PARTIAL</span></a></dt><dd><p>Some or all of the CPUs executing OPAL when the call was made did not
return to the host after a timeout of 1 second. This is a best effort
at quiescing OPAL, and QUIESCE_RESUME must be called to resume normal
firmware operation.</p>
</dd>
<dt><a class="reference internal" href="return-codes.html#opal-parameter"><span class="std std-ref">OPAL_PARAMETER</span></a></dt><dd><p>A parameter was incorrect.</p>
</dd>
<dt><a class="reference internal" href="return-codes.html#opal-busy"><span class="std std-ref">OPAL_BUSY</span></a></dt><dd><p>This CPU was not able to complete the operation, either because another
has concurrently started quiescing the system, or because it has not
successfully called QUIESCE_HOLD or QUIESCE_REJECT before attempting
QUIESCE_LOCK_BREAK or QUIESCE_RESUME.</p>
</dd>
</dl>
</section>
</section>


            <div class="clearer"></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="#">OPAL_QUIESCE</a><ul>
<li><a class="reference internal" href="#arguments">Arguments</a><ul>
<li><a class="reference internal" href="#quiesce-type">quiesce_type</a></li>
<li><a class="reference internal" href="#target-cpu">target_cpu</a></li>
</ul>
</li>
<li><a class="reference internal" href="#returns">Returns</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="opal-query-cpu-status-42.html"
                        title="previous chapter">OPAL_QUERY_CPU_STATUS</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="opal-read-write-tpo-dpo-103-104-105.html"
                        title="next chapter">OPAL Timed Power On and Delayed Power Off</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/opal-api/opal-quiesce-158.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</div>
<script>$('#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="opal-read-write-tpo-dpo-103-104-105.html" title="OPAL Timed Power On and Delayed Power Off"
             >next</a> |</li>
        <li class="right" >
          <a href="opal-query-cpu-status-42.html" title="OPAL_QUERY_CPU_STATUS"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../index.html">skiboot 25e28ea
 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="index.html" >OPAL API Documentation</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">OPAL_QUIESCE</a></li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2016-2017, IBM, others.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.3.2.
    </div>
  </body>
</html>