xref: /freebsd/share/man/man4/imcsmb.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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