ipmi(4) OpenIPMI compatible IPMI interface driver

SYNOPSIS

device ipmi

To manually specify I/O attachment in /boot/device.hints hint.ipmi.0.at=isa hint.ipmi.0.port=0xCA2 hint.ipmi.0.spacing=8 hint.ipmi.0.mode=KCS

To manually specify memory attachment in /boot/device.hints hint.ipmi.0.at=isa hint.ipmi.0.maddr=0xf0000000 hint.ipmi.0.spacing=8 hint.ipmi.0.mode=SMIC

Meaning of spacing

8
8 bit alignment
16
16 bit alignment
32
32 bit alignment

If the port and spacing are not specified the interface type default will be used. Only specify either the port for I/O access or maddr for memory access.

DESCRIPTION

The IPMI (Intelligent Platform Management Interface) is a standard for monitoring system hardware by permitting generic code to detect and monitor the sensors in a system. The IPMI standard offers watchdog support, an FRU database, and other support extensions. It is currently being adopted by the makers of many single board and embedded system manufacturers.

The driver in Fx is heavily adopted from the standard and Linux driver; however, not all features described in the standard are supported.

IOCTLS

Sending and receiving messages through the driver requires the use of ioctl(2). The ioctls are used due to the complexity of data sent to and from the device. The ioctl(2) command codes below are defined in In sys/ipmi.h . The third argument to ioctl(2) should be a pointer to the type indicated.

Currently the following ioctls are supported:

IPMICTL_RECEIVE_MSG (Vt struct ipmi_recv )
Receive a message. Possible error values:

Bq Er EAGAIN
No messages are in the process queue.
Bq Er EFAULT
An address supplied was invalid.
Bq Er EMSGSIZE
The address could not fit in the message buffer and will remain in the buffer.

IPMICTL_RECEIVE_MSG_TRUNC (Vt struct ipmi_recv )
Like IPMICTL_RECEIVE_MSG but if the message cannot fit into the buffer, it will truncate the contents instead of leaving the data in the buffer.
IPMICTL_SEND_COMMAND (Vt struct ipmi_req )
Send a message to the interface. Possible error values:

Bq Er EFAULT
An address supplied was invalid.
Bq Er ENOMEM
Buffers could not be allowed for the command, out of memory.

IPMICTL_SET_MY_ADDRESS_CMD (Vt unsigned int )
Set the slave address for source messages.
IPMICTL_GET_MY_ADDRESS_CMD (Vt unsigned int )
Get the slave address for source messages.
IPMICTL_SET_MY_LUN_CMD (Vt unsigned int )
Set the slave LUN for source messages.
IPMICTL_GET_MY_LUN_CMD (Vt unsigned int )
Get the slave LUN for source messages.

Unimplemented Ioctls

IPMICTL_REGISTER_FOR_CMD (Vt struct ipmi_cmdspec )
Register to receive a specific command. Possible error values:

Bq Er EFAULT
An supplied address was invalid.
Bq Er EBUSY
The network function/command is already in use.
Bq Er ENOMEM
Could not allocate memory.

IPMICTL_UNREGISTER_FOR_CMD (Vt struct ipmi_cmdspec )
Unregister to receive a specific command. Possible error values:

Bq Er EFAULT
An address supplied was invalid.
Bq Er ENOENT
The network function/command was not found.

Stub Only Ioctl

IPMICTL_SET_GETS_EVENTS_CMD (Vt int )
Set whether this interface receives events. Possible error values:

Bq Er EFAULT
An address supplied was invalid.

HISTORY

The driver first appeared in Fx 6.2 .

AUTHORS

An -nosplit The driver was written by An Doug Ambrisko Aq [email protected] . This manual page was written by An Tom Rhodes Aq [email protected] .

BUGS

Not all features of the MontaVista driver are supported.

Currently, IPMB and BT modes are not implemented.