diff mbox series

i2c: smbus: Log (LP)DDR5 type specific unimplemented message in `i2c_register_spd()`

Message ID 20240530183444.9312-2-pmenzel@molgen.mpg.de
State New
Headers show
Series i2c: smbus: Log (LP)DDR5 type specific unimplemented message in `i2c_register_spd()` | expand

Commit Message

Paul Menzel May 30, 2024, 6:34 p.m. UTC
On several systems Linux logs:

     i2c i2c-0: Memory type 0x22 not supported yet, not instantiating SPD

1.  Supermicro Super Server/X13SAE, BIOS 2.0 10/17/2022
2.  Dell Inc. Precision 3660/0PRR48, BIOS 2.9.3 11/22/2023
3.  Dell Inc. OptiPlex SFF Plus 7010/0YGWFV, BIOS 1.7.1 08/11/2023
4.  Run `git grep 'emory type.*supported yet, not instantiating SPD'` in
    the repository of dmesg reports for various computers collected by
    Linux users at https://linux-hardware.org. [1]

Add 0x22 and 0x23 as memory types for DDR5 according to section 7.18.2
(Memory Device — Type), table 78 in *System Management BIOS (SMBIOS)
Reference Specification*, version 3.6.0 [2]. These use JEDEC JESD300-5 for
SPD, and, currently, no driver exists, so add a specific warning for this
case.

Successfully tested on Supermicro Super Server/X13SAE, BIOS 2.0 10/17/2022:

    i2c i2c-0: (LP)DDR5 SPD (memory type 0x22) not supported. JEDEC JESD300-5 compatible driv er does not exist yet, not instantiating SPD

    $ sudo dmidecode -t memory
    # dmidecode 3.3
    Getting SMBIOS data from sysfs.
    SMBIOS 3.5.0 present.
    # SMBIOS implementations newer than version 3.3.0 are not
    # fully supported by this version of dmidecode.

    Handle 0x001C, DMI type 16, 23 bytes
    Physical Memory Array
    	Location: System Board Or Motherboard
    	Use: System Memory
    	Error Correction Type: None
    	Maximum Capacity: 128 GB
    	Error Information Handle: Not Provided
    	Number Of Devices: 4

    Handle 0x001D, DMI type 17, 92 bytes
    Memory Device
    	Array Handle: 0x001C
    	Error Information Handle: Not Provided
    	Total Width: 64 bits
    	Data Width: 64 bits
    	Size: 32 GB
    	Form Factor: DIMM
    	Set: None
    	Locator: DIMMA1
    	Bank Locator: P0_Node0_Channel0_Dimm0
    	Type: <OUT OF SPEC>
    	Type Detail: Synchronous Unbuffered (Unregistered)
    	Speed: 4800 MT/s
    	Manufacturer: Samsung
    	Serial Number: 80CE01225004143D90
    	Asset Tag: 9876543210
    	Part Number: M323R4GA3BB0-CQKOL
    	Rank: 2
    	Configured Memory Speed: 3600 MT/s
    	Minimum Voltage: 1.1 V
    	Maximum Voltage: 1.1 V
    	Configured Voltage: 1.1 V
    	Memory Technology: DRAM
    	Memory Operating Mode Capability: Volatile memory
    	Firmware Version: Not Specified
    	Module Manufacturer ID: Bank 1, Hex 0xCE
    	Module Product ID: Unknown
    	Memory Subsystem Controller Manufacturer ID: Unknown
    	Memory Subsystem Controller Product ID: Unknown
    	Non-Volatile Size: None
    	Volatile Size: 32 GB
    	Cache Size: None
    	Logical Size: None

    Handle 0x001E, DMI type 17, 92 bytes
    Memory Device
    	Array Handle: 0x001C
    	Error Information Handle: Not Provided
    	Total Width: 64 bits
    	Data Width: 64 bits
    	Size: 32 GB
    	Form Factor: DIMM
    	Set: None
    	Locator: DIMMA2
    	Bank Locator: P0_Node0_Channel0_Dimm1
    	Type: <OUT OF SPEC>
    	Type Detail: Synchronous Unbuffered (Unregistered)
    	Speed: 4800 MT/s
    	Manufacturer: Samsung
    	Serial Number: 80CE01225004143D96
    	Asset Tag: 9876543210
    	Part Number: M323R4GA3BB0-CQKOL
    	Rank: 2
    	Configured Memory Speed: 3600 MT/s
    	Minimum Voltage: 1.1 V
    	Maximum Voltage: 1.1 V
    	Configured Voltage: 1.1 V
    	Memory Technology: DRAM
    	Memory Operating Mode Capability: Volatile memory
    	Firmware Version: Not Specified
    	Module Manufacturer ID: Bank 1, Hex 0xCE
    	Module Product ID: Unknown
    	Memory Subsystem Controller Manufacturer ID: Unknown
    	Memory Subsystem Controller Product ID: Unknown
    	Non-Volatile Size: None
    	Volatile Size: 32 GB
    	Cache Size: None
    	Logical Size: None

    Handle 0x001F, DMI type 17, 92 bytes
    Memory Device
    	Array Handle: 0x001C
    	Error Information Handle: Not Provided
    	Total Width: 64 bits
    	Data Width: 64 bits
    	Size: 32 GB
    	Form Factor: DIMM
    	Set: None
    	Locator: DIMMB1
    	Bank Locator: P0_Node0_Channel1_Dimm0
    	Type: <OUT OF SPEC>
    	Type Detail: Synchronous Unbuffered (Unregistered)
    	Speed: 4800 MT/s
    	Manufacturer: Samsung
    	Serial Number: 80CE01225004142720
    	Asset Tag: 9876543210
    	Part Number: M323R4GA3BB0-CQKOL
    	Rank: 2
    	Configured Memory Speed: 3600 MT/s
    	Minimum Voltage: 1.1 V
    	Maximum Voltage: 1.1 V
    	Configured Voltage: 1.1 V
    	Memory Technology: DRAM
    	Memory Operating Mode Capability: Volatile memory
    	Firmware Version: Not Specified
    	Module Manufacturer ID: Bank 1, Hex 0xCE
    	Module Product ID: Unknown
    	Memory Subsystem Controller Manufacturer ID: Unknown
    	Memory Subsystem Controller Product ID: Unknown
    	Non-Volatile Size: None
    	Volatile Size: 32 GB
    	Cache Size: None
    	Logical Size: None

    Handle 0x0020, DMI type 17, 92 bytes
    Memory Device
    	Array Handle: 0x001C
    	Error Information Handle: Not Provided
    	Total Width: 64 bits
    	Data Width: 64 bits
    	Size: 32 GB
    	Form Factor: DIMM
    	Set: None
    	Locator: DIMMB2
    	Bank Locator: P0_Node0_Channel1_Dimm1
    	Type: <OUT OF SPEC>
    	Type Detail: Synchronous Unbuffered (Unregistered)
    	Speed: 4800 MT/s
    	Manufacturer: Samsung
    	Serial Number: 80CE0122500414276A
    	Asset Tag: 9876543210
    	Part Number: M323R4GA3BB0-CQKOL
    	Rank: 2
    	Configured Memory Speed: 3600 MT/s
    	Minimum Voltage: 1.1 V
    	Maximum Voltage: 1.1 V
    	Configured Voltage: 1.1 V
    	Memory Technology: DRAM
    	Memory Operating Mode Capability: Volatile memory
    	Firmware Version: Not Specified
    	Module Manufacturer ID: Bank 1, Hex 0xCE
    	Module Product ID: Unknown
    	Memory Subsystem Controller Manufacturer ID: Unknown
    	Memory Subsystem Controller Product ID: Unknown
    	Non-Volatile Size: None
    	Volatile Size: 32 GB
    	Cache Size: None
    	Logical Size: None

[1]: https://github.com/linuxhw/Dmesg
[2]: https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.6.0.pdf

Cc: Jean Delvare <jdelvare@suse.de>
Link: https://lore.kernel.org/all/20240427094603.b266oz2d5oaar4b3@ninjato/
Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
---
 drivers/i2c/i2c-smbus.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Thomas Weißschuh May 30, 2024, 8:01 p.m. UTC | #1
On 2024-05-30 20:34:43+0000, Paul Menzel wrote:
> On several systems Linux logs:
> 
>      i2c i2c-0: Memory type 0x22 not supported yet, not instantiating SPD
> 
> 1.  Supermicro Super Server/X13SAE, BIOS 2.0 10/17/2022
> 2.  Dell Inc. Precision 3660/0PRR48, BIOS 2.9.3 11/22/2023
> 3.  Dell Inc. OptiPlex SFF Plus 7010/0YGWFV, BIOS 1.7.1 08/11/2023
> 4.  Run `git grep 'emory type.*supported yet, not instantiating SPD'` in
>     the repository of dmesg reports for various computers collected by
>     Linux users at https://linux-hardware.org. [1]
> 
> Add 0x22 and 0x23 as memory types for DDR5 according to section 7.18.2
> (Memory Device — Type), table 78 in *System Management BIOS (SMBIOS)
> Reference Specification*, version 3.6.0 [2]. These use JEDEC JESD300-5 for
> SPD, and, currently, no driver exists, so add a specific warning for this
> case.

There is a SPD5118 driver coming up, which will handle DDR5 chips [0].

[0] https://lore.kernel.org/lkml/20240529205204.81208-1-linux@roeck-us.net/
Wolfram Sang May 30, 2024, 8:54 p.m. UTC | #2
> There is a SPD5118 driver coming up, which will handle DDR5 chips [0].
> 
> [0] https://lore.kernel.org/lkml/20240529205204.81208-1-linux@roeck-us.net/

=== Quote

Note: The driver introduced with this patch series does not currently
support accessing the SPD5118 EEPROM, or accessing SPD5118 compatible
chips in I3C mode.

===

Sadly, no cigar yet, we need the EEPROM support.
diff mbox series

Patch

diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c
index 97f338b123b11..f87f8e1383cc7 100644
--- a/drivers/i2c/i2c-smbus.c
+++ b/drivers/i2c/i2c-smbus.c
@@ -308,7 +308,7 @@  EXPORT_SYMBOL_GPL(i2c_free_slave_host_notify_device);
  * target systems are the same.
  * Restrictions to automatic SPD instantiation:
  *  - Only works if all filled slots have the same memory type
- *  - Only works for DDR, DDR2, DDR3 and DDR4 for now
+ *  - Only works for DDR, DDR2, DDR3, DDR4 and DDR5 for now
  *  - Only works on systems with 1 to 8 memory slots
  */
 #if IS_ENABLED(CONFIG_DMI)
@@ -382,6 +382,12 @@  void i2c_register_spd(struct i2c_adapter *adap)
 	case 0x1E:	/* LPDDR4 */
 		name = "ee1004";
 		break;
+	case 0x22:	/* DDR5 */
+	case 0x23:	/* LPDDR5 */
+		dev_info(&adap->dev,
+			 "(LP)DDR5 SPD (memory type 0x%02x) not supported. JEDEC JESD300-5 compatible driver does not exist yet, not instantiating SPD\n",
+			 common_mem_type);
+		return;
 	default:
 		dev_info(&adap->dev,
 			 "Memory type 0x%02x not supported yet, not instantiating SPD\n",