1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
|
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 Intel HPI library is currently configured to use the /dev/imb
interface, since that will coexist well with Intel Server Management
software. The hpiutil rpms default to the /dev/imb interface.
Note that the OpenIPMI driver also has imb emulation
as an option.
To switch to using the OpenIPMI driver's /dev/ipmi0 interface with
this hpiutil package, do this after installing the rpm:
cp /usr/lib/libSpiModIpmi.so /usr/lib/libSpiModIpmi.so-imb
cp /usr/lib/libSpiModIpmi.so-open /usr/lib/libSpiModIpmi.so
sed -e 's/imb/ipmi0/' /etc/hpi/spi-daemon.conf >/tmp/spi
cp /tmp/spi /etc/hpi/spi-daemon.conf
This package includes the Intel 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.
The hpiutil utilities are included in OpenHPI 1.0.0 and greater
as openhpi-clients.
The openhpi-2.6.3 and greater releases with the ipmidirect plugin
have been tested to work well on IPMI systems.
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/Cold Reset RDR via ControlStateSet(OFF)
There was no mechanism defined in the HPI 1.0 spec to support chassis
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
The following error codes are returned by HPI APIs and are defined in SaHpi.h.
0 SA_OK
-1001 SA_ERR_HPI_ERROR
-1002 SA_ERR_HPI_UNSUPPORTED_API
-1003 SA_ERR_HPI_BUSY
-1004 SA_ERR_HPI_INVALID
-1005 SA_ERR_HPI_INVALID_CMD
-1006 SA_ERR_HPI_TIMEOUT
-1007 SA_ERR_HPI_OUT_OF_SPACE
-1008 SA_ERR_HPI_DATA_TRUNCATED
-1009 SA_ERR_HPI_DATA_LEN_INVALID
-1010 SA_ERR_HPI_DATA_EX_LIMITS
-1011 SA_ERR_HPI_INVALID_PARAMS
-1012 SA_ERR_HPI_INVALID_DATA
-1013 SA_ERR_HPI_NOT_PRESENT
-1014 SA_ERR_HPI_INVALID_DATA_FIELD
-1015 SA_ERR_HPI_INVALID_SENSOR_CMD
-1016 SA_ERR_HPI_NO_RESPONSE
-1017 SA_ERR_HPI_DUPLICATE
-1018 SA_ERR_HPI_UPDATING
-1019 SA_ERR_HPI_INITIALIZING
-1020 SA_ERR_HPI_UNKNOWN
-1021 SA_ERR_HPI_INVALID_SESSION
-1022 SA_ERR_HPI_INVALID_DOMAIN
-1023 SA_ERR_HPI_INVALID_RESOURCE
-1024 SA_ERR_HPI_INVALID_REQUEST
-1025 SA_ERR_HPI_ENTITY_NOT_PRESENT
-1026 SA_ERR_HPI_UNINITIALIZED
If problems occur, additional debug information can be obtained by
editing the SPI_DAEMON_LOG_LEVEL variable in the /etc/rc.d/init.d/hpi
script to change the log level.
SPI_DAEMON_LOG_LEVEL - Level at which to log debug information. The
following list describes each of the logging
switches. Multiple switches may be used at once.
-l<num>: Logs data at a given level. Where num...
1 = Logs debug low through fatal errors.
2 = Logs debug high through fatal errors.
3 = Logs informational through fatal errors.
4 = Logs warnings through fatal errors.
5 = Log non-fatal errors and fatal errors.
6 = Logs fatal errors only.
-lf: Logs function entrance and exit.*
-lm: Logs memory usage.*
-ls: Logs semaphore usage.*
* = In order to use these options, the -l<num>
option must also be set.
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 package has been tested and is supported on the following Intel
servers: TSRLT2, TSRMT2, TIGPR2U, TIGPT1U.
See also http://www.saforum.org for platform support information.
Most of the utilities (except hpialarmpanel) should work on other
platforms as well, if they have IPMI 1.5 support.
Note that mBMC platforms, such as TIGPT1U, do not support the
Power On Hours function, which is optional in IPMI 1.5.
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 EL 3 (gcc 3.2.3, glibc 2.3.2)
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)
MontaVista CGE 3.1 (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 Library APIs
The following APIs are supported in this 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()
Hot Swap Routines
saHpiHotSwapControlRequest()
saHpiResourceActiveSet()
saHpiResourceInactiveSet()
saHpiAutoInsertTimeoutGet()
saHpiAutoInsertTimeoutSet()
saHpiAutoExtractTimeoutGet()
saHpiAutoExtractTimeoutSet()
saHpiHotSwapStateGet()
saHpiHotSwapActionRequest()
saHpiResourcePowerStateGet()
saHpiResourcePowerStateSet()
saHpiHotSwapIndicatorStateGet()
saHpiHotSwapIndicatorStateSet()
Configuration
saHpiParmControl() - disabled for this library by design
|