> -----Original Message-----
> Sent: Saturday, April 12, 2025 11:17 AM
> Subject: [PATCH] dmidecode: Use binary unit prefixes
> 
> The SMBIOS 3.7.1 specification updated all unit size references to
> comply with IEC 60027, that is, use binary prefixes (KiB, MiB...) to
> express memory size instead of the inaccurate SI prefixes (kB,
> MB...). Update the code to embrace this clarification.
...

>  void dmi_print_memory_size(const char *attr, u64 code, int shift)
> +             "bytes", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB"

> @@ -331,7 +331,7 @@ static void dmi_bios_runtime_size(u32 co
> +             format = "%u KiB";


>  static void dmi_bios_rom_size(u8 code1, u16 code2)
> +             "MiB", "GiB", out_of_spec, out_of_spec

> @@ -1709,7 +1709,7 @@ static void dmi_memory_module_size(const
> +                     pr_attr(attr, "%u MiB%s", 1 << (code & 0x7F),


> @@ -2767,11 +2767,11 @@ static void dmi_memory_device_extended_s
> +             pr_attr("Size", "%lu MiB", (unsigned long)code);
> +             pr_attr("Size", "%lu GiB", (unsigned long)code >> 10);
> +             pr_attr("Size", "%lu TiB", (unsigned long)code >> 20);

>  static void dmi_memory_voltage_value(const char *attr, u16 code)
> +                     pr_attr("Maximum Memory Module Size", "%u MiB",
> +                     pr_attr("Maximum Total Memory Size", "%u MiB",

As discussed in 2018, I still think it'd be good to have a generic helper
that selects the biggest unit size without rounding and use that for
all the size prints. See
https://lists.gnu.org/archive/html/dmidecode-devel/2018-12/msg00005.html

Make any unexpected values be more obvious.

Reply via email to