linux 无法访问AMD EPYC上的SPD信息

bvjxkvbb  于 2023-04-29  发布在  Linux
关注(0)|答案(1)|浏览(249)

背景

我正在尝试通过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/,但我不认为这些模块能解决我的问题。

uurity8g

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

相关问题