On AMD Zen platforms that are running AGESA, there is sometimes
DMI additional string for the AGESA version that can be helpful when
debugging an issue. If this string is found output to kernel logs.
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
---
arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index c19c4ee74dd1f..8f44439d3f993 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
#define pr_fmt(fmt) "x86/amd: " fmt
+#include <linux/dmi.h>
#include <linux/export.h>
#include <linux/bitops.h>
#include <linux/elf.h>
@@ -1406,3 +1407,20 @@ static __init int print_s5_reset_status_mmio(void)
return 0;
}
late_initcall(print_s5_reset_status_mmio);
+
+#ifdef CONFIG_DMI
+static __init int print_agesa_dmi_info(void)
+{
+ const struct dmi_device *dev = NULL;
+
+ while ((dev = dmi_find_device(DMI_DEV_TYPE_ADDITIONAL, NULL, dev))) {
+ if (!strncmp(dev->name, "AGESA", 5)) {
+ pr_info("%s\n", dev->name);
+ break;
+ }
+ }
+
+ return 0;
+}
+late_initcall(print_agesa_dmi_info);
+#endif
--
2.43.0
On Tue, Dec 16, 2025 at 06:33:54AM -0600, Mario Limonciello (AMD) wrote:
> On AMD Zen platforms that are running AGESA, there is sometimes
> DMI additional string for the AGESA version that can be helpful when
> debugging an issue. If this string is found output to kernel logs.
>
> Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
> ---
> arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index c19c4ee74dd1f..8f44439d3f993 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
> #define pr_fmt(fmt) "x86/amd: " fmt
>
> +#include <linux/dmi.h>
> #include <linux/export.h>
> #include <linux/bitops.h>
> #include <linux/elf.h>
> @@ -1406,3 +1407,20 @@ static __init int print_s5_reset_status_mmio(void)
> return 0;
> }
> late_initcall(print_s5_reset_status_mmio);
> +
> +#ifdef CONFIG_DMI
> +static __init int print_agesa_dmi_info(void)
> +{
> + const struct dmi_device *dev = NULL;
> +
> + while ((dev = dmi_find_device(DMI_DEV_TYPE_ADDITIONAL, NULL, dev))) {
> + if (!strncmp(dev->name, "AGESA", 5)) {
> + pr_info("%s\n", dev->name);
> + break;
> + }
> + }
> +
> + return 0;
> +}
> +late_initcall(print_agesa_dmi_info);
> +#endif
>
The Zen check is gone. Is that intentional?
If so, then I think the commit message should be tweaked to not mention
Zen systems specifically.
I don't think this is a problem. I think it's better to keep things
generic, if possible.
Thanks,
Yazen
On 12/17/25 3:18 PM, Yazen Ghannam wrote:
> On Tue, Dec 16, 2025 at 06:33:54AM -0600, Mario Limonciello (AMD) wrote:
>> On AMD Zen platforms that are running AGESA, there is sometimes
>> DMI additional string for the AGESA version that can be helpful when
>> debugging an issue. If this string is found output to kernel logs.
>>
>> Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
>> ---
>> arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>>
>> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
>> index c19c4ee74dd1f..8f44439d3f993 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
>> #define pr_fmt(fmt) "x86/amd: " fmt
>>
>> +#include <linux/dmi.h>
>> #include <linux/export.h>
>> #include <linux/bitops.h>
>> #include <linux/elf.h>
>> @@ -1406,3 +1407,20 @@ static __init int print_s5_reset_status_mmio(void)
>> return 0;
>> }
>> late_initcall(print_s5_reset_status_mmio);
>> +
>> +#ifdef CONFIG_DMI
>> +static __init int print_agesa_dmi_info(void)
>> +{
>> + const struct dmi_device *dev = NULL;
>> +
>> + while ((dev = dmi_find_device(DMI_DEV_TYPE_ADDITIONAL, NULL, dev))) {
>> + if (!strncmp(dev->name, "AGESA", 5)) {
>> + pr_info("%s\n", dev->name);
>> + break;
>> + }
>> + }
>> +
>> + return 0;
>> +}
>> +late_initcall(print_agesa_dmi_info);
>> +#endif
>>
>
> The Zen check is gone. Is that intentional?
>
No it's not, it's a good catch. We don't have an AGESA version in
SMBIOS data on pre-zen hardware.
I'll add in a check like we do for print_s5_reset_status_mmio() for the
next spin.
if (!cpu_feature_enabled(X86_FEATURE_ZEN))
return 0;
> If so, then I think the commit message should be tweaked to not mention
> Zen systems specifically.
>
> I don't think this is a problem. I think it's better to keep things
> generic, if possible.
>
> Thanks,
> Yazen
On Wed, Dec 17, 2025 at 03:21:17PM -0600, Mario Limonciello wrote:
> On 12/17/25 3:18 PM, Yazen Ghannam wrote:
> > On Tue, Dec 16, 2025 at 06:33:54AM -0600, Mario Limonciello (AMD) wrote:
> > > On AMD Zen platforms that are running AGESA, there is sometimes
> > > DMI additional string for the AGESA version that can be helpful when
> > > debugging an issue. If this string is found output to kernel logs.
> > >
> > > Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
> > > ---
> > > arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++
> > > 1 file changed, 18 insertions(+)
> > >
> > > diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> > > index c19c4ee74dd1f..8f44439d3f993 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
> > > #define pr_fmt(fmt) "x86/amd: " fmt
> > > +#include <linux/dmi.h>
> > > #include <linux/export.h>
> > > #include <linux/bitops.h>
> > > #include <linux/elf.h>
> > > @@ -1406,3 +1407,20 @@ static __init int print_s5_reset_status_mmio(void)
> > > return 0;
> > > }
> > > late_initcall(print_s5_reset_status_mmio);
> > > +
> > > +#ifdef CONFIG_DMI
> > > +static __init int print_agesa_dmi_info(void)
> > > +{
> > > + const struct dmi_device *dev = NULL;
> > > +
> > > + while ((dev = dmi_find_device(DMI_DEV_TYPE_ADDITIONAL, NULL, dev))) {
> > > + if (!strncmp(dev->name, "AGESA", 5)) {
> > > + pr_info("%s\n", dev->name);
> > > + break;
> > > + }
> > > + }
> > > +
> > > + return 0;
> > > +}
> > > +late_initcall(print_agesa_dmi_info);
> > > +#endif
> > >
> >
> > The Zen check is gone. Is that intentional?
> >
>
> No it's not, it's a good catch. We don't have an AGESA version in SMBIOS
> data on pre-zen hardware.
>
> I'll add in a check like we do for print_s5_reset_status_mmio() for the next
> spin.
>
> if (!cpu_feature_enabled(X86_FEATURE_ZEN))
> return 0;
>
In that case, please consider a wrapper function that checks for Zen and
calls the two functions: AGESA and S5_RESET_STATUS.
Thanks,
Yazen
© 2016 - 2025 Red Hat, Inc.