Bug#1011069: decode-dimms does not detect SPD for kingston memory strips

2022-05-17 Thread Aurelien Jarno
control: reassign -1 src:linux
control: forcemerge 1001286 -1

On 2022-05-16 17:47, Сергей Фёдоров wrote:
> 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.

decode-dimms uses the kernel spd or ee1004 drivers to access the content
of the EEPROM, and only parses the content. If your SPD EEPROM are not
recognized by the kernel, nothing can be done on the i2c-tools side. I
am therefore reassigning the bug to the kernel and merging it with the
one you already opened there.

> 2. Systems with more than 4 memory slots not supported yet, not instantiating 
> SPD.
> I solved this problem, which I described below.

Just increasing the limit from 4 to 8 won't make things work. The reason
for the limit is that above 4 DIMMs, the EEPROM are usually placed
behind a I2C mux (probably the chip at address 0x44 on your system).
Support for that needs to be added to the kernel.

Regards,
Aurelien

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net



Bug#1011069: decode-dimms does not detect SPD for kingston memory strips

2022-05-16 Thread Сергей Фёдоров
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