xref: /freebsd/share/man/man4/imcsmb.4 (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
124f93aa0SRavi Pokala.\"
2*4d846d26SWarner Losh.\" SPDX-License-Identifier: BSD-2-Clause
324f93aa0SRavi Pokala.\"
424f93aa0SRavi Pokala.\" Copyright (c) 2018 Panasas
524f93aa0SRavi Pokala.\"
624f93aa0SRavi Pokala.\" Redistribution and use in source and binary forms, with or without
724f93aa0SRavi Pokala.\" modification, are permitted provided that the following conditions
824f93aa0SRavi Pokala.\" are met:
924f93aa0SRavi Pokala.\" 1. Redistributions of source code must retain the above copyright
1024f93aa0SRavi Pokala.\"    notice, this list of conditions and the following disclaimer.
1124f93aa0SRavi Pokala.\" 2. Redistributions in binary form must reproduce the above copyright
1224f93aa0SRavi Pokala.\"    notice, this list of conditions and the following disclaimer in the
1324f93aa0SRavi Pokala.\"    documentation and/or other materials provided with the distribution.
1424f93aa0SRavi Pokala.\"
1524f93aa0SRavi Pokala.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1624f93aa0SRavi Pokala.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1724f93aa0SRavi Pokala.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1824f93aa0SRavi Pokala.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1924f93aa0SRavi Pokala.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2024f93aa0SRavi Pokala.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2124f93aa0SRavi Pokala.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2224f93aa0SRavi Pokala.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2324f93aa0SRavi Pokala.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2424f93aa0SRavi Pokala.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2524f93aa0SRavi Pokala.\"
2624f93aa0SRavi Pokala.\" $FreeBSD$
2724f93aa0SRavi Pokala.\"
2824f93aa0SRavi Pokala.Dd March 2, 2018
2924f93aa0SRavi Pokala.Dt IMCSMB 4
3024f93aa0SRavi Pokala.Os
3124f93aa0SRavi Pokala.Sh NAME
3224f93aa0SRavi Pokala.Nm imcsmb
3324f93aa0SRavi Pokala.Nd Intel integrated Memory Controller (iMC) SMBus controller driver
3424f93aa0SRavi Pokala.Sh SYNOPSIS
3524f93aa0SRavi Pokala.Cd device pci
3624f93aa0SRavi Pokala.Cd device smbus
3724f93aa0SRavi Pokala.Cd device imcsmb
3824f93aa0SRavi Pokala.Pp
3924f93aa0SRavi PokalaAlternatively, to load the driver as a module at boot time, place the following
4024f93aa0SRavi Pokalaline in
4124f93aa0SRavi Pokala.Xr loader.conf 5 :
4224f93aa0SRavi Pokala.Bd -literal -offset indent
4324f93aa0SRavi Pokalaimcsmb_load="YES"
4424f93aa0SRavi Pokala.Ed
4524f93aa0SRavi Pokala.Sh DESCRIPTION
4624f93aa0SRavi PokalaThe
4724f93aa0SRavi Pokala.Nm
4824f93aa0SRavi Pokaladriver provides
4924f93aa0SRavi Pokala.Xr smbus 4
5024f93aa0SRavi Pokalasupport for the SMBus controller functionality in the integrated Memory
5124f93aa0SRavi PokalaControllers (iMCs) embedded in Intel Sandybridge-Xeon, Ivybridge-Xeon,
5224f93aa0SRavi PokalaHaswell-Xeon, and Broadwell-Xeon CPUs.
5324f93aa0SRavi PokalaEach CPU implements one or more iMCs, depending on the number of cores;
5424f93aa0SRavi Pokalaeach iMC implements two SMBus controllers (iMC-SMBs).
5524f93aa0SRavi PokalaThe iMC-SMBs are used by the iMCs to read configuration information from the
5624f93aa0SRavi PokalaDIMMs during POST.
5724f93aa0SRavi PokalaThey may also be used, by motherboard firmware or a BMC, to monitor the
5824f93aa0SRavi Pokalatemperature of the DIMMs.
5924f93aa0SRavi Pokala.Pp
6024f93aa0SRavi PokalaThe iMC-SMBs are
6124f93aa0SRavi Pokala.Sy not
6224f93aa0SRavi Pokalageneral-purpose SMBus controllers.
6324f93aa0SRavi PokalaBy their nature, they are only ever attached to DIMMs, so they implement only
6424f93aa0SRavi Pokalathe SMBus operations need for communicating with DIMMs.
6524f93aa0SRavi PokalaSpecifically:
6624f93aa0SRavi Pokala.Pp
6724f93aa0SRavi Pokala.Bl -dash -offset indent -compact
6824f93aa0SRavi Pokala.It
6924f93aa0SRavi PokalaREADB
7024f93aa0SRavi Pokala.It
7124f93aa0SRavi PokalaREADW
7224f93aa0SRavi Pokala.It
7324f93aa0SRavi PokalaWRITEB
7424f93aa0SRavi Pokala.It
7524f93aa0SRavi PokalaWRITEW
7624f93aa0SRavi Pokala.El
7724f93aa0SRavi Pokala.Pp
7824f93aa0SRavi PokalaA more detailed discussion of the hardware and driver architecture can be found
7924f93aa0SRavi Pokalaat the top of
8024f93aa0SRavi Pokala.Pa sys/dev/imcsmb/imcsmb_pci.c .
8124f93aa0SRavi Pokala.Sh WARNINGS
8224f93aa0SRavi PokalaAs mentioned above, firmware might use the iMC-SMBs to read DIMM temperatures.
8324f93aa0SRavi PokalaThe public iMC documentation does not describe any sort of coordination
8424f93aa0SRavi Pokalamechanism to prevent requests from different sources -- such as the motherboard
8524f93aa0SRavi Pokalafirmware, a BMC, or the operating system -- from interfering with each other.
8624f93aa0SRavi Pokala.Pp
8724f93aa0SRavi Pokala.Bf Sy
8824f93aa0SRavi PokalaTherefore, it is highly recommended that developers contact the motherboard
8924f93aa0SRavi Pokalavendor for any board-specific instructions on how to disable and re-enable DIMM
9024f93aa0SRavi Pokalatemperature monitoring.
9124f93aa0SRavi Pokala.Ef
9224f93aa0SRavi Pokala.Pp
9324f93aa0SRavi PokalaDIMM temperature monitoring should be disabled before returning from
9424f93aa0SRavi Pokala.Fn imcsmb_pci_request_bus ,
9524f93aa0SRavi Pokalaand re-enabled before returning from
9624f93aa0SRavi Pokala.Fn imcsmb_pci_release_bus .
9724f93aa0SRavi PokalaThe driver includes comments to that effect at the appropriate locations.
9824f93aa0SRavi PokalaThe driver has been tested and shown to work, with only that type of
9924f93aa0SRavi Pokalamodification, on certain motherboards from Intel.
10024f93aa0SRavi Pokala.Po
10124f93aa0SRavi PokalaUnfortunately, those modifications were based on material covered under a
10224f93aa0SRavi Pokalanon-disclosure agreement, and therefore are not included in this driver.
10324f93aa0SRavi Pokala.Pc
10424f93aa0SRavi PokalaThe driver has also been tested and shown to work as-is on various motherboards
10524f93aa0SRavi Pokalafrom SuperMicro.
10624f93aa0SRavi Pokala.Pp
10724f93aa0SRavi PokalaThe
10824f93aa0SRavi Pokala.Xr smb 4
10924f93aa0SRavi Pokaladriver will connect to the
11024f93aa0SRavi Pokala.Xr smbus 4
11124f93aa0SRavi Pokalainstances created by
11224f93aa0SRavi Pokala.Nm .
11324f93aa0SRavi PokalaHowever, since the IMC-SMBs are not general-purpose SMBus controllers, using
11424f93aa0SRavi Pokala.Xr smbmsg 8
11524f93aa0SRavi Pokalawith those
11624f93aa0SRavi Pokala.Xr smb 4
11724f93aa0SRavi Pokaladevices is not supported.
11824f93aa0SRavi Pokala.Sh SEE ALSO
11924f93aa0SRavi Pokala.Xr jedec_dimm 4 ,
12024f93aa0SRavi Pokala.Xr smbus 4
12124f93aa0SRavi Pokala.Sh HISTORY
12224f93aa0SRavi PokalaThe
12324f93aa0SRavi Pokala.Nm
12424f93aa0SRavi Pokaladriver first appeared in
12524f93aa0SRavi Pokala.Fx 12.0 .
12624f93aa0SRavi Pokala.Sh AUTHORS
12724f93aa0SRavi PokalaThe
12824f93aa0SRavi Pokala.Nm
12924f93aa0SRavi Pokaladriver was originally written for Panasas by
13024f93aa0SRavi Pokala.An Joe Kloss .
13124f93aa0SRavi PokalaIt was substantially refactored, and this manual page was written, by
13224f93aa0SRavi Pokala.An Ravi Pokala Aq Mt rpokala@freebsd.org
133