Re: [PATCH v5 5/5] x86/CPU/AMD: Print AGESA string from DMI additional information entry
From: Borislav Petkov
Date: Sun Mar 15 2026 - 09:14:42 EST
On Fri, Jan 23, 2026 at 03:30:56PM -0600, Mario Limonciello (AMD) wrote:
> From: Yazen Ghannam <yazen.ghannam@xxxxxxx>
>
> Type 40 entries (Additional Information) are summarized in section 7.41
> as part of the SMBIOS specification. Generally, these entries aren't
> interesting to save.
>
> However on some AMD Zen systems, the AGESA version is stored here. This
> is useful to save to the kernel message logs for debugging. It can be
> used to cross-reference issues.
>
> Implement an iterator for the Additional Information entries. Use this
> to find and print the AGESA string. Do so in AMD code, since the use
> case is AMD-specific.
Look what I said the last time:
https://lore.kernel.org/r/20260126130755.GIaXdnK65MTIiXqg-l@fat_crate.local
I'll have to teach AI to give feedback for commit messages explaining the
diff.
> Signed-off-by: Yazen Ghannam <yazen.ghannam@xxxxxxx>
> Co-developed-by: "Mario Limonciello (AMD)" <superm1@xxxxxxxxxx>
> Signed-off-by: "Mario Limonciello (AMD)" <superm1@xxxxxxxxxx>
> ---
> v5:
> * Return "" in !CONFIG_DMI case (LKP robot, Yazen)
> v4:
> * New patch (based upon older versions though)
> ---
> arch/x86/kernel/cpu/amd.c | 53 +++++++++++++++++++++++++++++++++++++
> drivers/firmware/dmi_scan.c | 3 ++-
> include/linux/dmi.h | 18 +++++++++++++
> 3 files changed, 73 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index bc94ff1e250ad..aa04a27aeb107 100644
> --- a/arch/x86/kernel/cpu/amd.c
> +++ b/arch/x86/kernel/cpu/amd.c
> @@ -1,6 +1,7 @@
> // SPDX-License-Identifier: GPL-2.0-only
> #include <linux/export.h>
> #include <linux/bitops.h>
> +#include <linux/dmi.h>
> #include <linux/elf.h>
> #include <linux/mm.h>
> #include <linux/kvm_types.h>
> @@ -1404,3 +1405,55 @@ static __init int print_s5_reset_status_mmio(void)
> return 0;
> }
> late_initcall(print_s5_reset_status_mmio);
> +
> +static void __init amd_dmi_scan_additional(const struct dmi_header *d, void *p)
> +{
> + struct dmi_a_info *info = (struct dmi_a_info *)d;
> + void *next, *end;
> +
> + /*
> + * DMI Additional Info table has a 'count' field. But it's not very
> + * helpful since the entries are variable length. So don't use it.
> + */
> + if (info->header.type != DMI_ENTRY_ADDITIONAL ||
> + info->header.length < DMI_A_INFO_MIN_SIZE)
> + return;
> +
> + /*
> + * Get the first entry.
> + * The minimum table size guarantees at least one entry is present.
> + */
> + next = (void *)(info + 1);
> + end = (void *)info + info->header.length;
>From last time:
"This end needs to be corrected to some sane upper limit because we don't trust
firmware one bit."
Lemme stop review here until you address all review comments from the last
time.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette