@ -1,285 +1,285 @@
<?xml version="1.0"?>
<?xml version="1.0"?>
<chapter xmlns="http://docbook.org/ns/docbook"
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xl="http://www.w3.org/1999/xlink"
xmlns:xl="http://www.w3.org/1999/xlink"
xml:id="dbdoclet.50569331_37856"
xml:id="dbdoclet.50569331_37856"
version="5.0"
version="5.0"
xml:lang="en">
xml:lang="en">
<title>Interrupt Controller</title>
<title>Interrupt Controller</title>
<para>This chapter specifies the requirements for the LoPAR interrupt
<para>This chapter specifies the requirements for the LoPAR interrupt
controller. Platforms may chose to virtualize the interrupt controller or to
controller. Platforms may chose to virtualize the interrupt controller or to
provide the PowerPC External Interrupt option. </para>
provide the PowerPC External Interrupt option. </para>
<section>
<section>
<title>Interrupt Controller Virtualization</title>
<title>Interrupt Controller Virtualization</title>
<para>Virtualization of the interrupt controller is done through the
<para>Virtualization of the interrupt controller is done through the
Interrupt Support hcalls. See <xref linkend="LoPAR.Virtualization"/>.</para>
Interrupt Support hcalls. See <xref linkend="dbdoclet.50569344_26787"/>.</para>
</section>
</section>
<section xml:id="dbdoclet.50569331_29157">
<section xml:id="dbdoclet.50569331_29157">
<title>PowerPC External Interrupt Option</title>
<title>PowerPC External Interrupt Option</title>
<para>The PowerPC External Interrupt option is based upon a subset of the
<para>The PowerPC External Interrupt option is based upon a subset of the
PowerPC External Interrupt Architecture. The PowerPC External Interrupt
PowerPC External Interrupt Architecture. The PowerPC External Interrupt
Architecture contains a register-level architectural definition of an interrupt
Architecture contains a register-level architectural definition of an interrupt
control structure. This architecture defines means for assigning properties
control structure. This architecture defines means for assigning properties
such as priority, destination, etc., to I/O and interprocessor interrupts, as
such as priority, destination, etc., to I/O and interprocessor interrupts, as
well as an interface for presenting them to processors. It supports both
well as an interface for presenting them to processors. It supports both
specific and distributed methods for interrupt delivery. See also
specific and distributed methods for interrupt delivery. See also
<!-- FIXME: xref linkend="error_section"/--><citetitle>A PowerPC External
<!-- FIXME: xref linkend="error_section"/--><citetitle>A PowerPC External
Interrupt</citetitle>.htm#38341.--></para>
Interrupt</citetitle>.htm#38341.--></para>
<para>In NUMA platform configurations, the interrupt controllers may be
<para>In NUMA platform configurations, the interrupt controllers may be
configured in disjoint domains. The firmware makes the server numbers visible
configured in disjoint domains. The firmware makes the server numbers visible
to any single OS image appear to come from a single space without duplication.
to any single OS image appear to come from a single space without duplication.
This may be done by appropriately initializing the interrupt presentation
This may be done by appropriately initializing the interrupt presentation
controllers or the firmware may translate the server numbers presented to it in
controllers or the firmware may translate the server numbers presented to it in
RTAS calls before entering them into the interrupt controller registers. The OS
RTAS calls before entering them into the interrupt controller registers. The OS
is made aware that certain interrupts are only served by certain servers by the
is made aware that certain interrupts are only served by certain servers by the
inclusion of the <emphasis role="bold"><literal>“ibm,interrupt-domain”</literal></emphasis>
inclusion of the <emphasis role="bold"><literal>“ibm,interrupt-domain”</literal></emphasis>
property in the interrupt controller nodes.</para>
property in the interrupt controller nodes.</para>
<section xml:id="sec_ext_int_opt_req">
<section xml:id="sec_ext_int_opt_req">
<title>PowerPC External Interrupt Option Requirements</title>
<title>PowerPC External Interrupt Option Requirements</title>
<para>The following are the requirements for the PowerPC External
<para>The following are the requirements for the PowerPC External
Interrupt option. Additional requirements and information relative to the MSI
Interrupt option. Additional requirements and information relative to the MSI
option, when implemented with this option, are listed in <xref
option, when implemented with this option, are listed in <xref
linkend="dbdoclet.50569331_33067"/>.</para>
linkend="dbdoclet.50569331_33067"/>.</para>
<variablelist>
<variablelist>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> Platforms must implement interrupt architectures
Interrupt option:</emphasis> Platforms must implement interrupt architectures
that are in register-level architectural compliance with
that are in register-level architectural compliance with
<!-- FIXME: <xref linkend="error_section"/ --><citetitle>A PowerPC External
<!-- FIXME: <xref linkend="error_section"/ --><citetitle>A PowerPC External
Interrupt</citetitle>. </para>
Interrupt</citetitle>. </para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform’s OF device tree must include
Interrupt option:</emphasis> The platform’s OF device tree must include
one or more PowerPC External Interrupt Presentation node(s), as children of the
one or more PowerPC External Interrupt Presentation node(s), as children of the
root node.</para>
root node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform’s OF device tree must include
Interrupt option:</emphasis> The platform’s OF device tree must include
an <emphasis role="bold"><literal>“ibm,ppc-interrupt-server#s”</literal></emphasis> and an
an <emphasis role="bold"><literal>“ibm,ppc-interrupt-server#s”</literal></emphasis> and an
<emphasis role="bold"><literal>“ibm,ppc-interrupt-gserver#s”</literal></emphasis> property as defined for
<emphasis role="bold"><literal>“ibm,ppc-interrupt-gserver#s”</literal></emphasis> property as defined for
each processor in the processor’s <emphasis role="bold"><literal>/cpus/cpu</literal></emphasis>
each processor in the processor’s <emphasis role="bold"><literal>/cpus/cpu</literal></emphasis>
node.</para>
node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The various
Interrupt option:</emphasis> The various
<emphasis role="bold"><literal>“ibm,ppc-interrupt-server#s”</literal></emphasis> property values seen by a
<emphasis role="bold"><literal>“ibm,ppc-interrupt-server#s”</literal></emphasis> property values seen by a
single OS image must be all unique.</para>
single OS image must be all unique.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> If an OS image sees multiple global interrupt
Interrupt option:</emphasis> If an OS image sees multiple global interrupt
server queues, the <emphasis role="bold"><literal>“ibm,ppc-interrupt-gserver#s”</literal></emphasis>
server queues, the <emphasis role="bold"><literal>“ibm,ppc-interrupt-gserver#s”</literal></emphasis>
properties associated with the various queues must have unique values. </para>
properties associated with the various queues must have unique values. </para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-6.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-6.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform’s OF device tree must include
Interrupt option:</emphasis> The platform’s OF device tree must include
a PowerPC External Interrupt Source Controller node, as defined for each Bus
a PowerPC External Interrupt Source Controller node, as defined for each Bus
Unit Controller (BUC) that can generate PowerPC External Interrupt Architecture
Unit Controller (BUC) that can generate PowerPC External Interrupt Architecture
interrupts, as a child of the platform’s root node.</para>
interrupts, as a child of the platform’s root node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-7.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-7.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform’s OF device tree must conform
Interrupt option:</emphasis> The platform’s OF device tree must conform
to the <emphasis><xref linkend="dbdoclet.50569387_40740"/></emphasis> and
to the <emphasis><xref linkend="dbdoclet.50569387_40740"/></emphasis> and
include the appropriate mapping and interrupt properties to allow the mapping
include the appropriate mapping and interrupt properties to allow the mapping
of all non-zero XISR values (<emphasis>interrupt#</emphasis>) to the
of all non-zero XISR values (<emphasis>interrupt#</emphasis>) to the
corresponding node generating the interrupt. </para>
corresponding node generating the interrupt. </para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-8.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-8.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The PowerPC External Interrupt Presentation
Interrupt option:</emphasis> The PowerPC External Interrupt Presentation
Controller node must not contain the
Controller node must not contain the
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis> property. </para>
<emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis> property. </para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-9.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-9.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The PowerPC External Interrupt Source Controller
Interrupt option:</emphasis> The PowerPC External Interrupt Source Controller
node must contain the <emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis>
node must contain the <emphasis role="bold"><literal>“used-by-rtas”</literal></emphasis>
property.</para>
property.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-10.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-10.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> If the interrupt hardware is configured such that,
Interrupt option:</emphasis> If the interrupt hardware is configured such that,
viewed from any given OS image, any interrupt source controller cannot direct
viewed from any given OS image, any interrupt source controller cannot direct
interrupts to any interrupt presentation controller, then the platform must
interrupts to any interrupt presentation controller, then the platform must
include the <emphasis role="bold"><literal>“ibm,interrupt-domain”</literal></emphasis> property
include the <emphasis role="bold"><literal>“ibm,interrupt-domain”</literal></emphasis> property
in all interrupt source and presentation controller nodes for that OS so that
in all interrupt source and presentation controller nodes for that OS so that
the OS can determine the servers that may be valid targets for any given
the OS can determine the servers that may be valid targets for any given
interrupt.</para>
interrupt.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-11.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-11.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> All interrupt controller registers must be
Interrupt option:</emphasis> All interrupt controller registers must be
accessed via Caching-Inhibited, Memory Coherence not required and Guarded
accessed via Caching-Inhibited, Memory Coherence not required and Guarded
Storage mapping.</para>
Storage mapping.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-12.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-12.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform must manage the Available Processor
Interrupt option:</emphasis> The platform must manage the Available Processor
Mask Register so that global interrupts (server number field of the eXternal
Mask Register so that global interrupts (server number field of the eXternal
Interrupt Vector Entry (XIVE) set to a value from
Interrupt Vector Entry (XIVE) set to a value from
<emphasis role="bold"><literal>“ibm,ppc-interrupt-gserver#s”</literal></emphasis>) are only sent to one
<emphasis role="bold"><literal>“ibm,ppc-interrupt-gserver#s”</literal></emphasis>) are only sent to one
of the active processors.</para>
of the active processors.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-13.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-13.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform must initialize the interrupt
Interrupt option:</emphasis> The platform must initialize the interrupt
priority in each XIVE to the least favored level (0xFF), enable any associated
priority in each XIVE to the least favored level (0xFF), enable any associated
IER bit for interrupt sources owned by the OS, and set the Current Processor
IER bit for interrupt sources owned by the OS, and set the Current Processor
Priority Register to the Most favored level (0x00) prior to the transfer of
Priority Register to the Most favored level (0x00) prior to the transfer of
control to the OS so that no interrupts are signaled to a processor until the
control to the OS so that no interrupts are signaled to a processor until the
OS has taken explicit action.</para>
OS has taken explicit action.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-14.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-14.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> Any implemented PowerPC External Interrupt
Interrupt option:</emphasis> Any implemented PowerPC External Interrupt
Architecture registers that are not reported in specific interrupt source or
Architecture registers that are not reported in specific interrupt source or
destination controller nodes (such as the APM register) must be included in the
destination controller nodes (such as the APM register) must be included in the
<emphasis role="bold"><literal>“reg”</literal></emphasis> property of the
<emphasis role="bold"><literal>“reg”</literal></emphasis> property of the
<emphasis>/reserved</emphasis> node.</para>
<emphasis>/reserved</emphasis> node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry xml:id="dbdoclet.50569331_84135">
<varlistentry xml:id="dbdoclet.50569331_84135">
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-15.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-15.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The interrupt source controller must prevent signalling new
Interrupt option:</emphasis> The interrupt source controller must prevent signalling new
interrupts when the XIVE interrupt priority field is set to the least favored
interrupts when the XIVE interrupt priority field is set to the least favored
level.</para>
level.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-16.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-16.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> Interrupt controllers that do not implement the
Interrupt option:</emphasis> Interrupt controllers that do not implement the
behavior of Requirement <xref linkend="dbdoclet.50569331_84135"/>, must provide
behavior of Requirement <xref linkend="dbdoclet.50569331_84135"/>, must provide
an Interrupt Enable Register (IER) which can be manipulated by RTAS, </para>
an Interrupt Enable Register (IER) which can be manipulated by RTAS, </para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-17.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-17.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> The platform must assign the Bus Unit Identifiers
Interrupt option:</emphasis> The platform must assign the Bus Unit Identifiers
(BUIDs) such that they form a compact address space. That is, while the first
(BUIDs) such that they form a compact address space. That is, while the first
BUID value is arbitrary, subsequent BUIDs should be contiguous.</para>
BUID value is arbitrary, subsequent BUIDs should be contiguous.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-18.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-18.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> Platforms implementing interrupt server number
Interrupt option:</emphasis> Platforms implementing interrupt server number
fields greater than 8 bits must include the
fields greater than 8 bits must include the
<emphasis role="bold"><literal>“ibm,interrupt-server#-size”</literal></emphasis> property in the interrupt
<emphasis role="bold"><literal>“ibm,interrupt-server#-size”</literal></emphasis> property in the interrupt
source controller node.</para>
source controller node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-19.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-19.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> Platforms implementing interrupt buid number
Interrupt option:</emphasis> Platforms implementing interrupt buid number
fields greater than 9 bits must include the
fields greater than 9 bits must include the
<emphasis role="bold"><literal>“ibm,interrupt-buid-size”</literal></emphasis> property in the interrupt
<emphasis role="bold"><literal>“ibm,interrupt-buid-size”</literal></emphasis> property in the interrupt
presentation controller node.</para>
presentation controller node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
<term><emphasis role="bold">R1-<xref linkend="sec_ext_int_opt_req"
xrefstyle="select: labelnumber nopage"/>-20.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-20.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the PowerPC External
<para><emphasis role="bold">For the PowerPC External
Interrupt option:</emphasis> Platforms must include the
Interrupt option:</emphasis> Platforms must include the
<emphasis role="bold"><literal>“ibm,interrupt-server-ranges”</literal></emphasis> property in the
<emphasis role="bold"><literal>“ibm,interrupt-server-ranges”</literal></emphasis> property in the
interrupt presentation controller node.</para>
interrupt presentation controller node.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
@ -289,42 +289,42 @@ xml:lang="en">
<section>
<section>
<title>PowerPC External Interrupt Option Properties</title>
<title>PowerPC External Interrupt Option Properties</title>
<para>See <xref linkend="LoPAR.DeviceTree"/> for property definitions.</para>
<para>See <xref linkend="dbdoclet.50569368_91814"/> for property definitions.</para>
</section>
</section>
<section xml:id="dbdoclet.50569331_33067">
<section xml:id="dbdoclet.50569331_33067">
<title>MSI Option</title>
<title>MSI Option</title>
<para>The Message Signaled Interrupt (MSI) or Enhanced MSI (MSI-X)
<para>The Message Signaled Interrupt (MSI) or Enhanced MSI (MSI-X)
capability of PCI IOAs in many cases allows for greater flexibility in
capability of PCI IOAs in many cases allows for greater flexibility in
assignment of external interrupts to IOA functions than the predecessor Level
assignment of external interrupts to IOA functions than the predecessor Level
Sensitive Interrupt (LSI) capability, and in some cases treats MSIs as a
Sensitive Interrupt (LSI) capability, and in some cases treats MSIs as a
resource pool that can be reassigned based on availability of MSIs and the need
resource pool that can be reassigned based on availability of MSIs and the need
of an IOA function for more interrupts than initially assigned. Platforms that
of an IOA function for more interrupts than initially assigned. Platforms that
implement the MSI option implement the <emphasis>ibm,change-msi</emphasis> and
implement the MSI option implement the <emphasis>ibm,change-msi</emphasis> and
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS calls. These RTAS
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS calls. These RTAS
calls manage interrupts in a platform that implements the MSI option. In
calls manage interrupts in a platform that implements the MSI option. In
particular, these calls assign additional MSI resources to an IOA function (as
particular, these calls assign additional MSI resources to an IOA function (as
defined by its PCI configuration address: <emphasis>PHB_Unit_ID_Hi,
defined by its PCI configuration address: <emphasis>PHB_Unit_ID_Hi,
PHB_Unit_ID_Low, and config_addr</emphasis>), when supported by the platform.
PHB_Unit_ID_Low, and config_addr</emphasis>), when supported by the platform.
See <xref linkend="LoPAR.RTAS"/> for more information on theses RTAS calls for
See <xref linkend="dbdoclet.50569332_61719"/> for more information on theses RTAS calls for
MSI management.</para>
MSI management.</para>
<para>This architecture will refer generically to the MSI and MSI-X
<para>This architecture will refer generically to the MSI and MSI-X
capabilities as simply “MSI,” except where differentiation is
capabilities as simply “MSI,” except where differentiation is
required. In this architecture, MSIs and LSIs are what the IOA function
required. In this architecture, MSIs and LSIs are what the IOA function
signals, and what the software sees for that signal is ultimately the LSI or
signals, and what the software sees for that signal is ultimately the LSI or
MSI <emphasis>source number</emphasis>. The interrupt source numbers returned
MSI <emphasis>source number</emphasis>. The interrupt source numbers returned
by the <emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call are
by the <emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call are
the numbers used to control the interrupt as in the <emphasis>ibm,get-xive</emphasis>,
the numbers used to control the interrupt as in the <emphasis>ibm,get-xive</emphasis>,
<emphasis>ibm,set-xive</emphasis>, <emphasis>ibm,int-on</emphasis>,
<emphasis>ibm,set-xive</emphasis>, <emphasis>ibm,int-on</emphasis>,
and <emphasis>ibm,int-off</emphasis> RTAS calls.</para>
and <emphasis>ibm,int-off</emphasis> RTAS calls.</para>
<para>PCI-X and PCI Express IOA functions that signal interrupts are
<para>PCI-X and PCI Express IOA functions that signal interrupts are
required by the PCI specifications to implement either the MSI or MSI-X
required by the PCI specifications to implement either the MSI or MSI-X
interrupt capabilities, or both. For PCI Express, it is expected that IOAs will
interrupt capabilities, or both. For PCI Express, it is expected that IOAs will
only support MSI or MSI-X (that is, no support for LSIs). When both MSI and
only support MSI or MSI-X (that is, no support for LSIs). When both MSI and
MSI-X are implemented by an IOA function, the MSI method will be configured by
MSI-X are implemented by an IOA function, the MSI method will be configured by
the platform, but may be overridden by the OS or device driver, via the
the platform, but may be overridden by the OS or device driver, via the
<emphasis>ibm,change-msi</emphasis> RTAS call, to be MSI-X or, if assigned by
<emphasis>ibm,change-msi</emphasis> RTAS call, to be MSI-X or, if assigned by
the firmware, to LSI (by removal of the MSIs assigned).
the firmware, to LSI (by removal of the MSIs assigned).
<xref linkend="dbdoclet.50569331_99447"/> summarizes the LSI and MSI support.</para>
<xref linkend="dbdoclet.50569331_99447"/> summarizes the LSI and MSI support.</para>
<table frame="all" pgwide="1" xml:id="dbdoclet.50569331_99447">
<table frame="all" pgwide="1" xml:id="dbdoclet.50569331_99447">
@ -366,9 +366,9 @@ xml:lang="en">
</entry>
</entry>
<entry morerows="1">
<entry morerows="1">
<para>
<para>
<emphasis role="bold">Initial interrupt assignment<footnote
<emphasis role="bold">Initial interrupt assignment<footnote
xml:id="pgfId-1012212"><para>Assignment means to allocate the platform
xml:id="pgfId-1012212"><para>Assignment means to allocate the platform
resources and to enable the interrupt in the IOA function’s
resources and to enable the interrupt in the IOA function’s
configuration space.</para></footnote></emphasis>
configuration space.</para></footnote></emphasis>
</para>
</para>
</entry>
</entry>
@ -406,8 +406,8 @@ xml:lang="en">
<para>LSI or MSI</para>
<para>LSI or MSI</para>
</entry>
</entry>
<entry>
<entry>
<para>LSI<footnote xml:id="pgfId-1001089"><para>If MSIs are to
<para>LSI<footnote xml:id="pgfId-1001089"><para>If MSIs are to
be supported, the device driver must enable via the
be supported, the device driver must enable via the
<emphasis>ibm,change-msi</emphasis> RTAS call.</para></footnote></para>
<emphasis>ibm,change-msi</emphasis> RTAS call.</para></footnote></para>
</entry>
</entry>
</row>
</row>
@ -416,7 +416,7 @@ xml:lang="en">
<para>PCI-X</para>
<para>PCI-X</para>
</entry>
</entry>
<entry>
<entry>
<para>Encouraged when interrupts are required, for backward
<para>Encouraged when interrupts are required, for backward
platform compatibility</para>
platform compatibility</para>
</entry>
</entry>
<entry>
<entry>
@ -432,8 +432,8 @@ xml:lang="en">
<para>LSI or MSI</para>
<para>LSI or MSI</para>
</entry>
</entry>
<entry>
<entry>
<para>LSI<footnote xml:id="pgfId-1001101"><para>If MSIs are to
<para>LSI<footnote xml:id="pgfId-1001101"><para>If MSIs are to
be supported, the device driver must enable via the
be supported, the device driver must enable via the
<emphasis>ibm,change-msi</emphasis> RTAS call.</para></footnote></para>
<emphasis>ibm,change-msi</emphasis> RTAS call.</para></footnote></para>
</entry>
</entry>
</row>
</row>
@ -458,11 +458,11 @@ xml:lang="en">
<para>MSI</para>
<para>MSI</para>
</entry>
</entry>
<entry>
<entry>
<para>MSI<footnote xml:id="pgfId-1012199"><para>MSI as an
<para>MSI<footnote xml:id="pgfId-1012199"><para>MSI as an
initial assignment means that one or more MSIs are reported as being available
initial assignment means that one or more MSIs are reported as being available
for the IOA function. In addition, LSIs may also be reported but not enabled,
for the IOA function. In addition, LSIs may also be reported but not enabled,
in which case if the device driver removes the assigned MSIs, the assigned LSI
in which case if the device driver removes the assigned MSIs, the assigned LSI
are enabled by the platform firmware in the IOA function’s configuration
are enabled by the platform firmware in the IOA function’s configuration
space.</para></footnote></para>
space.</para></footnote></para>
</entry>
</entry>
</row>
</row>
@ -473,24 +473,24 @@ xml:lang="en">
</entry>
</entry>
<entry>
<entry>
<para>LSI or not supported<footnote xml:id="pgfId-1001611">
<para>LSI or not supported<footnote xml:id="pgfId-1001611">
<para>If PCI Express IOA function does not support LSI,
<para>If PCI Express IOA function does not support LSI,
then this combination is not supported.</para></footnote></para>
then this combination is not supported.</para></footnote></para>
</entry>
</entry>
<entry>
<entry>
<para>LSI<footnote xml:id="pgfId-1001616">
<para>LSI<footnote xml:id="pgfId-1001616">
<para>If PCI Express
<para>If PCI Express
IOA function does not support LSI, then this combination is not
IOA function does not support LSI, then this combination is not
supported.</para></footnote> or MSI</para>
supported.</para></footnote> or MSI</para>
</entry>
</entry>
<entry>
<entry>
<para>LSI<footnote xml:id="pgfId-1001598">
<para>LSI<footnote xml:id="pgfId-1001598">
<para>If the PCI
<para>If the PCI
Express IOA function does not support LSI, then the platform will set the
Express IOA function does not support LSI, then the platform will set the
initial interrupt assignment to MSI, and if the device driver does not support
initial interrupt assignment to MSI, and if the device driver does not support
MSI, then the IOA function will not be configurable (that is, conversion from
MSI, then the IOA function will not be configurable (that is, conversion from
MSI to LSI through the bridge is not supported by this architecture). If LSI is
MSI to LSI through the bridge is not supported by this architecture). If LSI is
the initial assignment, then if MSIs are to be supported, device driver must
the initial assignment, then if MSIs are to be supported, device driver must
enable via the <emphasis>ibm,change-msi</emphasis> RTAS
enable via the <emphasis>ibm,change-msi</emphasis> RTAS
call.</para></footnote></para>
call.</para></footnote></para>
</entry>
</entry>
</row>
</row>
@ -498,191 +498,191 @@ xml:lang="en">
</tgroup>
</tgroup>
</table>
</table>
<para>The <emphasis>ibm,change-msi</emphasis> RTAS call is used to query
<para>The <emphasis>ibm,change-msi</emphasis> RTAS call is used to query
the initial number of MSIs assigned to a PCI configuration address and to
the initial number of MSIs assigned to a PCI configuration address and to
request a change in the number of MSIs assigned. The MSIs interrupt source
request a change in the number of MSIs assigned. The MSIs interrupt source
numbers assigned to an IOA function are returned via the
numbers assigned to an IOA function are returned via the
<emphasis>ibm,query-interrupt-source-number</emphasis>
<emphasis>ibm,query-interrupt-source-number</emphasis>
RTAS call. In addition, when the
RTAS call. In addition, when the
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call is
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call is
implemented, it may be used to query the LSI source numbers, also. The
implemented, it may be used to query the LSI source numbers, also. The
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call is called
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call is called
iteratively, once for each interrupt assigned to the IOA function. When an IOA
iteratively, once for each interrupt assigned to the IOA function. When an IOA
function receives an initial assignment of an LSI, the interrupt number for
function receives an initial assignment of an LSI, the interrupt number for
that LSI may also be obtained through the same OF device tree properties that
that LSI may also be obtained through the same OF device tree properties that
are used to report interrupt information when the
are used to report interrupt information when the
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call is not
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call is not
implemented.</para>
implemented.</para>
<variablelist>
<variablelist>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
<listitem>
<listitem>
<para>The platform must implement the MSI
<para>The platform must implement the MSI
option if the platform contains at least one PCI Express HB.</para>
option if the platform contains at least one PCI Express HB.</para>
<para><emphasis role="bold">Architecture and Software Note:</emphasis> The MSI
<para><emphasis role="bold">Architecture and Software Note:</emphasis> The MSI
option may also be implemented in the absence of any PCI Express HBs. In that
option may also be implemented in the absence of any PCI Express HBs. In that
case, the implementation of the MSI option is via the presence of the
case, the implementation of the MSI option is via the presence of the
implementation of the associated <emphasis>ibm,change-msi</emphasis> and
implementation of the associated <emphasis>ibm,change-msi</emphasis> and
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS calls.</para>
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS calls.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform must implement the PowerPC External Interrupt option.</para>
The platform must implement the PowerPC External Interrupt option.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-3.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform must implement the <emphasis>ibm,change-msi</emphasis>
The platform must implement the <emphasis>ibm,change-msi</emphasis>
and <emphasis>ibm,query-interrupt-source-number</emphasis> RTAS calls.</para>
and <emphasis>ibm,query-interrupt-source-number</emphasis> RTAS calls.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-4.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform must initially assign LSI or MSIs to IOA functions as
The platform must initially assign LSI or MSIs to IOA functions as
defined in <xref linkend="dbdoclet.50569331_99447"/> and must enable the
defined in <xref linkend="dbdoclet.50569331_99447"/> and must enable the
assigned interrupts in the IOA function’s configuration space (the
assigned interrupts in the IOA function’s configuration space (the
interrupts remains disabled at the PHB, and must be enabled by the device
interrupts remains disabled at the PHB, and must be enabled by the device
driver though the <emphasis>ibm,set-xive</emphasis> and
driver though the <emphasis>ibm,set-xive</emphasis> and
<emphasis>ibm,int-on</emphasis> RTAS calls.</para>
<emphasis>ibm,int-on</emphasis> RTAS calls.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry xml:id="dbdoclet.50569331_84312">
<varlistentry xml:id="dbdoclet.50569331_84312">
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-5.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform
The platform
must provide a minimum of one MSI per IOA function (that is per each unique PCI
must provide a minimum of one MSI per IOA function (that is per each unique PCI
configuration address, including the Function #) to be supported beneath the
configuration address, including the Function #) to be supported beneath the
interrupt source controller, and any given MSI and MSI source number must not
interrupt source controller, and any given MSI and MSI source number must not
be shared between functions or within one function (even within the same
be shared between functions or within one function (even within the same
PE).</para>
PE).</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry xml:id="dbdoclet.50569331_63544">
<varlistentry xml:id="dbdoclet.50569331_63544">
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-6.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-6.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform
The platform
must provide at least one MSI port (the address written by the MSI) per
must provide at least one MSI port (the address written by the MSI) per
Partitionable Endpoint (PE).</para>
Partitionable Endpoint (PE).</para>
<para><emphasis role="bold">Platform Implementation Note:</emphasis> Requirement
<para><emphasis role="bold">Platform Implementation Note:</emphasis> Requirement
<xref linkend="dbdoclet.50569331_84312"/> in conjunction with Requirement <xref
<xref linkend="dbdoclet.50569331_84312"/> in conjunction with Requirement <xref
linkend="dbdoclet.50569331_63544"/> may have certain ramifications on the
linkend="dbdoclet.50569331_63544"/> may have certain ramifications on the
design. Depending on the implementation, a unique MSI port per IOA function may
design. Depending on the implementation, a unique MSI port per IOA function may
be required, and not just a unique port per PE.</para>
be required, and not just a unique port per PE.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-7.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-7.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option with the
<para><emphasis role="bold">For the MSI option with the
LPAR option:</emphasis> The platform must prevent a PE from creating an
LPAR option:</emphasis> The platform must prevent a PE from creating an
interrupt to a partition other than those to which the PE is authorized by the
interrupt to a partition other than those to which the PE is authorized by the
platform to interrupt.</para>
platform to interrupt.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-8.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-8.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform must set the PCI configuration space MSI registers properly in an
The platform must set the PCI configuration space MSI registers properly in an
IOA at all the following times:</para>
IOA at all the following times:</para>
<orderedlist numeration="loweralpha">
<orderedlist numeration="loweralpha">
<listitem>
<listitem>
<para>Initial boot time</para>
<para>Initial boot time</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>During the <emphasis>ibm,configure-connector</emphasis> RTAS
<para>During the <emphasis>ibm,configure-connector</emphasis> RTAS
call</para>
call</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>During the <emphasis>ibm,change-msi</emphasis> or
<para>During the <emphasis>ibm,change-msi</emphasis> or
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call</para>
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call</para>
</listitem>
</listitem>
</orderedlist>
</orderedlist>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-9.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-9.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform must initialize any bridges necessary to appropriately route
The platform must initialize any bridges necessary to appropriately route
interrupts at all the following times:</para>
interrupts at all the following times:</para>
<orderedlist numeration="loweralpha">
<orderedlist numeration="loweralpha">
<listitem>
<listitem>
<para>At initial boot time</para>
<para>At initial boot time</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>During the <emphasis>ibm,configure-connector</emphasis> RTAS
<para>During the <emphasis>ibm,configure-connector</emphasis> RTAS
call</para>
call</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>During the <emphasis>ibm,configure-bridge</emphasis> RTAS
<para>During the <emphasis>ibm,configure-bridge</emphasis> RTAS
call</para>
call</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>During the <emphasis>ibm,change-msi</emphasis> or
<para>During the <emphasis>ibm,change-msi</emphasis> or
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call</para>
<emphasis>ibm,query-interrupt-source-number</emphasis> RTAS call</para>
</listitem>
</listitem>
</orderedlist>
</orderedlist>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-10.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-10.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform must provide the <emphasis role="bold"><literal>“ibm,req#msi”</literal></emphasis>
The platform must provide the <emphasis role="bold"><literal>“ibm,req#msi”</literal></emphasis>
property for any IOA function which is
property for any IOA function which is
requesting MSIs; at initial boot time and during the
requesting MSIs; at initial boot time and during the
<emphasis>ibm,configure-connector</emphasis> RTAS call.</para>
<emphasis>ibm,configure-connector</emphasis> RTAS call.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry xml:id="dbdoclet.50569331_62532">
<varlistentry xml:id="dbdoclet.50569331_62532">
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569331_33067"
xrefstyle="select: labelnumber nopage"/>-11.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-11.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the MSI option:</emphasis>
<para><emphasis role="bold">For the MSI option:</emphasis>
The platform
The platform
must remember and recover on error recovery any previously allocated and setup
must remember and recover on error recovery any previously allocated and setup
interrupt information in the platform-owned hardware.</para>
interrupt information in the platform-owned hardware.</para>
<para><emphasis role="bold">Software and Platform Implementation Note:</emphasis> In
<para><emphasis role="bold">Software and Platform Implementation Note:</emphasis> In
Requirement <xref linkend="dbdoclet.50569331_62532"/>, it is possible that some
Requirement <xref linkend="dbdoclet.50569331_62532"/>, it is possible that some
interrupts may be lost as part of the error recovery, and software should be
interrupts may be lost as part of the error recovery, and software should be
implemented to take into consideration that possibility.</para>
implemented to take into consideration that possibility.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
@ -693,30 +693,30 @@ xml:lang="en">
<section xml:id="sec_plat_rsvd_int_opt">
<section xml:id="sec_plat_rsvd_int_opt">
<title>Platform Reserved Interrupt Priority Level Option</title>
<title>Platform Reserved Interrupt Priority Level Option</title>
<para>The Platform Reserved Interrupt Priority Level option allows
<para>The Platform Reserved Interrupt Priority Level option allows
platforms to reserve interrupt priority levels for internal uses. When the
platforms to reserve interrupt priority levels for internal uses. When the
platform exercises this option, it notifies the client program via the OF
platform exercises this option, it notifies the client program via the OF
device tree <emphasis role="bold"><literal>“ibm,plat-res-int-priorities”</literal></emphasis>
device tree <emphasis role="bold"><literal>“ibm,plat-res-int-priorities”</literal></emphasis>
property of the <emphasis role="bold"><literal>root</literal></emphasis> node of the device tree.</para>
property of the <emphasis role="bold"><literal>root</literal></emphasis> node of the device tree.</para>
<variablelist>
<variablelist>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_plat_rsvd_int_opt"
<term><emphasis role="bold">R1-<xref linkend="sec_plat_rsvd_int_opt"
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the Platform Reserved
<para><emphasis role="bold">For the Platform Reserved
Interrupt Priority Level option: The platform must include
Interrupt Priority Level option: The platform must include
the</emphasis><emphasis role="bold"><literal>“ibm,plat-res-int-priorities”</literal></emphasis>
the</emphasis><emphasis role="bold"><literal>“ibm,plat-res-int-priorities”</literal></emphasis>
property in the <emphasis role="bold"><literal>root</literal></emphasis> node of the device tree.</para>
property in the <emphasis role="bold"><literal>root</literal></emphasis> node of the device tree.</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<varlistentry>
<term><emphasis role="bold">R1-<xref linkend="sec_plat_rsvd_int_opt"
<term><emphasis role="bold">R1-<xref linkend="sec_plat_rsvd_int_opt"
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
<listitem>
<listitem>
<para><emphasis role="bold">For the Platform Reserved
<para><emphasis role="bold">For the Platform Reserved
Interrupt Priority Level option:</emphasis> The platform must not reserve
Interrupt Priority Level option:</emphasis> The platform must not reserve
priority levels 0x00 through 0x07 and 0xFF for internal use. </para>
priority levels 0x00 through 0x07 and 0xFF for internal use. </para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>