To manually specify I/O attachment in
/boot/device.hints
hint.ipmi.0.at=isahint.ipmi.0.port=0xCA2hint.ipmi.0.spacing=8hint.ipmi.0.mode=KCS
To manually specify memory attachment in
/boot/device.hints
hint.ipmi.0.at=isahint.ipmi.0.maddr=0xf0000000hint.ipmi.0.spacing=8hint.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: