Hi Alma,

On Tue, 2026-08-25 at 02:31 +0200, Al Ma wrote:
> Control: found 1110749 6.12.101
> Control: retitle 1110749 ee1004: DDR4 SPD cannot be read, decode-dimms fails, 
> “Failed to select page 0 (-6)”
> Control: X-Debbugs-CC: [email protected], [email protected]
> thanks
> 
> 
> Now tested with two equal 32 GB RDIMMs Samsung M393A4K40CB2-CVF installed in 
> DIMM_A1 and DIMM_C1 on ASUS WS C422 PRO/SE with BIOS 4801 with kernel 
> 6.12.101+deb13-amd64. The SPD EEPROM is detected and the ee1004 driver is 
> bound to it, but the driver's attempt to select page 0 fails with -ENXIO. 
> Consequently, the driver's sysfs eeprom attribute cannot be read, and 
> decode-dimms fails. Here is the excerpt from boot time:
> 
> [    8.550652] ipmi_si: Trying ACPI-specified kcs state machine at i/o 
> address 0xca2, slave address 0x20, irq 0
> [    8.596883] input: PC Speaker as /devices/platform/pcspkr/input/input5
> [    8.608418] ee1004 0-0056: Failed to select page 0 (-6)
> [    8.608532] ee1004 0-0056: 512 byte EE1004-compliant SPD EEPROM, read-only
> [    8.774836] videodev: Linux video capture interface: v2.00
> 
> # decode-dimms
> Cannot read /sys/bus/i2c/drivers/ee1004/0-0056/eeprom at 
> /usr/bin/decode-dimms line 2455.
> 
> The SPD device is instantiated at 0x56:
> 
> # dmesg | grep "i2c"| head -1
> [    3.138736] i2c i2c-0: Successfully instantiated SPD at 0x56
> 
> 
> The device at 0x56 is claimed by ee1004 (“UU” below):
> 
> # i2cdetect -y 0
>       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
> 00:                         08 -- -- -- -- -- -- --
> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 30: -- -- -- -- -- -- UU UU -- -- -- -- -- -- -- --
> 40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
> 50: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- --
> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 70: -- -- -- -- -- -- -- --

It is unusual for the EEPROM to live at address 0x56. The valid address
range is 0x50-0x57 but they are usually populated in order, so if you
installed your memory modules following the recommended order, they
would show at 0x50 and either 0x51, 0x52 or 0x54.

I see that your motherboard has 8 memory slots, so it is possible that
the whole address range is used, however, considering that you
installed 2 memory sticks and only one address in the range responded
to the probe, I am reasonably certain that the device at address 0x56
is NOT your memory's SPD EEPROM.

I have some SMBus development experience with Asus server boards and my
bet is that the SPD EEPROMs are not connected directly, but instead are
behind an I2C multiplexer. The first set of memory modules would be on
a first segment behind the multiplexer, at addresses 0x50-0x53, and the
other set of memory modules would be on a second segment behind the
multiplexer, also at addresses 0x50-0x53.

> Direct access to the page-selection addresses 0x36/0x37 fails:
> 
> # i2cget -f -y 0 0x36
> Error: Read failed
> # i2cget -f -y 0 0x37
> Error: Read failed
> 
> (...)
> Could this be related to the way ee1004 attempts to select the SPD
> page on this particular I2C adapter/controller? In particular,
> “Failed to select page 0 (-6)” appears to occur before the actual
> SPD contents can be read.

I believe this is an incorrect detection and the ee1004 driver should
not bind to address 0x56 on i2c-0 in the first place.

Please try unloading the ee1004 driver, then running i2cdetect again.
If addresses 0x36 and 0x37 do not show on the map, this would confirm
my theory.


-- 
Jean Delvare
SUSE L3 Support

Reply via email to