2024-03-27 08:34:22

by Paul Menzel

[permalink] [raw]
Subject: [PATCH] i2c: smbus: Add (LP)DDR5 types to `i2c_register_spd()`

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 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].

I use the same name as for DDR4 out of ignorance.

[1]: https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.6.0.pdf
[2]: https://github.com/linuxhw/Dmesg
---
drivers/i2c/i2c-smbus.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c
index 97f338b123b1..0d67a95c0599 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)
@@ -380,6 +380,8 @@ void i2c_register_spd(struct i2c_adapter *adap)
break;
case 0x1A: /* DDR4 */
case 0x1E: /* LPDDR4 */
+ case 0x22: /* DDR5 */
+ case 0x23: /* LPDDR5 */
name = "ee1004";
break;
default:
--
2.43.0



2024-04-26 07:11:46

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH] i2c: smbus: Add (LP)DDR5 types to `i2c_register_spd()`

Hi Paul,

(adding Jean)

On Wed, Mar 27, 2024 at 09:33:55AM +0100, 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 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].
>
> I use the same name as for DDR4 out of ignorance.

So, you didn't test it on DDR5 on your own? I'd like to have it tested.
The document you referenced does only mention I2C but the wikipedia
article [3] mentions I3C. It will probably support I2C fallback, but
I'd like to be sure.

[3] https://en.wikipedia.org/wiki/Serial_presence_detect

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

[1] and [2] are mixed up.

Thanks for the patch!

Wolfram


Attachments:
(No filename) (1.31 kB)
signature.asc (849.00 B)
Download all attachments