Go to main content

man pages section 4: Device and Network Interfaces

Exit Print View

Updated: Thursday, June 13, 2019
 
 

ipmi(4D)

Name

ipmi - service processor driver interface using IPMI

Synopsis

#include <sys/ipmi.h>

open("/dev/ipmi0", mode);

Description

The ipmi driver provides access to a system's service processor using an IPMI (Intelligent Platform Management Interface) standard interface. This driver is OpenIPMI compliant and supports the service processor's watchdog timer.

ipmi supplies a standard way to access and monitor system sensors, the FRU database, and the overall environmental state and health of the system.

The primary method for communication between user land and the driver is through the use of ioctl(2).

This driver follows the pseudo OpenIPMI standard. See http://openipmi.sourceforge.net for details of the OpenIPMI and its uses.

Properties

The impi module supplies an OpenIPMI compatible driver module. If you need this new functionality then this is the driver module that you should use.

If you want the extended features of the new OpenIPMI driver, but still require legacy bmc driver functionality you have the choice of using the new sbmc/ipmi driver module pair. This new pair offers an OpenIPMI compatible driver (ipmi) and a legacy bmc compatible driver, sbmc, both of which can be used at the same time.


Driver Module  Functionality         Enable Property

ipmi           OpenIPMI driver       ipmi.conf/ipmi-enable
sbmc           bmc compatibility     sbmc.conf/sbmc-enable
                for OpenIPMI

The above properties can be set to either 1 (enable) or 0 (disable). If you need OpenIPMI with legacy support then ipmi-enable=1 should be in the file ipmi.conf. Also sbmc-enable=1 should be in the file sbmc.conf.

The driver properties are set by editing the related configuration file. For the ipmi driver the file is ipmi.conf.

The following properties are supported:

ipmi-enable

Enables or disables the ipmi driver. When the driver is disabled it does not attach and is not active.

When set to 1 the ipmi driver is enabled. The default is disabled.

ipmi-polltime

The time in milliseconds between polls to check for asynchronous events.

If this value is set to 0 then asynchronous event notification is disabled. The default value is 1 second.

ipmi-wdtime

The initial value for the watch-dog time out period in seconds. The watch-dog counts down from this value until it reaches 0, at which time the system resets.

The default for is 90 seconds. If this value is set to 0 the watch-dog feature is disabled.

ipmi-wdupdate

The driver watch-dog update period in seconds. The driver watch-dog update period is the number of seconds between the time that the driver resets the watch-dog timer back to its initial value.

If this value is set to 0 the watch-dog feature is disabled. The default for this value is 30 seconds.

Ioctls

The following ioctls are supported:

IPMICTL_GET_MY_ADDRESS_CMD:

Passed an argument of type (unsigned int *). Gets the slave address for source messages.

IPMICTL_GET_TIMING_PARMS_CMD

Passed an argument of type (struct ipmi_timing_parms *). Gets the retry and error timeout metrics for an open session. The time value is in milliseconds.

IPMICTL_RECEIVE_MSG

Passed an argument of type (struct ipmi_recv *). ioctl(2) receives a message. If the received message is too large to fit in the buffer an error is returned.

IPMICTL_RECEIVE_MSG_TRUNC

Like IPMICTL_RECEIVE_MSG with the exception that if the message does not fit in the buffer it is truncated.

IPMICTL_REGISTER_FOR_CMD

Passed an argument of type (struct ipmi_cmdspec *). Registers to receive a specific command.

IPMICTL_SEND_COMMAND

Passed an argument of type (struct ipmi_req *). ioctl(2) is used to send a request to the interface.

IPMICTL_SEND_COMMAND_SETTIME

Passed an argument of type (struct ipmi_req_settime *). Like IPMICTL_SEND_COMMAND but also sets the retries and error timeout value passed in for this request only.

IPMICTL_SET_GETS_EVENTS_CMD

Passed an argument of type (int). This is passed a boolean which when set to none. zero causes the interface to deliver asynchronous events to this open session.

IPMICTL_SET_MY_ADDRESS_CMD

Passed an argument of type (unsigned int *). Sets the slave address for source messages.

IPMICTL_SET_MY_LUN_CMD

Passed an argument of type (unsigned int *). Sets the slave address for source messages.

IPMICTL_SET_TIMING_PARMS_CMD

Passed an argument of type (struct ipmi_timing_parms *). Sets the retry and error timeout metrics for an open session. The time value is in milliseconds.

IPMICTL_UNREGISTER_FOR_CMD

Passed an argument of type (struct ipmi_cmdspec *). Unregisters to receive a specific command.

Errors

An open(2) fails if:

EAGAIN

There are too many open instances. Try again later.

EIO

There is a hardware initialization problem.

ENXIO

There is a problem and the driver is not available.

An ioctl(2) fails if:

EAGAIN

None available. Try again later.

EACCES

The operation violates permissions.

EFAULT

An address is invalid.

ENOIOCTL

Invalid ioctl.

Files

/dev/ipmi0

OpenIPMI compatible driver file node

/kernel/drv/ipmi.conf

ipmi configuration file

/kernel/drv/sbmc.conf

bmc compatibility module for OpenIPMI configuration file

/kernel/drv/amd64/ipmi

64-bit x86 kernel OpenIPMI driver module

/kernel/drv/amd64/sbmc

64-bit x86 kernel bmc compatible driver module

/kernel/drv/sparcv9/ipmi

64-bit SPARC kernel OpenIPMI driver module

/kernel/drv/sparcv9/sbmc

64-bit SPARC kernel bmc compatible driver module

Attributes

See attributes(7) for a description of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Architecture
SPARC, x86
Availability
driver/management/ipmi
Interface Stability
Uncommitted

See Also

close(2), ioctl(2), open(2), poll(2), attributes(7)

http://openipmi.sourceforge.net