<?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="dbdoclet.50569332_16852">
         
  <title>Error and Event Reporting</title>
  
  <para>The error and event reporting RTAS calls are designed to provide an 
  abstract interface into hardware registers in the system that may contain 
  correctable or non-correctable errors and to provide an abstract interface 
  to certain platform events that may be of interest to the OS. Such errors 
  and events may be detected either by a periodic scan or by an exception trap.
  </para>
  
  <para>These functions are not intended to replace the normal error handling 
  in the OS. Rather, they enhance the OS&#8217;s abilities by providing an 
  abstract interface to check for, report, and recover from errors or events 
  on the platform that are not necessarily known to the OS. </para>
  
  <para>The OS uses the error and event RTAS calls in two distinct ways:</para>
  
  <orderedlist>
    <listitem>
  
      <para>Periodically, the OS calls <emphasis> event-scan</emphasis>
      <anchor xml:id="dbdoclet.50569332_marker-7330" xreflabel="event-scan"/> to have 
      the system firmware check for any errors or events that have occurred. </para>

    </listitem>
    <listitem>
        
      <para>Whenever the OS receives an interrupt or exception that it cannot 
      fully process, it calls <emphasis> check-exception.</emphasis></para>
      
    </listitem>
  </orderedlist>
  
  <para>The first case covers all errors and events that do not signal their 
  occurrence with an interrupt or exception. The second case covers those 
  errors and events that do signal with an interrupt or exception. It is 
  platform dependent whether any specific error or event causes an interrupt 
  on that platform.</para>
  
  <variablelist>
  
  	<varlistentry>
  		<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_16852" 
  		xrefstyle="select: labelnumber nopage"/>-1.</emphasis></term>
  			<listitem>
			    <para>RTAS must return the event generated by a 
			    particular interrupt or event source by either 
 			  	<emphasis> check-exception</emphasis> or <emphasis> event-scan</emphasis>,
  				but not both.</para>
  			</listitem>
  	</varlistentry>
  	
  	<varlistentry>
  		<term><emphasis role="bold">R1-<xref linkend="dbdoclet.50569332_16852" 
  		xrefstyle="select: labelnumber nopage"/>-2.</emphasis></term>
  			<listitem>
			    <para><emphasis> check-exception </emphasis> 
  				and <emphasis> event-scan</emphasis> , on a 64-bit capable platform, must 
  				be able to handle platform resources that are accessed using 64-bit 
  				addresses when instantiated in 32-bit mode. </para>
  			</listitem>
  	</varlistentry>

	</variablelist>    
</section>