Package: i2c-tools
Version: 4.3-2
Severity: normal
X-Debbugs-Cc: serfyo...@yandex.ru
Dear Maintainer,
Problems:
1. I want to see the contents of the SPD for each memory strip, but decode-dimms
(the i2c-tools 4.3-2 package) does not give this for this motherboard. But I see
it in the BIOS on computers boot and can change it.
2. Systems with more than 4 memory slots not supported yet, not instantiating
SPD.
I solved this problem, which I described below.
# decode-dimms
# decode-dimms version 4.3-2
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
No EEPROM found, the kernel probably does not support your hardware.
Motherboard Asus P9X79pro 2011 year
Chipset: Intel X79 Express Chipset
8 memory slots
8xDIMM. max 64 GB, DDR3 2400(O.C.)/2133(O.C.)/1866/1600/1033/1066 Mhz, non-ECC,
un-buffered memory
Quad channel memory architecture
Supports Intel Extreme Memory Profile (XMP)
Hyper DIMM support is subject to the physical characteristics of infividual
CPUs.
Processor: Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz
Overclocked to 4.400 GHz with stepping 44.
For memory strips:
Kingston HyperX Fury HX316C10FRK2/16 2x8Gb
Kingston HyperX Fury HX316C10FWK2/16 2x8Gb
Kingston HyperX KHX16C10B1R/84x8Gb
I believe there are enough motherboards with 8 memory slots.
Debian-11.3.0 64 Sid
Kernel: Linux 5.17.0-2-amd64 (SMP w/8 CPU threads)
Linux 5.17.0-2-amd64 #1 SMP PREEMPT Debian 5.17.6-1 (2022-05-11) x86_64
GNU/Linux
Kernel driver i2c-i801
Intel Patsburg (PCH)
./i2c-tools-4.3/eeprom/
line 2618
sub get_dimm_list
{
my (@drivers, $driver, $dir, $opened, $file, @files);
if ($use_sysfs) {
@drivers = ('eeprom',
'at24',
'ee1004'); # DDR4
} else {
@drivers = ('eeprom');
$dir = '/proc/sys/dev/sensors';
}
foreach $driver (@drivers) {
if ($use_sysfs) {
$dir = "/sys/bus/i2c/drivers/$driver";
}
next unless opendir(local *DIR, $dir);
$opened++;
while (defined($file = readdir(DIR))) {
if ($use_sysfs) {
# We look for I2C devices like 0-0050 or 2-0051
next unless $file =~ /^\d+-[\da-f]+$/i;
next unless -d "$dir/$file";
# Device name must be eeprom (driver eeprom)
# spd (driver at24) or ee1004 (driver ee1004)
my $attr = sysfs_device_attribute("$dir/$file",
"name");
next unless defined $attr &&
($attr eq "eeprom" ||
$attr eq "spd" ||
$attr eq "ee1004");# DDR4
} else {
next unless $file =~ /^eeprom-/;
}
push @files, { eeprom => "$file",
file => "$dir/$file",
driver => "$driver" };
}
close(DIR);
}
if (!$opened) {
print STDERR "No EEPROM found, try loading the eeprom, at24 or
ee1004 module\n";
exit;
}
return sort { $a->{file} cmp $b->{file} } @files;
}
/var/log/messages
Dec 3 05:28:15 A1 kernel: [1.322527] i801_smbus :00:1f.3: SMBus using
PCI interrupt
Dec 3 05:28:15 A1 kernel: [1.322911] i2c i2c-0: 4/8 memory slots populated
(from DMI)
Dec 3 05:28:15 A1 kernel: [1.322914] i2c i2c-0: Systems with more than 4
memory slots not supported yet, not instantiating SPD
/var/log/syslog
Dec 3 05:28:15 A1 kernel: [1.322527] i801_smbus :00:1f.3: SMBus using
PCI interrupt
Dec 3 05:28:15 A1 kernel: [1.322911] i2c i2c-0: 4/8 memory slots populated
(from DMI)
Dec 3 05:28:15 A1 kernel: [1.322914] i2c i2c-0: Systems with more than 4
memory slots not supported yet, not instantiating SPD
/var/log/kern.log
Dec 3 05:28:15 A1 kernel: [1.322527] i801_smbus :00:1f.3: SMBus using
PCI interrupt
Dec 3 05:28:15 A1 kernel: [1.322911] i2c i2c-0: 4/8 memory slots populated
(from DMI)
Dec 3 05:28:15 A1 kernel: [1.322914] i2c i2c-0: Systems with more than 4
memory slots not supported