背景
我正在尝试通过CentOS 7 Linux上的i2c访问Serial Presence Detect Data。我主要是寻找位于字节1的SPD修订版,并在DDR3和DDR4图表上保持一致。SPD修订版无法通过dmidecode,lshw或任何其他标准linux包找到,并且在某些情况下无法通过Passmark的Memtestx 86检测到,这使我走上了这条道路。我还使用smbus 2库实现了一个python,但它的数据基于同一个内核模块i2c-dev。
为了给予我的期望,这里有一个使用i2c方法的英特尔赛扬处理器上的DDR3 DIMM的输出。
[root@localhost ~]# lsmod | grep i2c
i2c_dev 13985 0
i2c_i801 22736 0
i2c_algo_bit 13413 2 igb,i915
# yum install i2c-tools
[root@localhost ~]# i2cdetect -l
i2c-0 i2c i915 gmbus ssc I2C adapter
i2c-1 i2c i915 gmbus vga I2C adapter
i2c-2 i2c i915 gmbus panel I2C adapter
i2c-3 i2c i915 gmbus dpc I2C adapter
i2c-4 i2c i915 gmbus dpb I2C adapter
i2c-5 i2c i915 gmbus dpd I2C adapter
i2c-6 i2c DPDDC-B I2C adapter
i2c-7 smbus SMBus I801 adapter at e000 SMBus adapter
[root@localhost ~]# i2cdetect -y 7
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
请注意,此特定DIMM的SPD版本为1。3.
[root@localhost ~]# i2cdump -y 7 0x50
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 92 13 0b 03 04 21 02 01 03 11 01 08 0a 00 fe 00 ?????!???????.?.
10: 69 78 69 30 69 11 18 81 20 08 3c 3c 00 f0 83 05 ixi0i??? ?<<.???
20: 00 00 00 00 00 00 00 00 00 88 00 00 00 00 00 00 .........?......
30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00 ............??A.
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 86 f1 02 20 11 01 10 00 02 7c 07 .....??? ???.?|?
80: 4d 33 53 54 2d 34 47 4d 53 43 4c 50 43 2d 50 20 M3ST-4GMSCLPC-P
90: 20 20 00 00 80 2c 4d 30 53 32 2d 32 30 30 33 30 ..?,M0S2-20030
a0: 39 30 31 30 00 00 00 00 00 00 00 00 00 00 00 00 9010............
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[root@localhost ~]#
问题
现在,我试图在不同的主板上运行类似的测试,但我无法检测到SPD数据。主板和处理器包含在下面的dmesg日志中。
[root@localhost ~]# modprobe i2c-dev
[root@localhost ~]# i2cdetect -l
i2c-0 i2c igb BB I2C adapter
i2c-1 i2c igb BB I2C adapter
i2c-2 smbus SMBus PIIX4 adapter port 0 at 0b00 SMBus adapter
i2c-3 smbus SMBus PIIX4 adapter port 2 at 0b00 SMBus adapter
i2c-4 smbus SMBus PIIX4 adapter port 3 at 0b00 SMBus adapter
i2c-5 smbus SMBus PIIX4 adapter port 4 at 0b00 SMBus adapter
[root@localhost ~]# i2cdetect -y 2
...
[root@localhost ~]# i2cdetect -y 3
...
[root@localhost ~]# i2cdetect -y 4
...
[root@localhost ~]# i2cdetect -y 5
...
来自dmesg
...
[ 0.000000] DMI: Supermicro Super Server/H12SSW-AN6, BIOS 2.4 02/23/2022
...
[ 1.447669] smpboot: CPU0: AMD EPYC 7402P 24-Core Processor (fam: 17, model: 31, stepping: 00)
...
[ 233.696793] i2c /dev entries driver
[ 265.088648] i2c i2c-2: SMBus Timeout!
[ 265.091939] i2c i2c-2: Failed reset at end of transaction (01)
[ 265.095368] i2c i2c-2: Failed! (01)
...
[ 302.537291] i2c i2c-3: Failed! (01)
...
[ 303.721286] i2c i2c-4: Failed! (01)
...
[ 304.841296] i2c i2c-5: Failed! (01)
...
到目前为止我所做的
仅供参考,我测试的所有系统都运行3.10.0-1160.71.1.el7.x86_64
内核版本。
基于我上面所包含的内容,我怀疑CentOS 7中缺少一个内核模块,阻止我与那些相关的i2c设备进行交互,但不能完全确定。也许这是内核开发人员的疏忽?也许它在一个较新的内核上工作。
在我能找到关于我的特定问题的一点东西之后,我偶然发现了这个https://developer.amd.com/e-sms/,它把我带到了https://github.com/amd/apml_modules/,但我不认为这些模块能解决我的问题。
1条答案
按热度按时间uurity8g1#
如果将来有人偶然发现这个问题,我建议观看Jean Delvare的视频演示。他基本上解释了DDR3之后系统可读性的差异,并在两者之间留下了我们的选择。
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
没有明显的Linux解决方案,您最好的选择可能是将dmidecode作为i2c。PassMark的RAMMon和Memtest86均显示“SPD Not Detected”错误。我能够使用Thaiphoon Burner Freeware Version
在Windows PC上成功读取DDR4