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