You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2561 lines
112 KiB
XML
2561 lines
112 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright (c) 2016 OpenPOWER Foundation
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
-->
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
version="5.0"
|
|
xml:id="ch_environment">
|
|
|
|
<title>Environment</title>
|
|
|
|
<para>RTAS provides an interface definition between the OS and the firmware
|
|
provided by the platform. This chapter defines the calling conventions used
|
|
by both the OS and the platform’s RTAS firmware.</para>
|
|
<para>RTAS runs with instruction and data relocate as well as processing
|
|
exceptions disabled. To not interfere with the OS, RTAS may not cause any
|
|
exceptions, nor can it depend on any particular virtual memory
|
|
mappings.</para>
|
|
<para>All RTAS functions are invoked from the OS by calling the
|
|
<emphasis>rtas-call</emphasis> function. The address of this
|
|
function is obtained from OF when
|
|
RTAS is instantiated. See Requirement
|
|
<xref linkend="dbdoclet.50569332_37615" /> for more details. RTAS determines
|
|
what function to invoke based on the data passed into the
|
|
<emphasis>rtas-call</emphasis> function. This section describes the
|
|
mechanisms used to invoke the <emphasis>rtas-call</emphasis> function,
|
|
the machine state, register usage, resource
|
|
allocation, and the invocation requirements.</para>
|
|
<para>If the LPAR option is enabled, multiple partitions may exist, each
|
|
with its own OS instance. This requires some changes to the RTAS
|
|
environment. These changes are discussed in
|
|
<xref linkend="LoPAR.Virtualization" />.</para>
|
|
|
|
<section xml:id="sec_machine_state">
|
|
<title>Machine State</title>
|
|
<para>When RTAS functions are invoked, the calling processor shall have
|
|
address translations, floating point, and most other exceptions disabled
|
|
and it shall be running in privileged state.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must be called in “real
|
|
mode,” that is, all address translation must be disabled. Bits MSR<subscript>IR</subscript> and
|
|
MSR<subscript>DR</subscript> of the MSR register must be zero.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must be called in privileged mode, and
|
|
the MSR<subscript>PR</subscript> bit must be set to 0.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must be called with external
|
|
interrupts disabled, and the MSR<subscript>EE</subscript> bit must be set to 0.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must be called with trace disabled,
|
|
and the MSR<subscript>SE</subscript> and
|
|
MSR<subscript>BE</subscript> bits must be set to 0.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_30796">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must be
|
|
called with floating point disabled, and the
|
|
MSR<subscript>FE0</subscript>,
|
|
MSR<subscript>FE1</subscript>, and
|
|
MSR<subscript>FP</subscript> bits must be set to 0.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_20114">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-6.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must be called with the MSR<subscript>SF</subscript>,
|
|
(MSR<subscript>ISF</subscript>, and ASR<subscript>V</subscript>
|
|
bits if applicable on the specific processor) set
|
|
to match the mode used to instantiate RTAS (0 for
|
|
<emphasis role="bold"><literal>instantiate-rtas</literal></emphasis> or 1 for
|
|
<emphasis role="bold"><literal>instantiate-rtas-64</literal></emphasis>) and the
|
|
LE bit set to 0.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-7.</emphasis></term>
|
|
<listitem>
|
|
<para>With the exception of the MSR<subscript>DR</subscript> and
|
|
MSR<subscript>RI</subscript> bits, RTAS must not change the state of the
|
|
machine by modifying the MSR.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-8.</emphasis></term>
|
|
<listitem>
|
|
<para><emphasis>rtas-call</emphasis> is entered
|
|
in a non-recoverable mode, indicated by having the
|
|
MSR<subscript>RI</subscript> bit set equal to 0, then RTAS must not enter a
|
|
recoverable mode by setting the MSR<subscript>RI</subscript> bit to 1.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_machine_state"
|
|
xrefstyle="select: labelnumber nopage"/>-9.</emphasis></term>
|
|
<listitem>
|
|
<para>If called with MSR<subscript>RI</subscript> equal to 1,
|
|
then RTAS must protect its own
|
|
critical regions from recursion by setting the MSR<subscript>RI</subscript>
|
|
bit to 0 when in the critical regions.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para><emphasis role="bold">Software Implementation Notes:</emphasis></para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>If the MSR<subscript>ME</subscript> bit is left enabled, the OS’s exception
|
|
handler must be aware that RTAS might have been running and that various
|
|
processor registers might not be in the expected state for an interrupted
|
|
OS, which precludes recoverability but permit logging machine
|
|
checks.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>There are some provisions for recursive calls to RTAS error
|
|
handling functions. Therefore, RTAS should set the MSR<subscript>RI</subscript>
|
|
bit to 0 if SRR0/SRR1 or any other RTAS resource
|
|
is in a state where information could be lost and prohibit
|
|
recovery.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Requirement
|
|
<xref linkend="dbdoclet.50569332_20114" /> implies that RTAS must be able
|
|
to be instantiated in 64-bit mode on platforms that can support 64-bit
|
|
execution.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="sec_register_usage">
|
|
<title>Register Usage</title>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="dbdoclet.50569332_23742">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_register_usage"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>Except as
|
|
required by a specific function, registers SPRG2, R0, R3 through R12,
|
|
CTR, XER, LR, and fields CR2-CR4 of the CR, RTAS must preserve all OS
|
|
visible register state.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_76112">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_register_usage"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS must not modify the DEC and registers SPRG0, SPRG1, and SPRG3.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para><emphasis role="bold">Software Implementation Notes:</emphasis></para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>RTAS is entered in real mode
|
|
(with address translation turned off). In this mode, all data accesses
|
|
are assumed to be cached in copy back mode with memory coherence
|
|
required. Since these settings may not be appropriate for all accesses,
|
|
RTAS is free to transparently use the processor specific facilities
|
|
required to access platform hardware resources. The OS machine check
|
|
handler can only depend on those registers that are required to be
|
|
unchanged (see Requirement
|
|
<xref linkend="dbdoclet.50569332_23742" />).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>RTAS must not change the preserved registers, or must first save
|
|
them and restore the original contents before returning to the OS.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The SRR0-SRR1, LR, CTR, XER registers, as well as any
|
|
reservations made via the load and reserve instructions, need not be
|
|
preserved.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="dbdoclet.50569332_85757">
|
|
<title>RTAS Critical Regions</title>
|
|
|
|
<para>The OS, when using RTAS, is responsible for protecting RTAS and
|
|
devices used by RTAS from any simultaneous accesses that could corrupt
|
|
memory or device registers. Such corruption could be caused by
|
|
simultaneous execution of RTAS code, or by a device driver accessing a
|
|
control register that is also modified by RTAS. In a single processor
|
|
system, since the MSR<subscript>EE</subscript> bit is 0 when entering RTAS, a call to RTAS while
|
|
it is in execution is prevented except for the machine check handler.
|
|
This handler may need to call various RTAS services such as
|
|
<emphasis>check-exception</emphasis> or
|
|
<emphasis>system-reboot</emphasis> even if the error was detected while in
|
|
an RTAS service
|
|
<emphasis>.</emphasis></para>
|
|
<para>The OS and RTAS must co-exist on the same platform. RTAS must not
|
|
change device registers that are used by the OS, nor may the OS change
|
|
device registers on devices used by RTAS. With the advent of more and
|
|
more integration into common super parts, some of these registers may
|
|
physically reside on the same component. In this section, device implies
|
|
the collection of common registers that together perform a function. Each
|
|
device must be represented in the OF device tree.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="dbdoclet.50569332_37615">
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>Except as noted in Requirement
|
|
<xref linkend="dbdoclet.50569332_53788" /> and
|
|
<xref linkend="dbdoclet.50569332_46104" />, the OS must ensure that RTAS
|
|
is not called while RTAS is in execution and that RTAS is not
|
|
simultaneously called from different processors in a multi-processor
|
|
system.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>Any RTAS access to device or I/O registers
|
|
specified in this document must be made in such a way as to be
|
|
transparent to the OS.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_58412">
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>Any device that
|
|
is used to implement the RTAS abstracted services must have the property
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis> in the OF device tree.
|
|
However, if the device is only used by the
|
|
<emphasis>power-off,</emphasis> and
|
|
<emphasis>system-reboot</emphasis> calls, the property should not be set.
|
|
The
|
|
<emphasis>rtas-display-device</emphasis> must be marked with the property
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis> if it is a specialized
|
|
device only to be accessed via the RTAS
|
|
<emphasis>display-character</emphasis> call and not otherwise shared with
|
|
the OS</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Software Implementation Note:</emphasis>
|
|
<xref linkend="dbdoclet.50569332_79165" /> clarifies when a device should
|
|
be marked with the
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis> property, based on whether
|
|
it has any interaction with RTAS and/or the OS (with the exception of the
|
|
calls listed in Requirement
|
|
<xref linkend="dbdoclet.50569332_37615" />).</para>
|
|
|
|
<table frame="all" pgwide="1" xml:id="dbdoclet.50569332_79165">
|
|
<title>Use of
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis></title>
|
|
<tgroup cols="3">
|
|
<colspec colname="c1" colwidth="33*" />
|
|
<colspec colname="c2" colwidth="33*" />
|
|
<colspec colname="c3" colwidth="33*" />
|
|
<thead>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"> </emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Normal Device (1)</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">rtas-display-device</emphasis>
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<para>Only used by OS</para>
|
|
</entry>
|
|
<entry>
|
|
<para>not marked</para>
|
|
</entry>
|
|
<entry>
|
|
<para>N/A (2)</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Only used by RTAS</para>
|
|
</entry>
|
|
<entry>
|
|
<para>marked</para>
|
|
</entry>
|
|
<entry>
|
|
<para>marked</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>OS and RTAS shared</para>
|
|
</entry>
|
|
<entry>
|
|
<para>marked (3)</para>
|
|
</entry>
|
|
<entry>
|
|
<para>not marked (4)</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Virtual</para>
|
|
</entry>
|
|
<entry>
|
|
<para>N/A</para>
|
|
</entry>
|
|
<entry>
|
|
<para>N/A</para>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>A device which is not normally to be used by the OS must meet
|
|
one of the following rules.</para>
|
|
|
|
<orderedlist numeration="loweralpha">
|
|
<listitem>
|
|
<para>It must not be included in the OF device tree.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>It must be defined as a “reserved” device
|
|
node.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>It must be marked with the
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis> property in the OF device
|
|
tree.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>It is assumed that an
|
|
<emphasis>rtas-display-device</emphasis> is used by RTAS.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>It is assumed that there are no devices other than the
|
|
<emphasis>rtas-display-device</emphasis> which are used by both RTAS and
|
|
an “unaware” OS. To allow an aware OS to share a device with
|
|
RTAS, the device should be marked.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>It is assumed that the
|
|
<emphasis>rtas-display-device</emphasis> is used by both RTAS and the OS
|
|
(as coordinated by the OS via display-character) unless it is marked. See
|
|
also Requirement
|
|
<xref linkend="dbdoclet.50569332_54841" />.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>Platforms must be designed such that
|
|
accesses to devices that are marked
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis>
|
|
have no side effects on other registers in the system.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-5.</emphasis> </term>
|
|
<listitem>
|
|
<para>Any OS access to devices specified as
|
|
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis>
|
|
must be made in such a way as to be transparent to RTAS.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-6.</emphasis> </term>
|
|
<listitem>
|
|
<para>RTAS must not generate any exceptions (for
|
|
example, no alignment exceptions, page table walk exceptions,
|
|
etc.).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_53788">
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-7.</emphasis> </term>
|
|
<listitem>
|
|
<para>The OS machine check and soft reset handlers must be
|
|
able to call the RTAS services:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>nvram-fetch</emphasis> </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>nvram-store</emphasis> </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>check-exception</emphasis> </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>display-character</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>system-reboot</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>set-power-level(0,0)</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>power-off</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis role="bold">ibm,set-eeh-option</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis role="bold">ibm,set-slot-reset</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis role="bold">ibm,read-slot-reset-state2</emphasis></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_46104">
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_85757"
|
|
xrefstyle="select: labelnumber nopage"/>-8.</emphasis></term>
|
|
<listitem>
|
|
<para>The <emphasis>stop-self</emphasis>
|
|
service need only be serialized with calls to the
|
|
<emphasis>stop-self</emphasis>,
|
|
<emphasis>start-cpu</emphasis>, and
|
|
<emphasis>set-power-level</emphasis> services. The OS must be able to call
|
|
RTAS services on other processors while a processor is stopped or being
|
|
stopped.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para><emphasis role="bold">Software Implementation Notes:</emphasis></para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>While RTAS must not generate any exceptions, it is still
|
|
possible that a machine check interrupt may occur during the execution of
|
|
an RTAS function. In this case, the machine check handler may be entered
|
|
prior to the normal termination of the RTAS function.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>It is permissible for the OS exception handler to make an RTAS
|
|
call as long as Requirements
|
|
<xref linkend="dbdoclet.50569332_23742" /> and
|
|
<xref linkend="dbdoclet.50569332_37615" /> are met. In particular, it is
|
|
expected that the RTAS
|
|
<emphasis>check-exception</emphasis> is called from the OS exception
|
|
handler.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="sec_resource_allocation_and_use">
|
|
<title>Resource Allocation and Use</title>
|
|
<para>During execution, RTAS requires memory for both code and data. This
|
|
memory may be in RAM, in a private memory area only known by the system
|
|
firmware, or in memory allocated by the OS for RTAS use. RTAS should use
|
|
this memory for its stack and any state savings. This memory is
|
|
subsequently called the “RTAS private data area.”</para>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="dbdoclet.50569332_37664">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_resource_allocation_and_use"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>The OS must allocate
|
|
<emphasis role="bold"><literal>“rtas-size”</literal></emphasis>
|
|
bytes of contiguous real memory as RTAS
|
|
private
|
|
data area. This memory must be aligned on a 4096 byte boundary and may
|
|
not cross a 256 MB boundary.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_13131">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_resource_allocation_and_use"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>The RTAS private data area must not be accessed by the OS.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_resource_allocation_and_use"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>Except for the RTAS private data area, the
|
|
argument buffer, System Memory pointed to by any reference parameter in
|
|
the argument buffer, and any other System Memory areas explicitly
|
|
permitted in this chapter, RTAS must not modify any System Memory. RTAS
|
|
may, however, modify System Memory during error recovery provided that
|
|
such modifications are transparent to the OS.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_88538">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_resource_allocation_and_use"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS calls may
|
|
not sleep in any fashion nor busy wait for more than a very short period
|
|
of time, except for
|
|
<emphasis>power-off, ibm,power-off-ups, set-power-level</emphasis> (0,0),
|
|
<emphasis>system-reboot, ibm,update-flash-64-and-reboot, and
|
|
ibm,os-term</emphasis>.</para>
|
|
<para xml:id="dbdoclet.50569332_12814">
|
|
<emphasis role="bold">Software
|
|
Implementation Note:</emphasis> An RTAS call should take the same amount of time to
|
|
perform a service that it would take the OS to perform the same function.
|
|
A specific goal is that RTAS primitives should take less than a few tens
|
|
of microseconds.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_resource_allocation_and_use"
|
|
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
|
|
<listitem>
|
|
<para>For RTAS calls which do not allow the
|
|
<emphasis>Status</emphasis> of -2 (Busy), there may be “rare”
|
|
instances where an anomaly may occur and the call may take longer than a
|
|
“very short period of time.” In these cases, the call must
|
|
complete within 250 microseconds. Otherwise, a hardware error response
|
|
must be given.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="dbdoclet.50569332_16363">
|
|
<title>Instantiating RTAS</title>
|
|
<para>RTAS is instantiated by an explicit client interface service call
|
|
into OF. The OF device tree contains a property
|
|
(<emphasis role="bold"><literal>“rtas-size”</literal></emphasis>, under
|
|
the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node) which defines how much real memory RTAS
|
|
requires from the OS. The OS allocates
|
|
<emphasis role="bold"><literal>“rtas-size”</literal></emphasis>
|
|
bytes of real memory, and
|
|
then invokes the
|
|
<emphasis role="bold"><literal>instantiate-rtas</literal></emphasis> or
|
|
<emphasis role="bold"><literal>instantiate-rtas-64</literal></emphasis> method of the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node, passing the real address of the private
|
|
data area (or zero, if
|
|
<emphasis role="bold"><literal>“rtas-size”</literal></emphasis> is zero) as the
|
|
<emphasis>rtas-base-address</emphasis> input argument. Firmware binds RTAS
|
|
to that address, binds the addresses of devices that RTAS uses, performs
|
|
any RTAS initialization, and returns the address of the
|
|
<emphasis>rtas-call</emphasis>
|
|
function
|
|
that is appropriate.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_16363"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>The <emphasis role="bold"><literal>instantiate-rtas</literal></emphasis> or
|
|
<emphasis role="bold"><literal>instantiate-rtas-64</literal></emphasis>
|
|
OF method
|
|
must have the arguments specified in
|
|
<xref linkend="dbdoclet.50569332_14005" />.</para>
|
|
|
|
<table frame="all" pgwide="1" xml:id="dbdoclet.50569332_14005">
|
|
<title><emphasis role="bold"><literal>instantiate-rtas</literal></emphasis>
|
|
<emphasis role="bold"><literal>instantiate-rtas-64</literal></emphasis>
|
|
Argument Call Buffer</title>
|
|
<tgroup cols="3">
|
|
<colspec colname="c1" colwidth="1*" />
|
|
<colspec colname="c2" colwidth="2*" />
|
|
<colspec colname="c3" colwidth="4*" />
|
|
<thead>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Parameter Type</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Name</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Values</emphasis>
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<para>In</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis>rtas-base-address</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Real Address of RTAS area or zero, if
|
|
<emphasis role="bold"><literal>“rtas-size”</literal></emphasis> is zero</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Out</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis>rtas-call</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Real address used to invoke RTAS functions</para>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_16363"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>The RTAS code bound and initialized by the
|
|
<emphasis role="bold"><literal>instantiate-rtas</literal></emphasis> method on a 64-bit capable platform,
|
|
must be able to handle platform resources that are accessed using 64-bit
|
|
addresses.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="dbdoclet.50569332_39240">
|
|
<title>RTAS Device Tree Properties</title>
|
|
<para>The OF device tree contains a
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> device node that describes the implemented RTAS
|
|
features and the output device supported by RTAS. Within this device node
|
|
are properties that describe the RTAS functions implemented by the
|
|
firmware. For every implemented RTAS function, the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node contains an OF property whose name is the
|
|
same as the RTAS function. The value of this property is the token
|
|
argument passed into the
|
|
<emphasis>rtas-call</emphasis>
|
|
function
|
|
when making that specific RTAS call. Note that some
|
|
RTAS functions are optional and some are required. This is defined in
|
|
<xref linkend="dbdoclet.50569332_20008" />.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_39240"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>The OF device tree must contain a device
|
|
node named
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> which describes the RTAS implementation.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_39240"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>The <emphasis role="bold"><literal>/rtas</literal></emphasis> device node must have a property for each
|
|
implemented RTAS function in
|
|
<xref linkend="dbdoclet.50569332_20008" />. The value of this property is
|
|
a token that is passed into the
|
|
<emphasis>rtas-call</emphasis>
|
|
function to
|
|
indicate which RTAS function to invoke.</para>
|
|
<table frame="all" pgwide="1" xml:id="dbdoclet.50569332_20008">
|
|
<title>RTAS Tokens for Functions</title>
|
|
<tgroup cols="3">
|
|
<colspec colname="c1" colwidth="33*" />
|
|
<colspec colname="c2" colwidth="33*" />
|
|
<colspec colname="c3" colwidth="33*" />
|
|
<thead>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">RTAS property/function</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Required?</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Notes</emphasis>
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“nvram-fetch”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_96529" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Execution time proportional to amount of data</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“nvram-store”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_57392" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Execution time proportional to amount of data</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“get-time-of-day”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_88127" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“set-time-of-day”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_35194" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“set-time-for-power-on”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_13743" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“event-scan”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_24845" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“check-exception”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_71287" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“rtas-last-error”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_71223" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,platform-dump”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_98203" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>If the Platform Dump option is implemented</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,read-pci-config”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_59536" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="1">
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry morerows="1">
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,write-pci-config”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_54555" />
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“display-character”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_10053" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“set-indicator”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_32164" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Some specific indicators are required, and some are
|
|
optional</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“get-sensor-state”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_10754" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,set-system-parameter”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_31665" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,get-system-parameter”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_62190" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“set-power-level”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_45884" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="1">
|
|
<para>Required for DR operations (see
|
|
<xref linkend="LoPAR.Virtualization" />)</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“get-power-level”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_67298" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“power-off”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_79728" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para>Provided for platforms with software controlled power off
|
|
capability</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,power-off-ups”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_50770" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>If there may be a platform controlled UPS.</para>
|
|
</entry>
|
|
<entry>
|
|
<para>For power off control in a platform which may have power
|
|
backed up with an Uninterruptible Power Supply (UPS).</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“system-reboot”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_50284" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,update-flash-64-and-reboot”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_77103" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,manage-flash-image”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_81833" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,validate-flash-image”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_40640" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,activate-firmware”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_28163" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“stop-self”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_68497" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="2">
|
|
<para>See Note</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“start-cpu”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_39014" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“query-cpu-stopped-state”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_81575" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,os-term”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_42118" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,exti2c”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_19739" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,get-xive”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_48295" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="3">
|
|
<para>Required for the PowerPC External Interrupt option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,set-xive”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_13631" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,int-off”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_95487" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,int-on”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_61000" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,configure-connector”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="LoPAR.Virtualization" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for all DR options</para>
|
|
</entry>
|
|
<entry>
|
|
<para>See
|
|
<xref linkend="LoPAR.Virtualization" />.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,set-eeh-option”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_27269" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="1">
|
|
<para>Required for EEH option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,set-slot-reset”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_86249" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,read-slot-reset-state”</literal></emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Being replaced by</para>
|
|
<para>
|
|
<emphasis>ibm,read-slot-reset-state2</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>See
|
|
<xref linkend="dbdoclet.50569332_87326" />.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,read-slot-reset-state2”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_87326" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for all platforms</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,get-config-addr-info2”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_68098" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required on all platforms</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,slot-error-detail”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_43482" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the EEH option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,open-errinjct”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_22302" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="2">
|
|
<para>Required for ERRINJCT option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,errinjct”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_22302" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,close-errinjct”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_22302" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,nmi-register”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_12478" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="1">
|
|
<para>Required for FWNMI option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,nmi-interlock”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_12478" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,configure-bridge”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_65423" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the EEH option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,configure-pe”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_45262" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the EEH option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,get-indices”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="sec_get_indices_rtas_call" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Sometimes (see
|
|
<xref linkend="LoPAR.Error" />)</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,get-vpd”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_72964" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the Dynamic VPD option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,manage-storage-preservation”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_28221" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the Storage Preservation option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,get-dynamic-sensor-state”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_61055" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>See Requirement
|
|
<xref linkend="dbdoclet.50569332_54151" />.</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,set-dynamic-indicator”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_30542" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>See Requirement
|
|
<xref linkend="dbdoclet.50569332_58519" />.</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,change-msi”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_16274" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the MSI option. Required if any PCI Express
|
|
HB in the platform.</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,suspend-me”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_45918" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the Partition Suspension option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,update-nodes”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_84414" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the Update OF Tree option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,update-properties”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_40069" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the Update OF Tree option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,configure-kernel-dump”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_67111" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the Configure Platform Assisted Kernel Dump
|
|
option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,query-pe-dma-window”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_99826" />
|
|
</para>
|
|
</entry>
|
|
<entry morerows="2">
|
|
<para>Required for the Dynamic DMA Window (DDW) option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,create-pe-dma-window”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_49009" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,remove-pe-dma-window”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_60545" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“ibm,reset-pe-dma-windows”</literal></emphasis>
|
|
</para>
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_60545" />
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Required for the LoPAR version l of the Dynamic DMA
|
|
Window (DDW) option</para>
|
|
</entry>
|
|
<entry>
|
|
<para> </para>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
<para>
|
|
<emphasis role="bold">Note:</emphasis> These commands are required in SMP platforms if
|
|
dynamic reconfiguration is required of the processors. Similarly, a
|
|
degraded mode may need these, or similar commands in the case of
|
|
detection of excessive errors. In the case of a processor deconfigured by
|
|
dynamic reconfiguration or due to excessive errors, the returned
|
|
<emphasis>CPU_status</emphasis> from the
|
|
<emphasis>query-cpu-stopped-state</emphasis> RTAS call is 2 (The processor
|
|
thread is not in the RTAS stopped state) since the deconfigured processor
|
|
cannot be started.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_39240"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>The OF properties listed in
|
|
<xref linkend="dbdoclet.50569332_38140" /> must be in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> device tree node prior to booting the
|
|
OS.</para>
|
|
|
|
<table frame="all" pgwide="1" xml:id="dbdoclet.50569332_38140">
|
|
<title>OF Device Tree Properties</title>
|
|
<tgroup cols="2">
|
|
<colspec colname="c1" colwidth="50*" />
|
|
<colspec colname="c2" colwidth="50*" />
|
|
<thead>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">name</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">value</emphasis>
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“rtas-size”</literal></emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>integer size of RTAS private data area or zero if
|
|
allocation is not required</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“rtas-version”</literal></emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>An integer encoding of the RTAS interface version. This
|
|
document describes version 1.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“rtas-event-scan-rate”</literal></emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>The rate, in calls per minute, at which rtas-event-scan
|
|
should be called by the OS. See
|
|
<xref linkend="dbdoclet.50569332_24845" />.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“rtas-display-device”</literal></emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>The
|
|
<emphasis>phandle</emphasis> of the device node used by the RTAS
|
|
call,
|
|
<emphasis>display-character</emphasis>.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold"><literal>“rtas-error-log-max”</literal></emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>The maximum size of an extended error log.</para>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_39240"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>All RTAS functions listed as
|
|
“Required” in
|
|
<xref linkend="dbdoclet.50569332_20008" /> must be implemented in
|
|
RTAS.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_39240"
|
|
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
|
|
<listitem>
|
|
<para><emphasis role="bold">For the Symmetric Multiprocessor option:</emphasis> The
|
|
functions listed as “Required in SMP Platforms” in
|
|
<xref linkend="dbdoclet.50569332_20008" /> must be implemented in
|
|
RTAS.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para><emphasis role="bold">Software Implementation Notes:</emphasis></para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>It is permitted for RTAS not to implement those optional
|
|
functions that are not appropriate or not needed on a particular
|
|
platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vendors may introduce private RTAS calls of their own. If they
|
|
do, the property names should be of the form
|
|
<emphasis role="bold"><literal>“vendor,property”</literal></emphasis> where
|
|
<emphasis>vendor</emphasis> is a company name string as defined by OF.
|
|
Future versions of this architecture will not choose RTAS property names
|
|
that include a comma.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<section>
|
|
<title>RTAS Device Tree Properties for Indicators and
|
|
Sensors</title>
|
|
<para>Indicators and sensors may be static or dynamic. Each indicator or
|
|
sensor type is identified by its token; a number which is associated with
|
|
the functionality of the indicator or sensor. A specific indicator token
|
|
is static in a particular platform if the number of indicators of that
|
|
type do not change with Dynamic Reconfiguration (DR) operations, and
|
|
dynamic otherwise. Certain sensors and indicators associated with DR
|
|
<footnote xml:id="pgfId-1143860">
|
|
<para>DR indicators include isolation-state (9001), DR indicator
|
|
(9002), and allocation-state (9003). DR sensors include dr-entity-sense
|
|
(9003). DR indicators and sensors are required to be there based on the
|
|
DR entity being supported. Their indices are specified by the DR index
|
|
for the DR entity. See
|
|
<xref linkend="LoPAR.Virtualization" /> and
|
|
<xref linkend="LoPAR.Virtualization" /> for more information.</para>
|
|
</footnote>are static since they represent the base hardware, others are
|
|
dynamic coming and going with extensions to the base hardware. Indices
|
|
for DR indicators and sensors are obtained from the DRC index for the DRC
|
|
connector. Information about static non-DR indicators and sensors (like
|
|
indices and location codes) are specified in the OF device tree at boot
|
|
time and do not change. Information about non-DR dynamic indicators and
|
|
sensors, needs to be gathered via the
|
|
<emphasis>ibm,get-indices</emphasis> RTAS call (see
|
|
<xref linkend="sec_get_indices_rtas_call" />), and sensors, instead of
|
|
being represented in the device tree.</para>
|
|
<para>Indicators and sensors within a platform generally have location
|
|
codes associated with them. Location code information for static
|
|
indicators and sensors, except DR indicators and sensors, are placed in
|
|
the
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,indicator-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis> and
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,sensor-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
properties, respectively, in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node, where “<vendor>” is
|
|
defined in the column marked “<vendor>” in
|
|
<xref linkend="dbdoclet.50569332_32237" /> and
|
|
<xref linkend="dbdoclet.50569332_23534" />, respectively. Location code
|
|
information for dynamic indicators and sensors, except DR indicators and
|
|
sensors, for the most part come in via the
|
|
<emphasis>ibm,get-indices</emphasis> call.</para>
|
|
<para>Information (index, location code) about a particular indicator or
|
|
sensor token, except DR indicators and sensors, are in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node properties or are available via the
|
|
<emphasis>ibm,get-indices</emphasis> call, but not both. When indices are
|
|
provided via the
|
|
<emphasis role="bold"><literal>“rtas-sensors”</literal></emphasis> or
|
|
<emphasis role="bold"><literal>“rtas-indicators”</literal></emphasis> properties, it is
|
|
expected that there exists a sensor/indicator for each index between 0
|
|
and
|
|
<emphasis>maxindex</emphasis>. When indices are provided via the
|
|
<emphasis>ibm,get-indices</emphasis> call, the indices may not be
|
|
contiguous, and any of the indices between 0 and
|
|
<emphasis>maxindex</emphasis> may be missing.</para>
|
|
<para>The formats for location codes are defined in
|
|
<xref linkend="LoPAR.Platform" />. For indicators and sensors,
|
|
these location codes are for the location of the device being manipulated
|
|
or measured, not the location of the specific controller or sensor. The
|
|
location code for an abstracted indicator or sensor is a NULL
|
|
string.</para>
|
|
|
|
<section xml:id="sec_indicators">
|
|
<title>Indicators</title>
|
|
<para>For static indicators, except DR indicators, OF provides for paired
|
|
integers (
|
|
<emphasis>token maxindex</emphasis>) for each indicator token under the
|
|
property
|
|
<emphasis role="bold"><literal>“rtas-indicators”</literal></emphasis>
|
|
in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node. With this information, the OS can
|
|
determine which types of indicators, and the maximum number (
|
|
<emphasis>maxindex</emphasis>) of each type, that the platform
|
|
provides.</para>
|
|
<para>For static indicators, except DR indicators, the extension
|
|
property,
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,indicator-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
(see <xref linkend="LoPAR.DeviceTree" />), provides an array of strings
|
|
containing the FRU location codes associated with each indicator. See
|
|
<xref linkend="LoPAR.Platform" />. Here, “
|
|
<emphasis><vendor></emphasis>” corresponds to the
|
|
“<vendor>” column of
|
|
<emphasis>
|
|
<xref linkend="dbdoclet.50569332_32237" />
|
|
</emphasis> and “
|
|
<emphasis><token></emphasis>” corresponds to the token of the
|
|
|
|
<emphasis role="bold"><literal>“rtas-indicators”</literal></emphasis>
|
|
type.
|
|
The index of a specific indicator token is used to index into the array
|
|
up to
|
|
<emphasis>maxindex</emphasis>.</para>
|
|
<para>Indices and location codes for dynamic indicators are obtained via
|
|
the
|
|
<emphasis>ibm,get-indices</emphasis> RTAS call and do not appear in the
|
|
static properties in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node.</para>
|
|
<para>Indices for DR indicators 9001, 9002, and 9003 are obtained from
|
|
the DRC index for the DRC connector. See Requirement
|
|
<xref linkend="LoPAR.Virtualization" />.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="dbdoclet.50569332_74895">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_indicators"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>For all static
|
|
indicators, except DR indicators 9001, 9002, and 9003, OF must provide
|
|
the extension property,
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,indicator-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>,
|
|
in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node, unless the indicator is part of an
|
|
extension which has its own set of appropriate properties for the
|
|
indicator, where “
|
|
<emphasis><vendor></emphasis>” must be as defined in the
|
|
column labeled “<vendor>” in
|
|
<xref linkend="dbdoclet.50569332_32237" /> for the specific indicator
|
|
token value.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_indicators"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>For all static indicators for which
|
|
there is an associated
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,indicator-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
property and for which there is not a
|
|
physical realization, the location code string must be NULL.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_indicators"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>Indices and location codes for any
|
|
indicator token, except DR indicators 9001, 9002, and 9003, for which the
|
|
number of such indicators in the platform may change dynamically, must be
|
|
obtained via the
|
|
<emphasis>ibm,get-indices</emphasis> RTAS call and the indicator token
|
|
must not appear in the
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,indicator-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
or <emphasis role="bold"><literal>“rtas-indicators”</literal></emphasis> in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_indicators"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>The indicator token of 4 must not exist
|
|
in a platform when a Error Log (token 9006) is implemented.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="sec_sensors">
|
|
<title>Sensors</title>
|
|
<para>For static sensors, except DR sensors, OF currently provides for
|
|
paired integers (
|
|
<emphasis>token maxindex</emphasis>) for each sensor token under the
|
|
property
|
|
<emphasis role="bold"><literal>“rtas-sensors”</literal></emphasis>
|
|
in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node. With this information, the OS can
|
|
determine which types of sensors, and how many of each type, that the
|
|
platform provides.</para>
|
|
<para>For static sensors, except DR sensors, the extension property,
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,sensor-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
(see <xref linkend="LoPAR.DeviceTree" />), provides an array of strings
|
|
containing the FRU location codes associated with each sensor. See
|
|
<xref linkend="LoPAR.Platform" />. Here, “
|
|
<emphasis><vendor></emphasis>” corresponds to the
|
|
“<vendor>” column of
|
|
<emphasis>
|
|
<xref linkend="dbdoclet.50569332_23534" />
|
|
</emphasis> and “
|
|
<emphasis><token></emphasis>” corresponds to the token in the
|
|
|
|
<emphasis role="bold"><literal>“rtas-sensors”</literal></emphasis> property. The index of a
|
|
specific sensor is used to index into the array up to
|
|
<emphasis>maxindex</emphasis>.</para>
|
|
<para>Indices and location codes for dynamic sensors, except DR sensors,
|
|
are obtained via the
|
|
<emphasis>ibm,get-indices</emphasis> RTAS call and do not appear in the
|
|
static properties in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node.</para>
|
|
<para>Indices for DR sensors 9003 are obtained from the DRC index for the
|
|
DRC connector. See Requirement
|
|
<xref linkend="LoPAR.Virtualization" />.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="dbdoclet.50569332_29762">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_sensors"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>For all static
|
|
sensors, except DR sensor 9003, OF must provide the extension property,
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,sensor-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>, in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node, unless the sensor is part of an extension
|
|
which has its own set of appropriate properties for the sensor, where
|
|
“
|
|
<emphasis><vendor></emphasis>” must be as defined in the
|
|
column labeled “<vendor>” in
|
|
<xref linkend="dbdoclet.50569332_23534" /> for the specific sensor token
|
|
value.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_sensors"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>For all static sensors for which there
|
|
is an associated
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,sensor-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
property and for which there is not a
|
|
physical realization, the location code string must be NULL.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_sensors"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>Indices and location codes for any
|
|
sensor token, except DR sensor 9003, for which the number of such sensors
|
|
in the platform may change dynamically, must be obtained via the
|
|
<emphasis>ibm,get-indices</emphasis> RTAS call and the sensor token must
|
|
not appear in the
|
|
<emphasis role="bold"><literal>“</literal></emphasis><emphasis><literal><vendor></literal></emphasis><emphasis role="bold"><literal>,sensor-</literal></emphasis><emphasis><literal><token></literal></emphasis><emphasis role="bold"><literal>”</literal></emphasis>
|
|
or <emphasis role="bold"><literal>“rtas-sensors”</literal></emphasis> in the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_sensors"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>The following sensor tokens must not be
|
|
implemented if the number of them may be changed by a DR operation (that
|
|
is, they can only be used when static): 3, 9001, and 9002.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section xml:id="sec_calling_mech_convent">
|
|
<title>Calling Mechanism and Conventions</title>
|
|
<para>
|
|
RTAS is
|
|
called through a mechanism similar to the OF client interface service. An
|
|
argument buffer is constructed which describes the desired RTAS call.
|
|
This description includes an indication of the RTAS call that is being
|
|
invoked, the number and value of the input parameters, the number of
|
|
result values, and space for each of the result values.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>In order to make an RTAS call, the OS must
|
|
construct an argument call buffer aligned on an eight byte boundary in
|
|
physically contiguous real memory as described by
|
|
<xref linkend="dbdoclet.50569332_22280" />.</para>
|
|
|
|
<table frame="all" pgwide="1" xml:id="dbdoclet.50569332_22280">
|
|
<title>RTAS Argument Call Buffer</title>
|
|
<tgroup cols="2">
|
|
<colspec colname="c1" colwidth="50*" />
|
|
<colspec colname="c2" colwidth="50*" />
|
|
<thead>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Cell Number</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Use</emphasis>
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<para>1</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Token Specifying which RTAS Call</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>2</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Number of Input Parameters</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>3</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Number of Output Parameters</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>4</para>
|
|
</entry>
|
|
<entry>
|
|
<para>First Input Parameter</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>...</para>
|
|
</entry>
|
|
<entry>
|
|
<para></para>
|
|
<para>Other Input Parameters</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>4 + Number of Inputs -1</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Last Input Parameter</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>4 + Number of Inputs</para>
|
|
</entry>
|
|
<entry>
|
|
<para>First Output Parameter</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>...</para>
|
|
</entry>
|
|
<entry>
|
|
<para></para>
|
|
<para>Other Output Parameters</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>4 + Number of Inputs</para>
|
|
<para>+ Number of Outputs -1</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Last Output Parameter</para>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_29738">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
|
|
<listitem>
|
|
<para>If the system is
|
|
a 32-bit system, or if RTAS was instantiated by
|
|
<emphasis role="bold"><literal>instantiate-rtas</literal></emphasis>, then all
|
|
cells in
|
|
the RTAS argument buffer must be 32-bit sign extended values that are
|
|
aligned to 4 byte boundaries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="dbdoclet.50569332_38752">
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
|
|
<listitem>
|
|
<para>If the system is
|
|
a 64 bit system and if RTAS was instantiated by
|
|
<emphasis role="bold"><literal>instantiate-rtas-64</literal></emphasis>, then all
|
|
cells in the RTAS argument buffer must be 64-bit sign extended values
|
|
that are aligned to 8 byte boundaries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
|
|
<listitem>
|
|
<para>RTAS functions must be invoked by branching
|
|
to the
|
|
<emphasis>rtas-call</emphasis> address which is returned by the
|
|
|
|
<emphasis role="bold"><literal>instantiate-rtas</literal></emphasis>
|
|
or
|
|
|
|
<emphasis role="bold"><literal>instantiate-rtas-64</literal></emphasis>
|
|
OF method (see
|
|
<xref linkend="dbdoclet.50569332_14005" />).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
|
|
<listitem>
|
|
<para>Register R3 must contain the argument
|
|
buffer’s real address when
|
|
<emphasis>rtas-call</emphasis> is invoked.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-6.</emphasis></term>
|
|
<listitem>
|
|
<para>Register R4 must contain the real address
|
|
of the RTAS private data area when
|
|
<emphasis>rtas-call</emphasis> is invoked (see Requirement
|
|
<xref linkend="dbdoclet.50569332_37664" />).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">R1-<xref linkend="sec_calling_mech_convent"
|
|
xrefstyle="select: labelnumber nopage"/>-7.</emphasis></term>
|
|
<listitem>
|
|
<para>The Link Register must contain the return
|
|
address when
|
|
<emphasis>rtas-call</emphasis> is invoked.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para><emphasis role="bold">Software Implementation Notes:</emphasis> </para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>RTAS is not required to perform sanity checking of its input
|
|
parameters. Using invalid values for any parameter in an RTAS argument
|
|
buffer gives undefined results. However, when such checks are made, the
|
|
appropriate return code for invalid parameters is -3.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The token that specifies the RTAS call is obtained by looking up
|
|
the desired call from the
|
|
<emphasis role="bold"><literal>/rtas</literal></emphasis> node of the OF device tree.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The OS must be aware that the effective address range for RTAS
|
|
is 4 GB when instantiated in 32-bit mode and the OS should not pass RTAS
|
|
addresses or blocks of data which might fall outside of this
|
|
range.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</section>
|
|
|
|
<section xml:id="dbdoclet.50569332_16759">
|
|
<title>Return Codes</title>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="dbdoclet.50569332_94431">
|
|
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_16759"
|
|
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
|
|
<listitem>
|
|
<para>The first output
|
|
value of all the RTAS functions must be a
|
|
<emphasis>Status</emphasis> word which denotes the result of the call. The
|
|
|
|
<emphasis>Status</emphasis> word takes on one of the values in
|
|
<xref linkend="dbdoclet.50569332_10584" />. Non-negative values indicate
|
|
success.</para>
|
|
|
|
<table frame="all" pgwide="1" xml:id="dbdoclet.50569332_10584">
|
|
<title>RTAS
|
|
<emphasis>Status</emphasis> Word Values</title>
|
|
<tgroup cols="2">
|
|
<colspec colname="c1" colwidth="50*" />
|
|
<colspec colname="c2" colwidth="50*" />
|
|
<thead>
|
|
<row>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">Values</emphasis>
|
|
</para>
|
|
</entry>
|
|
<entry>
|
|
<para>
|
|
<emphasis role="bold">
|
|
<emphasis>Status</emphasis> Word Meanings</emphasis>
|
|
</para>
|
|
</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<para>0</para>
|
|
</entry>
|
|
<entry>
|
|
<para>RTAS function call succeeded.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>-1</para>
|
|
</entry>
|
|
<entry>
|
|
<para>RTAS function call encountered a hardware error.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>-2</para>
|
|
</entry>
|
|
<entry>
|
|
<para>A necessary hardware device was busy, and the requested
|
|
function could not be performed. The operation should be
|
|
retried at a later time.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>-3</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Parameter Error.</para>
|
|
<para>In some cases, specific parameter errors are enumerated.
|
|
However, other parameter errors may be reported using this
|
|
return code in addition to those enumerated.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>-7</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Unexpected state change.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>9000-9899</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Reserved for vendor specific success codes.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>990x</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Extended delay - where x is a number in the range of
|
|
0-5</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>-9000</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Multi-level isolation error (see
|
|
<xref linkend="LoPAR.Virtualization" />).</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>-9004 - (-9999)</para>
|
|
</entry>
|
|
<entry>
|
|
<para>Reserved for vendor specific error codes.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Additional Negative Numbers</para>
|
|
</entry>
|
|
<entry>
|
|
<para>An error was encountered. The meaning of this error is
|
|
specific to the RTAS function that was invoked.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Additional Positive Numbers</para>
|
|
</entry>
|
|
<entry>
|
|
<para>The function succeeded. The meaning of the
|
|
<emphasis>Status</emphasis> word is specific to the RTAS
|
|
function that was invoked.</para>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>
|
|
<xref linkend="dbdoclet.50569332_10584" /> indicates a summation of all
|
|
possible
|
|
<emphasis>Status</emphasis> word values. A given RTAS function cannot
|
|
yield all of the possible
|
|
<emphasis>Status</emphasis> words. For the specific
|
|
<emphasis>Status</emphasis> words which apply to a specific RTAS function,
|
|
see the semantics for that function.</para>
|
|
<para><emphasis role="bold">Software Implementation Notes:</emphasis></para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>A return code of -2 or 990x may either mean that the operation
|
|
was initiated but not completed, or may mean that the operation was not
|
|
initiated at all.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>When the extended delay (990x) is returned, it is suggested that
|
|
software delay for 10 raised to the x milliseconds, where x is the last
|
|
digit of the 990x return code, before calling the function again.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</section>
|
|
|
|
|
|
</section>
|