public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
From: Darsey Litzenberger <dlitz@dlitz.net>
To: Stephen Horvath <s.horvath@outlook.com.au>
Cc: Jean Delvare <jdelvare@suse.de>,
	 "linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>,
	Guenter Roeck <linux@roeck-us.net>,
	 Kamil Aronowski <kamil.aronowski@3mdeb.com>
Subject: Re: [PATCH v2 0/6] decode-dimms: Implement DDR5 decoding
Date: Wed, 28 Jan 2026 18:58:36 -0700	[thread overview]
Message-ID: <aXq19uxerWI5SvcX@syra.dlitz.net> (raw)
In-Reply-To: <20251106021356.208986-1-s.horvath@outlook.com.au>

[-- Attachment #1: Type: text/plain, Size: 6996 bytes --]

On Thu, Nov 06, 2025 at 02:14:57AM +0000, Stephen Horvath wrote:
>Hi, this series of patches adds DDR5 support to decode-dimms.
[snip]

I fed the eeprom for one of my RAM sticks into decode-dimms with your 
patches applied, and it seems to output a number of suspicious values 
(at least to me, as someone completely unfamiliar with the JEDEC specs).

This is for a 48 GiB DDR5-5600 ECC SODIMM, not actually made by Micron, 
but a clone sold on eBay[1], so it's possible that its SPD data aren't 
exactly what they should be.  The module is supposedly equivalent to the 
Kingston KSM56T46BD8KM-48HM, which has these specs[2]:

     CL(IDD)                                           46 cycles
     Row Cycle Time (tRCmin)                           48ns(min.)
     Refresh to Active/Refresh Command Time (tRFCmin)  295ns(min.)
     Row Active Time (tRASmin)                         32ns(min.)
     Row Precharge Time (tRPmin)                       16ns(min.)

decode-dimms with your patches says this (with my comments):

>---=== SPD EEPROM Information ===---
>EEPROM CRC of bytes 0-509                        OK (0xB3D5)
># of bytes written to SDRAM EEPROM               1024
>Total number of bytes in EEPROM                  1024
>Fundamental Memory type                          DDR5 SDRAM
>SPD Revision                                     1.0
>Module Type                                      SODIMM
>
>---=== Memory Characteristics ===---
>Maximum module speed                             5600 MT/s (PC5-22400)

That should be PC5-44800, not PC5-22400.  Maybe you're forgetting to 
double the clock speed due to DDR doing two transfers per cycle?

>Size                                             40 GB

It should be 48 GiB, not 40.  dmidecode correctly shows it as "48 GB".

>Banks x Rows x Columns x Bits                    32 x 17 x 10 x 32
>SDRAM Device Width                               8 bits
>Ranks                                            2
>Rank Mix                                         Symmetrical
>Primary Bus Width                                32 bits
>Bus Width Extension                              4 bits
>AA-RCD-RP-RAS (cycles)                           46-45-45-90
>Supported CAS Latencies                          50T, 46T, 42T, 40T, 36T, 32T, 30T, 28T, 26T, 22T
>
>---=== Timings at Standard Speeds ===---
>AA-RCD-RP-RAS (cycles) as DDR5-5600              46-45-45-90
>AA-RCD-RP-RAS (cycles) as DDR5-5200              46-42-42-84
>AA-RCD-RP-RAS (cycles) as DDR5-4800              40-39-39-77
>AA-RCD-RP-RAS (cycles) as DDR5-4400              40-36-36-71
>AA-RCD-RP-RAS (cycles) as DDR5-4000              36-32-32-64
>AA-RCD-RP-RAS (cycles) as DDR5-3600              30-29-29-58
>AA-RCD-RP-RAS (cycles) as DDR5-3200              28-26-26-52
>
>---=== Timing Parameters ===---
>Minimum Cycle Time (tCKmin)                      0.357 ns
>Maximum Cycle Time (tCKmax)                      1.000 ns
>Minimum CAS Latency Time (tAA)                   16.000 ns
>Minimum RAS to CAS Delay (tRCD)                  16.000 ns
>Minimum Row Precharge Delay (tRP)                16.000 ns
>Minimum Active to Precharge Delay (tRAS)         32.000 ns
>Minimum Active to Auto-Refresh Delay (tRC)       48.000 ns
>Minimum Recovery Delay (tRFC1)                   0.410 ns
>Minimum Recovery Delay (tRFC2)                   0.220 ns
>Minimum Recovery Delay (tRFCsb)                  0.190 ns
>Minimum Four Activate Window Delay (tFAW)        11.428 ns (32 cycles)
>Minimum Row Active to Row Active Delay (tRRD_L)  5.000 ns (8 cycles)
>Minimum CAS to CAS Delay (tCCD_L)                5.000 ns (8 cycles)
>Minimum Write Recovery Time (tWR)                30.000 ns
>Minimum Write to Read Time (tWTR_S)              2.500 ns (4 cycles)
>Minimum Write to Read Time (tWTR_L)              10.000 ns (16 cycles)

Are those sub-nanosecond timing values reasonable?  I'm not familiar 
with the JEDEC specs so I don't know if tRFC1/tRFC2/tRFCsb should be 
that much smaller than the specified tRFCmin, but the discrepancy looks 
suspicious to me.

>---=== Other Information ===---
>Package Type                                     Monolithic
>Post Package Repair                              One row per bank
>Soft PPR Undo/Lock                               Not Supported
>MBIST PPR                                        Not Supported
>Module Nominal Voltage                           1.1 V
>Thermal Sensor                                   No
>
>---=== Common Information ===---
>SPD Module Info Revision                         1.0
>SPD Manufacturer                                 IDT
>PMIC0 Manufacturer                               Richtek Power
>
>---=== Physical Characteristics ===---
>Module Height                                    32 mm
>Module Thickness                                 2 mm front, 2 mm back
>Module Reference Card                            E revision 0
>
>---=== Manufacturer Data ===---
>Module Manufacturer                              Micron Technology
>DRAM Manufacturer                                Micron Technology
>Manufacturing Location Code                      0x01
>Manufacturing Date                               2025-W44
>Assembly Serial Number                           0xFE0E0000
>Part Number                                      MB48G56S80M2R8.RtR
>Revision Code                                    0x11
>DRAM Stepping                                    G
>
>
>Number of SDRAM DIMMs detected and decoded: 1

Here's a hexdump of the SPD EEPROM, and I've included the dmidecode 
output as an attachment.

--[snip]--
00000000: 3010 1203 0501 2062 0000 0000 9002 0000  0..... b........
00000010: 0000 0000 6501 f203 7aad 0000 0000 803e  ....e...z......>
00000020: 803e 803e 007d 80bb 3075 9a01 dc00 be00  .>.>.}..0u......
00000030: 0000 0000 0000 d400 0000 d400 0000 d400  ................
00000040: 0000 d400 0000 8813 0888 1308 204e 2010  ............ N .
00000050: 2710 a42c 2010 2710 c409 044c 1d0c 0000  '.., .'....L....
00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000000c0: 1000 80b3 8015 8a8c 8220 0000 0000 0000  ......... ......
000000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000e0: 0000 0000 0000 1111 0481 082a 0000 0000  ...........*....
000000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000001f0: 0000 0000 0000 0000 0000 0000 0000 d5b3  ................
00000200: 802c 0125 44fe 0e00 004d 4234 3847 3536  .,.%D....MB48G56
00000210: 5338 304d 3252 382e 5274 5220 2020 2020  S80M2R8.RtR
00000220: 2020 2020 2020 2011 802c 4734 3233 3330         ..,G42330
00000230: 3134 3933 0000 0000 0000 0000 0000 0000  1493............
00000240: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000003f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--[snip]--

[1] https://web.archive.org/web/20260129012956/https://www.ebay.ca/itm/205158078392
[2] https://www.kingston.com/datasheets/KSM56T46BD8KM-48HM.pdf

-- 
Darsey Litzenberger <dlitz@dlitz.net>

[-- Attachment #2: 48gb-ram-spd-eeprom.bin.xxd --]
[-- Type: text/plain, Size: 1230 bytes --]

00000000: 3010 1203 0501 2062 0000 0000 9002 0000  0..... b........
00000010: 0000 0000 6501 f203 7aad 0000 0000 803e  ....e...z......>
00000020: 803e 803e 007d 80bb 3075 9a01 dc00 be00  .>.>.}..0u......
00000030: 0000 0000 0000 d400 0000 d400 0000 d400  ................
00000040: 0000 d400 0000 8813 0888 1308 204e 2010  ............ N .
00000050: 2710 a42c 2010 2710 c409 044c 1d0c 0000  '.., .'....L....
00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000000c0: 1000 80b3 8015 8a8c 8220 0000 0000 0000  ......... ......
000000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000e0: 0000 0000 0000 1111 0481 082a 0000 0000  ...........*....
000000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000001f0: 0000 0000 0000 0000 0000 0000 0000 d5b3  ................
00000200: 802c 0125 44fe 0e00 004d 4234 3847 3536  .,.%D....MB48G56
00000210: 5338 304d 3252 382e 5274 5220 2020 2020  S80M2R8.RtR     
00000220: 2020 2020 2020 2011 802c 4734 3233 3330         ..,G42330
00000230: 3134 3933 0000 0000 0000 0000 0000 0000  1493............
00000240: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000003f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

[-- Attachment #3: dmidecode-memory.txt --]
[-- Type: text/plain, Size: 1535 bytes --]

# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.7.0 present.

Handle 0x0013, DMI type 16, 23 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: Multi-bit ECC
	Maximum Capacity: 64 GB
	Error Information Handle: 0x0012
	Number Of Devices: 2

Handle 0x0016, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x0013
	Error Information Handle: 0x0015
	Total Width: Unknown
	Data Width: Unknown
	Size: No Module Installed
	Form Factor: Unknown
	Set: None
	Locator: DIMM 0
	Bank Locator: P0 CHANNEL A
	Type: Unknown
	Type Detail: Unknown

Handle 0x0018, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x0013
	Error Information Handle: 0x0017
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 48 GB
	Form Factor: SODIMM
	Set: None
	Locator: DIMM 0
	Bank Locator: P0 CHANNEL B
	Type: DDR5
	Type Detail: Synchronous Unbuffered (Unregistered)
	Speed: 5600 MT/s
	Manufacturer: Micron Technology
	Serial Number: FE0E0000
	Asset Tag: Not Specified
	Part Number: MB48G56S80M2R8.RtR            
	Rank: 2
	Configured Memory Speed: 5600 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: Unknown
	Module Manufacturer ID: Bank 1, Hex 0x2C
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 48 GB
	Cache Size: None
	Logical Size: None


[-- Attachment #4: dmidecode-memory-u.txt --]
[-- Type: text/plain, Size: 1512 bytes --]

# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.7.0 present.

Handle 0x0013, DMI type 16, 23 bytes
	Header and Data:
		10 17 13 00 03 03 06 00 00 00 04 12 00 02 00 00
		00 00 00 00 00 00 00

Handle 0x0016, DMI type 17, 92 bytes
	Header and Data:
		11 5C 16 00 13 00 15 00 FF FF FF FF 00 00 02 00
		01 02 02 04 00 00 00 03 04 00 05 00 00 00 00 00
		00 00 00 00 00 00 00 00 02 04 00 06 00 00 00 00
		00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
		00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
		00 00 00 00 00 00 00 00 00 00 00 00
	Strings:
		44 49 4D 4D 20 30 00
		DIMM 0
		50 30 20 43 48 41 4E 4E 45 4C 20 41 00
		P0 CHANNEL A
		55 6E 6B 6E 6F 77 6E 00
		Unknown
		55 6E 6B 6E 6F 77 6E 00
		Unknown
		55 6E 6B 6E 6F 77 6E 00
		Unknown
		55 6E 6B 6E 6F 77 6E 00
		Unknown

Handle 0x0018, DMI type 17, 92 bytes
	Header and Data:
		11 5C 18 00 13 00 17 00 48 00 40 00 FF 7F 0D 00
		01 02 22 80 40 E0 15 03 04 00 05 02 00 C0 00 00
		E0 15 4C 04 4C 04 4C 04 03 08 00 06 80 2C 00 00
		00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
		0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
		00 00 00 00 00 00 00 00 00 00 00 00
	Strings:
		44 49 4D 4D 20 30 00
		DIMM 0
		50 30 20 43 48 41 4E 4E 45 4C 20 42 00
		P0 CHANNEL B
		4D 69 63 72 6F 6E 20 54 65 63 68 6E 6F 6C 6F 67
		79 00
		Micron Technology
		46 45 30 45 30 30 30 30 00
		FE0E0000
		4D 42 34 38 47 35 36 53 38 30 4D 32 52 38 2E 52
		74 52 20 20 20 20 20 20 20 20 20 20 20 20 00
		MB48G56S80M2R8.RtR            
		55 6E 6B 6E 6F 77 6E 00
		Unknown


[-- Attachment #5: decode-dimms.txt --]
[-- Type: text/plain, Size: 4188 bytes --]

# Using big-endian 16-bit hex dump
# decode-dimms version 4.4

Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others


Decoding EEPROM: ../48gb-ram-spd-eeprom.bin.xxd

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-509                        OK (0xB3D5)
# of bytes written to SDRAM EEPROM               1024
Total number of bytes in EEPROM                  1024
Fundamental Memory type                          DDR5 SDRAM
SPD Revision                                     1.0
Module Type                                      SODIMM

---=== Memory Characteristics ===---
Maximum module speed                             5600 MT/s (PC5-22400)
Size                                             40 GB
Banks x Rows x Columns x Bits                    32 x 17 x 10 x 32
SDRAM Device Width                               8 bits
Ranks                                            2
Rank Mix                                         Symmetrical
Primary Bus Width                                32 bits
Bus Width Extension                              4 bits
AA-RCD-RP-RAS (cycles)                           46-45-45-90
Supported CAS Latencies                          50T, 46T, 42T, 40T, 36T, 32T, 30T, 28T, 26T, 22T

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR5-5600              46-45-45-90
AA-RCD-RP-RAS (cycles) as DDR5-5200              46-42-42-84
AA-RCD-RP-RAS (cycles) as DDR5-4800              40-39-39-77
AA-RCD-RP-RAS (cycles) as DDR5-4400              40-36-36-71
AA-RCD-RP-RAS (cycles) as DDR5-4000              36-32-32-64
AA-RCD-RP-RAS (cycles) as DDR5-3600              30-29-29-58
AA-RCD-RP-RAS (cycles) as DDR5-3200              28-26-26-52

---=== Timing Parameters ===---
Minimum Cycle Time (tCKmin)                      0.357 ns
Maximum Cycle Time (tCKmax)                      1.000 ns
Minimum CAS Latency Time (tAA)                   16.000 ns
Minimum RAS to CAS Delay (tRCD)                  16.000 ns
Minimum Row Precharge Delay (tRP)                16.000 ns
Minimum Active to Precharge Delay (tRAS)         32.000 ns
Minimum Active to Auto-Refresh Delay (tRC)       48.000 ns
Minimum Recovery Delay (tRFC1)                   0.410 ns
Minimum Recovery Delay (tRFC2)                   0.220 ns
Minimum Recovery Delay (tRFCsb)                  0.190 ns
Minimum Four Activate Window Delay (tFAW)        11.428 ns (32 cycles)
Minimum Row Active to Row Active Delay (tRRD_L)  5.000 ns (8 cycles)
Minimum CAS to CAS Delay (tCCD_L)                5.000 ns (8 cycles)
Minimum Write Recovery Time (tWR)                30.000 ns
Minimum Write to Read Time (tWTR_S)              2.500 ns (4 cycles)
Minimum Write to Read Time (tWTR_L)              10.000 ns (16 cycles)

---=== Other Information ===---
Package Type                                     Monolithic
Post Package Repair                              One row per bank
Soft PPR Undo/Lock                               Not Supported
MBIST PPR                                        Not Supported
Module Nominal Voltage                           1.1 V
Thermal Sensor                                   No

---=== Common Information ===---
SPD Module Info Revision                         1.0
SPD Manufacturer                                 IDT
PMIC0 Manufacturer                               Richtek Power

---=== Physical Characteristics ===---
Module Height                                    32 mm
Module Thickness                                 2 mm front, 2 mm back
Module Reference Card                            E revision 0

---=== Manufacturer Data ===---
Module Manufacturer                              Micron Technology
DRAM Manufacturer                                Micron Technology
Manufacturing Location Code                      0x01
Manufacturing Date                               2025-W44
Assembly Serial Number                           0xFE0E0000
Part Number                                      MB48G56S80M2R8.RtR            
Revision Code                                    0x11
DRAM Stepping                                    G


Number of SDRAM DIMMs detected and decoded: 1

      parent reply	other threads:[~2026-01-29  1:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-06  2:14 [PATCH v2 0/6] decode-dimms: Implement DDR5 decoding Stephen Horvath
2025-11-06  2:14 ` [PATCH v2 1/6] decode-dimms: Implement DDR5 checksum parsing Stephen Horvath
2025-11-06  2:14 ` [PATCH v2 2/6] decode-dimms: Decode DDR5 Manufacturer Data Stephen Horvath
2025-11-06  2:15 ` [PATCH v2 4/6] decode-dimms: Decode DDR5 common module information Stephen Horvath
2025-11-06  2:15 ` [PATCH v2 3/6] decode-dimms: Decode timings and other data for DDR5 Stephen Horvath
2025-11-06  2:15 ` [PATCH v2 5/6] decode-dimms: Add basic decoding of type specific information " Stephen Horvath
2025-11-06  2:15 ` [PATCH v2 6/6] decode-dimms: Decode DDR5 error log Stephen Horvath
2026-01-14 11:55 ` [PATCH v2 0/6] decode-dimms: Implement DDR5 decoding Wolfram Sang
2026-01-29  1:58 ` Darsey Litzenberger [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aXq19uxerWI5SvcX@syra.dlitz.net \
    --to=dlitz@dlitz.net \
    --cc=jdelvare@suse.de \
    --cc=kamil.aronowski@3mdeb.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=s.horvath@outlook.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox