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.Dd March 2, 2018 2724f93aa0SRavi Pokala.Dt IMCSMB 4 2824f93aa0SRavi Pokala.Os 2924f93aa0SRavi Pokala.Sh NAME 3024f93aa0SRavi Pokala.Nm imcsmb 3124f93aa0SRavi Pokala.Nd Intel integrated Memory Controller (iMC) SMBus controller driver 3224f93aa0SRavi Pokala.Sh SYNOPSIS 3324f93aa0SRavi Pokala.Cd device pci 3424f93aa0SRavi Pokala.Cd device smbus 3524f93aa0SRavi Pokala.Cd device imcsmb 3624f93aa0SRavi Pokala.Pp 3724f93aa0SRavi PokalaAlternatively, to load the driver as a module at boot time, place the following 3824f93aa0SRavi Pokalaline in 3924f93aa0SRavi Pokala.Xr loader.conf 5 : 4024f93aa0SRavi Pokala.Bd -literal -offset indent 4124f93aa0SRavi Pokalaimcsmb_load="YES" 4224f93aa0SRavi Pokala.Ed 4324f93aa0SRavi Pokala.Sh DESCRIPTION 4424f93aa0SRavi PokalaThe 4524f93aa0SRavi Pokala.Nm 4624f93aa0SRavi Pokaladriver provides 4724f93aa0SRavi Pokala.Xr smbus 4 4824f93aa0SRavi Pokalasupport for the SMBus controller functionality in the integrated Memory 4924f93aa0SRavi PokalaControllers (iMCs) embedded in Intel Sandybridge-Xeon, Ivybridge-Xeon, 5024f93aa0SRavi PokalaHaswell-Xeon, and Broadwell-Xeon CPUs. 5124f93aa0SRavi PokalaEach CPU implements one or more iMCs, depending on the number of cores; 5224f93aa0SRavi Pokalaeach iMC implements two SMBus controllers (iMC-SMBs). 5324f93aa0SRavi PokalaThe iMC-SMBs are used by the iMCs to read configuration information from the 5424f93aa0SRavi PokalaDIMMs during POST. 5524f93aa0SRavi PokalaThey may also be used, by motherboard firmware or a BMC, to monitor the 5624f93aa0SRavi Pokalatemperature of the DIMMs. 5724f93aa0SRavi Pokala.Pp 5824f93aa0SRavi PokalaThe iMC-SMBs are 5924f93aa0SRavi Pokala.Sy not 6024f93aa0SRavi Pokalageneral-purpose SMBus controllers. 6124f93aa0SRavi PokalaBy their nature, they are only ever attached to DIMMs, so they implement only 6224f93aa0SRavi Pokalathe SMBus operations need for communicating with DIMMs. 6324f93aa0SRavi PokalaSpecifically: 6424f93aa0SRavi Pokala.Pp 6524f93aa0SRavi Pokala.Bl -dash -offset indent -compact 6624f93aa0SRavi Pokala.It 6724f93aa0SRavi PokalaREADB 6824f93aa0SRavi Pokala.It 6924f93aa0SRavi PokalaREADW 7024f93aa0SRavi Pokala.It 7124f93aa0SRavi PokalaWRITEB 7224f93aa0SRavi Pokala.It 7324f93aa0SRavi PokalaWRITEW 7424f93aa0SRavi Pokala.El 7524f93aa0SRavi Pokala.Pp 7624f93aa0SRavi PokalaA more detailed discussion of the hardware and driver architecture can be found 7724f93aa0SRavi Pokalaat the top of 7824f93aa0SRavi Pokala.Pa sys/dev/imcsmb/imcsmb_pci.c . 7924f93aa0SRavi Pokala.Sh WARNINGS 8024f93aa0SRavi PokalaAs mentioned above, firmware might use the iMC-SMBs to read DIMM temperatures. 8124f93aa0SRavi PokalaThe public iMC documentation does not describe any sort of coordination 8224f93aa0SRavi Pokalamechanism to prevent requests from different sources -- such as the motherboard 8324f93aa0SRavi Pokalafirmware, a BMC, or the operating system -- from interfering with each other. 8424f93aa0SRavi Pokala.Pp 8524f93aa0SRavi Pokala.Bf Sy 8624f93aa0SRavi PokalaTherefore, it is highly recommended that developers contact the motherboard 8724f93aa0SRavi Pokalavendor for any board-specific instructions on how to disable and re-enable DIMM 8824f93aa0SRavi Pokalatemperature monitoring. 8924f93aa0SRavi Pokala.Ef 9024f93aa0SRavi Pokala.Pp 9124f93aa0SRavi PokalaDIMM temperature monitoring should be disabled before returning from 9224f93aa0SRavi Pokala.Fn imcsmb_pci_request_bus , 9324f93aa0SRavi Pokalaand re-enabled before returning from 9424f93aa0SRavi Pokala.Fn imcsmb_pci_release_bus . 9524f93aa0SRavi PokalaThe driver includes comments to that effect at the appropriate locations. 9624f93aa0SRavi PokalaThe driver has been tested and shown to work, with only that type of 9724f93aa0SRavi Pokalamodification, on certain motherboards from Intel. 9824f93aa0SRavi Pokala.Po 9924f93aa0SRavi PokalaUnfortunately, those modifications were based on material covered under a 10024f93aa0SRavi Pokalanon-disclosure agreement, and therefore are not included in this driver. 10124f93aa0SRavi Pokala.Pc 10224f93aa0SRavi PokalaThe driver has also been tested and shown to work as-is on various motherboards 10324f93aa0SRavi Pokalafrom SuperMicro. 10424f93aa0SRavi Pokala.Pp 10524f93aa0SRavi PokalaThe 10624f93aa0SRavi Pokala.Xr smb 4 10724f93aa0SRavi Pokaladriver will connect to the 10824f93aa0SRavi Pokala.Xr smbus 4 10924f93aa0SRavi Pokalainstances created by 11024f93aa0SRavi Pokala.Nm . 11124f93aa0SRavi PokalaHowever, since the IMC-SMBs are not general-purpose SMBus controllers, using 11224f93aa0SRavi Pokala.Xr smbmsg 8 11324f93aa0SRavi Pokalawith those 11424f93aa0SRavi Pokala.Xr smb 4 11524f93aa0SRavi Pokaladevices is not supported. 11624f93aa0SRavi Pokala.Sh SEE ALSO 11724f93aa0SRavi Pokala.Xr jedec_dimm 4 , 11824f93aa0SRavi Pokala.Xr smbus 4 11924f93aa0SRavi Pokala.Sh HISTORY 12024f93aa0SRavi PokalaThe 12124f93aa0SRavi Pokala.Nm 12224f93aa0SRavi Pokaladriver first appeared in 12324f93aa0SRavi Pokala.Fx 12.0 . 12424f93aa0SRavi Pokala.Sh AUTHORS 12524f93aa0SRavi PokalaThe 12624f93aa0SRavi Pokala.Nm 12724f93aa0SRavi Pokaladriver was originally written for Panasas by 12824f93aa0SRavi Pokala.An Joe Kloss . 12924f93aa0SRavi PokalaIt was substantially refactored, and this manual page was written, by 13024f93aa0SRavi Pokala.An Ravi Pokala Aq Mt rpokala@freebsd.org 131