1.\" 2.\" Copyright (c) 2006 Tom Rhodes 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.\" $FreeBSD: head/share/man/man4/ipmi.4 267938 2014-06-26 21:46:14Z bapt $ 27.\" 28.Dd December 14, 2014 29.Dt IPMI 4 30.Os 31.Sh NAME 32.Nm ipmi 33.Nd "OpenIPMI compatible IPMI interface driver" 34.Sh SYNOPSIS 35.Cd "device ipmi" 36.\".Pp 37.\"To manually specify I/O attachment in 38.\".Pa /boot/device.hints : 39.\".Cd hint.ipmi.0.at="isa" 40.\".Cd hint.ipmi.0.port="0xCA2" 41.\".Cd hint.ipmi.0.spacing="8" 42.\".Cd hint.ipmi.0.mode="KCS" 43.\".Pp 44.\"To manually specify memory attachment in 45.\".Pa /boot/device.hints : 46.\".Cd hint.ipmi.0.at="isa" 47.\".Cd hint.ipmi.0.maddr="0xf0000000" 48.\".Cd hint.ipmi.0.spacing="8" 49.\".Cd hint.ipmi.0.mode="SMIC" 50.\".Pp 51.\"Meaning of 52.\".Ar spacing : 53.\".Bl -tag -offset indent -compact -width 0x0 54.\".It 8 55.\"8 bit alignment 56.\".It 16 57.\"16 bit alignment 58.\".It 32 59.\"32 bit alignment 60.\".El 61.\".Pp 62.\"If the 63.\".Ar port 64.\"and 65.\".Ar spacing 66.\"are not specified the interface type default will be used. Only specify 67.\"either the 68.\".Ar port 69.\"for I/O access or 70.\".Ar maddr 71.\"for memory access. 72.Sh DESCRIPTION 73The 74.Tn IPMI 75(Intelligent Platform Management Interface) is a standard for 76monitoring system hardware by permitting generic code to detect 77and monitor the sensors in a system. 78The 79.Tn IPMI 80standard offers watchdog support, an FRU database, and other 81support extensions. 82It is currently being adopted by the makers of many 83single board and embedded system manufacturers. 84.Pp 85The 86.Nm 87driver in 88.Dx 89is heavily adopted from the standard and 90.Tn Linux 91driver; however, not all features described in the 92standard are supported. 93.Sh SYSCTL VARIABLES 94The following 95.Xr sysctl 8 96variables are available: 97.Bl -tag -width ".Va dev.ipmi.%d.watchdog_timeout" 98.It Va dev.ipmi.%d.watchdog_enable 99Enable watchdog functionality. 100.It Va dev.ipmi.%d.watchdog_timeout 101Set the watchdog timeout. 102.El 103.Sh IOCTLS 104Sending and receiving messages through the 105.Nm 106driver requires the use of 107.Xr ioctl 2 . 108The ioctls are used due to the complexity of 109data sent to and from the device. 110The 111.Xr ioctl 2 112command codes below are defined in 113.In sys/ipmi.h . 114The third argument to 115.Xr ioctl 2 116should be a pointer to the type indicated. 117.Pp 118Currently the following ioctls are supported: 119.Bl -tag -width indent 120.It Dv IPMICTL_RECEIVE_MSG Pq Vt "struct ipmi_recv" 121Receive a message. 122Possible error values: 123.Bl -tag -width Er 124.It Bq Er EAGAIN 125No messages are in the process queue. 126.It Bq Er EFAULT 127An address supplied was invalid. 128.It Bq Er EMSGSIZE 129The address could not fit in the message buffer and 130will remain in the buffer. 131.El 132.It Dv IPMICTL_RECEIVE_MSG_TRUNC Pq Vt "struct ipmi_recv" 133Like 134.Dv IPMICTL_RECEIVE_MSG 135but if the message cannot fit into the buffer, it 136will truncate the contents instead of leaving the data 137in the buffer. 138.It Dv IPMICTL_SEND_COMMAND Pq Vt "struct ipmi_req" 139Send a message to the interface. 140Possible error values: 141.Bl -tag -width Er 142.It Bq Er EFAULT 143An address supplied was invalid. 144.It Bq Er ENOMEM 145Buffers could not be allowed for the command, out of memory. 146.El 147.It Dv IPMICTL_SET_MY_ADDRESS_CMD Pq Vt "unsigned int" 148Set the slave address for source messages. 149.It Dv IPMICTL_GET_MY_ADDRESS_CMD Pq Vt "unsigned int" 150Get the slave address for source messages. 151.It Dv IPMICTL_SET_MY_LUN_CMD Pq Vt "unsigned int" 152Set the slave LUN for source messages. 153.It Dv IPMICTL_GET_MY_LUN_CMD Pq Vt "unsigned int" 154Get the slave LUN for source messages. 155.El 156.Ss Unimplemented Ioctls 157.Bl -tag -width indent 158.It Dv IPMICTL_REGISTER_FOR_CMD Pq Vt "struct ipmi_cmdspec" 159Register to receive a specific command. 160Possible error values: 161.Bl -tag -width Er 162.It Bq Er EFAULT 163An supplied address was invalid. 164.It Bq Er EBUSY 165The network function/command is already in use. 166.It Bq Er ENOMEM 167Could not allocate memory. 168.El 169.It Dv IPMICTL_UNREGISTER_FOR_CMD Pq Vt "struct ipmi_cmdspec" 170Unregister to receive a specific command. 171Possible error values: 172.Bl -tag -width Er 173.It Bq Er EFAULT 174An address supplied was invalid. 175.It Bq Er ENOENT 176The network function/command was not found. 177.El 178.El 179.Ss Stub Only Ioctl 180.Bl -tag -width indent 181.It Dv IPMICTL_SET_GETS_EVENTS_CMD Pq Vt int 182Set whether this interface receives events. 183Possible error values: 184.Bl -tag -width Er 185.It Bq Er EFAULT 186An address supplied was invalid. 187.El 188.El 189.Sh SEE ALSO 190.Xr ioctl 2 , 191.Xr watchdog 4 , 192.\".Xr watchdog 8 , 193.Xr watchdogd 8 , 194.Xr wdog 9 195.Sh HISTORY 196The 197.Nm 198driver first appeared in 199.Fx 6.2 . 200It was imported to 201.Dx 4.1 . 202.Sh AUTHORS 203.An -nosplit 204The 205.Nm 206driver was written by 207.An Doug Ambrisko Aq Mt ambrisko@FreeBSD.org . 208This manual page was written by 209.An Tom Rhodes Aq Mt trhodes@FreeBSD.org . 210.Sh BUGS 211Not all features of the MontaVista driver are supported. 212.Pp 213Currently, IPMB and BT modes are not implemented. 214