hpiutil

OVERVIEW

The HPI utilities package provides system management utilities that
conform to the SA Forum's Hardware Platform Interface specification, and
as such are hardware-independent across platforms that have an HPI
library implementation.  The HPI library on Intel platforms requires
an IPMI driver.  An IPMI driver can be provided by either the Intel
IPMI driver (/dev/imb) or the OpenIPMI driver (/dev/ipmi0) in Linux
kernel versions 2.4.20 and greater.

This HPI library is currently configured to use the /dev/imb 
interface, since that will coexist well with Intel Server Management 
software.  Note that the OpenIPMI driver also has imb emulation
as an option.

This package includes the HPI binary libraries and the following
HPI utilities.
   hpialarmpanel
   hpisel
   hpifru
   hpisensor
   hpireset
   hpiwdt

NOTES
This package uses the Intel HPI library implementation, but there
is also an OpenHPI library implementation that could also be linked
with these utilities.  There are comments in the Makefile to show
how this can be done.

Variations from HPI 1.0 spec:

- SystemGUID added.  Implemented as a FRU Product Custom field.
  The IPMI SystemGUID was not supported in the HPI FRU fields.
  This library implementation shows SystemGUID as part of FRU, but 
  does not try to write GUID as part of FRU.
  See HPI 1.0 spec errata #66

- Power down added to Chassis Reset RDR via ControlStateSet(OFF)
  There was no mechanism defined in HPI 1.0 to support power down.
  Here is the way this was implemented with this library. 
  Doing ControlStateSet(ON) with the Reset RDR causes a hard reset.
  Doing ControlStateSet(OFF) with the Reset RDR causes a power down.
  See HPI 1.0 spec errata #30

- Alarm LED RDRs were not differentiated.
  This variation is required to implement ControlStateSet for Alarm LEDs.
  See also HPI 1.0 spec errata #75
  The oem field values are used to do this according to the following schema.

  Control.Type Control.OutputType Control.Oem	Meaning
  Digital (=0)	LED (=1)	0x10 		Alarm panel Power LED
  Digital (=0)	LED (=1)	0x11		Alarm panel Critical LED
  Digital (=0)	LED (=1)	0x12 		Alarm panel Major LED
  Digital (=0)	LED (=1)	0x13 		Alarm panel Minor LED
  Digital (=0)	LED (=1)	0x14 - 0x1F	Alarm panel other LEDs
  Digital (=0)	LED (=1)	0x20 - 0x2F	Disk LEDs (if used)
  Digital (=0)	LED (=1)	0x30 - 0x3F	NIC LEDs (if used)
  Analog (=2)	LED (=1)	0x60		Chassis Identify LED
  Analog (=2)	LED (=1)	0x61 - 0x6F	Other Analog LEDs (if used)
  Digital (=0)	Generic (=0)	0x70 - 0x7F	Chassis Reset Control


SUPPORT 
Support for the hpiutil rpm is provided on a best-effort basis via 
   tltsupport@linux.intel.com 

REFERENCES
IPMI 1.5 specification:     http://www.intel.com/design/servers/ipmi/
Open source IPMI utilities: http://panicsel.sourceforge.net
SA Forum HPI 1.0 spec:  http://www.saforum.org/specification/HPI_Specification
Intel HPI 1.0 compliance test suite:  Contact Keith.L.Perrin@Intel.com
OpenHPI  project:           http://openhpi.sourceforge.net

TESTING

  The binary HPI libraries included in this package have been tested to be 
  HPI 1.0 compliant via the Intel HPI 1.0 compliance test suite.

  This hpiutil package is not inherently dependent on any OS variance,
  as long as there is an IPMI driver.  However, the version of glibc/gcc
  does matter, since the library includes shared object files.
  This HPI library and the HPI utilities have been tested on the 
  following Linux OSs.  
     RedHat AS 2.1      (gcc 2.96,   glibc 2.2.4)
     RedHat 8.0         (gcc 3.2,    glibc 2.2.93)
     MontaVista CGE 2.1 (gcc 2.95.3, glibc 2.2.3 )
     MontaVista CGE 3.0 (gcc 3.2.1,  glibc 2.2.5)
  Other Linux OSs should work fine using an rpm with similar gcc/glibc.

  SA-HPI Release 1.0 APIs
  The following APIs are supported in this current release:

Initialization and Cleanup
saHpiInitialize()
saHpiFinalize()
Session Management
saHpiSessionOpen()
saHpiSessionClose()

Discovery of Resources
saHpiResourcesDiscover()
saHpiRptInfoGet()
saHpiRptEntryGet()
saHpiRptEntryGetByResourceId()
saHpiResourceSeveritySet()
saHpiResourceTagSet()
saHpiResourceIdGet()
saHpiEntitySchemaGet()

Event Log Management
saHpiEventLogInfoGet()
saHpiEventLogEntryGet()
saHpiEventLogEntryAdd()
saHpiEventLogEntryDelete ()
saHpiEventLogClear()
saHpiEventLogTimeGet()
saHpiEventLogTimeSet()
saHpiEventLogStateGet()
saHpiEventLogStateSet()

Events
saHpiSubscribe()
saHpiUnsubscribe()
saHpiEventGet()

RDR Repository Management
saHpiRdrGet()

Sensor Functions
saHpiSensorReadingGet()
saHpiSensorReadingConvert()
saHpiSensorThresholdsGet()
saHpiSensorThresholdsSet()
saHpiSensorTypeGet()
saHpiSensorEventEnablesGet()
saHpiSensorEventEnablesSet()

Controls
saHpiControlTypeGet()
saHpiControlStateGet()
saHpiControlStateSet()

Entity Inventory Data
saHpiEntityInventoryDataRead()
saHpiEntityInventoryDataWrite()

Watchdog Timer
saHpiWatchdogTimerGet()
saHpiWatchdogTimerSet()
saHpiWatchdogTimerReset()

Reset
saHpiResourceResetStateGet()
saHpiResourceResetStateSet()

These APIs are not supported in this release:
Hot Swap Routines
saHpiHotSwapControlRequest()
saHpiResourceActiveSet()
saHpiResourceInactiveSet()
saHpiAutoInsertTimeoutGet()
saHpiAutoInsertTimeoutSet()
saHpiAutoExtractTimeoutGet()
saHpiAutoExtractTimeoutSet()
saHpiHotSwapStateGet()
saHpiHotSwapActionRequest()
saHpiResourcePowerStateGet()
saHpiResourcePowerStateSet()
saHpiHotSwapIndicatorStateGet()
saHpiHotSwapIndicatorStateSet()

Configuration
saHpiParmControl()


