无法访问 AMD EPYC 上的 SPD 信息

问题描述 投票:0回答:1

背景

我正在尝试通过 CentOS 7 Linux 上的 i2c 访问串行存在检测数据。我主要寻找位于字节 1 的 SPD 修订版,并且在 DDR3DDR4 图表上是一致的。 SPD 修订版无法通过 dmidecode、lshw 或任何其他标准 linux 软件包找到,并且在某些情况下无法通过 Passmark 的 Memtestx86 检测到,这让我走上了这条路。我还使用 smbus2 库制作了一个 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/ 但我认为这些模块不会解决我的问题。

linux linux-kernel i2c eeprom smbus
1个回答
0
投票

以防其他人在未来偶然发现这个问题,我建议观看 Jean Delvare 的视频演示。他从本质上解释了 DDR3 之后系统可读性的差异,并使我们的选择很少。

内核食谱 2019 - 内存自动配置 (SPD) 的奇迹

没有明显的 Linux 解决方案,您最好的选择可能是 dmidecode as i2c。 PassMark 的 RAMMon 和 Memtest86 都显示“未检测到 SPD”错误。我能够使用以下方法在我的 Windows PC 上成功读取 DDR4 Thaiphoon Burner 免费版

© www.soinside.com 2019 - 2024. All rights reserved.