Problem:
I believe there are enough motherboards with 8 memory slots. I would like to see the contents of the SPD memory slots via decode-dimms, but there is only support for up to 4 slots in the Linux kernel I2C bus, inclusive.Description:
Motherboard Asus P9X79pro 2011 year 8 memory slots
Kernel: Linux 5.15.0-2-amd64 (SMP w/8 CPU threads)
/etc/modules-load.d/:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# we use any of the following three to choose for: eeprom at24 ee1004
at24
i2c_i801
i2c_smbus
i2c-dev
# i2cdetect -l
i2c-0 smbus SMBus I801 adapter at f000 SMBus adapter
i2c-1 i2c nvkm-0000:01:00.0-bus-0000 I2C adapter
i2c-2 i2c nvkm-0000:01:00.0-bus-0001 I2C adapter
i2c-3 i2c nvkm-0000:01:00.0-bus-0002 I2C adapter
/var/log/messages
[ 1.349519] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
[ 1.350413] i2c i2c-0: 8/8 memory slots populated (from DMI)
[ 1.350416] i2c i2c-0: Systems with more than 4 memory slots not supported yet, not instantiating SPD
# decode-dimms
# for 4.2-2+b1
No EEPROM found, the kernel probably does not support your hardware.
# decode-dimms
# decode-dimms version 4.3
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Number of SDRAM DIMMs detected and decoded: 0
# dmidecode:
Handle 0x002E, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelA_Dimm1
Bank Locator: ChannelA
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 4C0F1E75
Asset Tag: ChannelA_Dimm1_AssetTag
Part Number: KHX1600C10D3/8G
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x0030, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelA_Dimm2
Bank Locator: ChannelA
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 360D8537
Asset Tag: ChannelA_Dimm2_AssetTag
Part Number: 9905403-558.A00LF
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x0032, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelB_Dimm1
Bank Locator: ChannelB
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 4B0F776E
Asset Tag: ChannelB_Dimm1_AssetTag
Part Number: KHX1600C10D3/8G
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x0034, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelB_Dimm2
Bank Locator: ChannelB
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 370DA637
Asset Tag: ChannelB_Dimm2_AssetTag
Part Number: 9905403-558.A00LF
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x0036, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelC_Dimm1
Bank Locator: ChannelC
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 1731AE49
Asset Tag: ChannelC_Dimm1_AssetTag
Part Number: KHX1600C10D3/8G
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x0038, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelC_Dimm2
Bank Locator: ChannelC
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 370D9537
Asset Tag: ChannelC_Dimm2_AssetTag
Part Number: 9905403-558.A00LF
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x003A, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelD_Dimm1
Bank Locator: ChannelD
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 1C31AE49
Asset Tag: ChannelD_Dimm1_AssetTag
Part Number: KHX1600C10D3/8G
Rank: 2
Configured Memory Speed: 1600 MT/s
Handle 0x003C, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: ChannelD_Dimm2
Bank Locator: ChannelD
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MT/s
Manufacturer: Kingston
Serial Number: 360D9637
Asset Tag: ChannelD_Dimm2_AssetTag
Part Number: 9905403-558.A00LF
Rank: 2
Configured Memory Speed: 1600 MT/s
linux-source-5.15/drivers/i2c/i2c-smbus.c
line 358:
if (slot_count > 4) {
dev_warn(&adap->dev,
"Systems with more than 4 memory slots not supported yet, not instantiating SPD\n");
return;
}
Houp:
Can someone suggest how to reach the kernel developers?
A good place to read about the way Linux Kernel development works is https://kernelnewbies.org/ site. For more information how to reach kernel developers, you could read the FoundBug subpage.
In this particular case, you could find a developer who wrote/maintains this code and contact him directly with your request. All kernel development is done in open so you can find the patch submission for example on patchwork
As you can see there, the patches were signed off by Jean Delvare, who happens to be the maintainer for most of the I2C/SMBus controller drivers in Linux, as can be seen in maintainers list.
Contacting the developer directly is not the only possibility. Probably the better choice would be to use a proper mailing list, which, again, can be found in the mainainters list linked above.
That being said, the fact you can reach kernel developers like that, does not mean you should, unless of course, you want to propose the patch yourself.