Skip to content

iMC SMBUS and DIMM bus probing

Andy Lutomirski linux-i2c lm-sensors 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest2 patches 6 repliesIn review
  2. v34 patches 11 repliesSuperseded

Changes in v4 from the cover letter

- Dropped redundant "tsod" driver
- Dropped eeprom modalias
- Switched to probing for the "eeprom" and "jc42"

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/2i2c: Add DIMM bus codedrivers/i2c/busses/Kconfig drivers/i2c/busses/Makefile drivers/i2c/busses/dimm-bus.c +1 more+129 -00 replies
2/2i2c_imc: New driver for Intel's iMC, found on LGA2011 chipsdrivers/i2c/busses/Kconfig drivers/i2c/busses/Makefile drivers/i2c/busses/i2c-imc.c+564 -04 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.

Read the v4 thread

Cover letter [PATCH v4 0/2] iMC SMBUS and DIMM bus probing

Intel LGA2011 machines have dedicated SMBUS controllers for DIMM sockets. Because they're dedicated, they can be safely and accurately probed, since all devices on them are known to be attached to DIMMs. The devices found are:
- SPD EEPROMs
- TSODs (Temperature Sensor on DIMMs)
- Other interesting things, with drivers hopefully to follow...

This patch series adds a simple generic layer for probing for DIMMs over SMBUS and an i2c bus driver for the iMC controller found on Intel LGA2011 chips.

It now uses only modern infrastructure -- new-style I2C probing and the at24 (instead of eeprom) driver.

I've tested this on a Core i7 Extreme and on a Xeon E5 server. With this series applied, sensors shows (on the Xeon E5):

jc42-i2c-1-18
Adapter: iMC socket 0 channel 0
temp1: +33.0°C (low = +0.0°C) ALARM (HIGH)

                       (high =  +0.0°C, hyst =  +0.0°C)
                       (crit = +100.0°C, hyst = +100.0°C)

jc42-i2c-1-1c
Adapter: iMC socket 0 channel 0
temp1: +35.2°C (low = +0.0°C) ALARM (HIGH)

                       (high =  +0.0°C, hyst =  +0.0°C)
                       (crit = +100.0°C, hyst = +100.0°C)

jc42-i2c-3-18
Adapter: iMC socket 1 channel 0
temp1: +27.0°C (low = +0.0°C) ALARM (HIGH)

                       (high =  +0.0°C, hyst =  +0.0°C)
                       (crit = +100.0°C, hyst = +100.0°C)

jc42-i2c-3-1c
Adapter: iMC socket 1 channel 0
temp1: +33.2°C (low = +0.0°C) ALARM (HIGH)

                       (high =  +0.0°C, hyst =  +0.0°C)
                       (crit = +100.0°C, hyst = +100.0°C)

with no need for any userspace probing or manual module loading. decode-dimms works on both machines, again without any manual module loading.

The whole series is available on git here (against v3.9.7):
https://git.kernel.org/cgit/linux/kernel/git/luto/linux.git/log/?h=i2c_imc/patch_v4

I'm not entirely attached the to the probing approach in patch 1 -- see comments there.

Changes from v3:
- Dropped redundant "tsod" driver
- Dropped eeprom modalias
- Switched to probing for the "eeprom" and "jc42"

Andy Lutomirski (2):
i2c: Add DIMM bus code
i2c_imc: New driver for Intel's iMC, found on LGA2011 chips

 drivers/i2c/busses/Kconfig    |  19 ++
 drivers/i2c/busses/Makefile   |   5 +
 drivers/i2c/busses/dimm-bus.c |  97 ++++++++
 drivers/i2c/busses/i2c-imc.c  | 548 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/i2c/dimm-bus.h  |  24 ++
 5 files changed, 693 insertions(+)
 create mode 100644 drivers/i2c/busses/dimm-bus.c
 create mode 100644 drivers/i2c/busses/i2c-imc.c
 create mode 100644 include/linux/i2c/dimm-bus.h
Signature · 1 line
1.8.1.4