A small further development: Found out there was actually a BIOS setting to enable SPD write after all. Because this is an overclocking board. It was just buried in a mess of menus / almost impossible to find. I enabled the option and rebooted. Unfortunately enabling the SPD write, it did not change any of the bad behaviour. dmesg -w [ 147.799024] i801_smbus 0000:00:1f.4: SPD Write Disable is set [ 147.799056] i801_smbus 0000:00:1f.4: SMBus using PCI interrupt [ 351.051412] ee1004 2-0050: 512 byte EE1004-compliant SPD EEPROM, read-only [ 351.051425] i2c i2c-2: new_device: Instantiated device ee1004 at 0x50 [ 362.268407] ee1004 2-0052: 512 byte EE1004-compliant SPD EEPROM, read-only [ 362.268426] i2c i2c-2: new_device: Instantiated device ee1004 at 0x52 [ 378.888376] ee1004 2-0050: Failed to select page 0 (-6) So my suspicion / hunch is that: * Perhaps this is something missing or broken in the ee1004 driver, that fails with these ASUS motherboards Is it that this ee1004 driver was not used for quite a while? And only came back recently for the DDR4 support. Than maybe that would make some sense. And if ASUS was not specifically tested as a hardware configuration. Could be doing some strange thing perhaps. Standing in-between mapping the smbus to access the RAM. It's just a hunch. Really I have no idea! Best guess. On Mon, Apr 15, 2019 at 3:45 PM Dreamcat4 <dreamcat4@xxxxxxxxx> wrote: > > On Mon, Apr 15, 2019 at 2:24 PM Jean Delvare <jdelvare@xxxxxxx> wrote: > > > > On Mon, 15 Apr 2019 14:47:12 +0300, Jarkko Nikula wrote: > > > On 4/12/19 9:42 PM, Jean Delvare wrote: > > > > Jarkko, are you aware of any setting of the Z370 SMBus controller that > > > > would block writes to I2C address 0x36? I have a vague memory of some > > > > setting that aimed at protecting SPD EEPROMs but as I remember it was > > > > only for address range 0x50-0x57. But I don't remember the details to > > > > be honest. > > > > > > Not sure but specification for SMBus Host Configuration register (0x40) > > > bit SPD Write Disable (SPDWD) says only 0x50-0x57: > > > > > > "When this bit is set to 1, writes to SMBus addresses 50h – 57h are > > > disabled. Note: This bit is R/WO and will be reset on PLTRST# assertion. > > > This bit should be set by BIOS to ‘1’. Software can only program this > > > bit when both the START bit and Host Busy bit are ‘0’; otherwise, the > > > write may result in undefined behavior." > > > > Thanks Jarkko, that's what I found as well when looking specifically in > > the datasheet of the Z370 chipset. > > > > From the dump provided by Dreamcat4: > > > > > 40: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > > The SPD protection is indeed enabled, as I would expect. But it should > > not affect SPD page selection which is in address range 0x30-0x37. > > > > Anyway it's not possible to disable the SPD protection at run-time, as > > the bit is Write-Once according to the spreadsheet. > > > > I'm out of idea, sorry. The only thing I can suggest is to try > > different memory modules on this mainboard, and/or these memory modules > > on another mainboard, to figure out if the problem comes from the > > memory modules or the mainboard. > > Jean, I have just tried different ram kit in same motherboard. And it > does not seem to be doing much differently, its same behaviour, same > error messages. > > [root:~] # ./decode-dimms.new > Cannot read /sys/bus/i2c/drivers/ee1004/2-0050/eeprom at > ./decode-dimms.new line 2358. > > dmesg -w > [ 763.518594] ee1004 2-0050: Failed to select page 0 (-6) > > > decode-dimms (older version with ubuntu distribution): > > [root:/] # decode-dimms > No EEPROM found, try loading the eeprom or at24 module > [root:/] # decode-dimms > No EEPROM found, try loading the eeprom or at24 module > [root:/] # decode-dimms > No EEPROM found, try loading the eeprom or at24 module > [root:/] # decode-dimms > No EEPROM found, try loading the eeprom or at24 module > [root:/] # > > > other command: > [root:/] # modprobe i2c-dev > [root:/] # i2cdetect 2 > Error: Could not open file `/dev/i2c-2' or `/dev/i2c/2': No such file > or directory > [root:/] 1 # cd /sys/bus/i2c/devices/ > [root:/sys/bus/i2c/devices] # ls > i2c-0 i2c-1 > [root:/sys/bus/i2c/devices] # sudo modprobe i2c-i801 > [root:/sys/bus/i2c/devices] # ls > i2c-0 i2c-1 i2c-2 > [root:/sys/bus/i2c/devices] # modprobe ee1004 > [root:/sys/bus/i2c/devices] # > [root:/sys/bus/i2c/devices] # > [root:/sys/bus/i2c/devices] # i2cdetect 2 > WARNING! This program can confuse your I2C bus, cause data loss and worse! > I will probe file /dev/i2c-2. > I will probe address range 0x03-0x77. > Continue? [Y/n] y > 0 1 2 3 4 5 6 7 8 9 a b c d e f > 00: -- -- -- -- -- 08 -- -- -- -- -- -- -- > 10: -- -- -- -- -- -- -- -- 18 -- 1a -- -- -- -- -- > 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > 30: 30 31 -- -- 34 35 -- -- -- -- -- -- -- -- -- -- > 40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- -- > 50: 50 -- 52 -- -- -- -- -- -- -- -- -- -- -- -- -- > 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > 70: -- -- -- -- -- -- -- -- > [root:/sys/bus/i2c/devices] # > [root:/sys/bus/i2c/devices] # modprobe ee1004 > [root:/sys/bus/i2c/devices] # > > > > > > > dmesg -w > [ 271.121124] i801_smbus 0000:00:1f.4: SPD Write Disable is set > [ 271.121155] i801_smbus 0000:00:1f.4: SMBus using PCI interrupt > > > [ 413.409031] ee1004 2-0050: 512 byte EE1004-compliant SPD EEPROM, read-only > [ 413.409044] i2c i2c-2: new_device: Instantiated device ee1004 at 0x50 > > [ 425.137122] ee1004 2-0052: 512 byte EE1004-compliant SPD EEPROM, read-only > [ 425.137139] i2c i2c-2: new_device: Instantiated device ee1004 at 0x52 > > [ 620.196055] ee1004 2-0050: Currently selected page: 1 > [ 620.196056] ee1004 2-0050: 512 byte EE1004-compliant SPD EEPROM, read-only > [ 620.196275] ee1004 2-0052: Currently selected page: 1 > [ 620.196276] ee1004 2-0052: 512 byte EE1004-compliant SPD EEPROM, read-only > > > > > > > > > You could also try your memory modules separately, in case the problem > > is a bad interaction between the 2. The SPD page selection is kind of a > > broadcast command, affecting all memory modules at once, and I'm not > > really sure what would happen if one module behaves OK and the other > > not. > > > > -- > > Jean Delvare > > SUSE L3 Support