Blob Blame History Raw
From: Arnd Bergmann <arnd@arndb.de>
Date: Tue, 25 Jul 2023 14:17:39 +0200
Subject: x86/cpu: Fix amd_check_microcode() declaration
Git-commit: 566ffa3ae9649f7aa1debcf559ee7e26ed4a110f
Patch-mainline: v6.6-rc1
References: git-fixes

The newly added amd_check_microcode() function has two conflicting definitions
if CONFIG_CPU_SUP_AMD is enabled and CONFIG_MICROCODE_AMD is disabled. Since
the header with the stub definition is not included in cpu/amd.c, this only
causes a -Wmissing-prototype warning with W=1:

  arch/x86/kernel/cpu/amd.c:1289:6: error: no previous prototype for 'amd_check_microcode' [-Werror=missing-prototypes]

Adding the missing #include shows the other problem:

  arch/x86/kernel/cpu/amd.c:1290:6: error: redefinition of 'amd_check_microcode'
  arch/x86/include/asm/microcode_amd.h:58:20: note: previous definition of 'amd_check_microcode' with type 'void(void)'

Move the declaration into a more appropriate header that is already
included, with the #ifdef check changed to match the definition's.

Fixes: 522b1d69219d8 ("x86/cpu/amd: Add a Zenbleed fix")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20230725121751.2007665-1-arnd@kernel.org

Acked-by: nborisov <nik.borisov@suse.com>
---
 arch/x86/include/asm/microcode_amd.h |    2 --
 arch/x86/include/asm/processor.h     |    2 ++
 2 files changed, 2 insertions(+), 2 deletions(-)

--- a/arch/x86/include/asm/microcode_amd.h
+++ b/arch/x86/include/asm/microcode_amd.h
@@ -47,13 +47,11 @@ extern void __init load_ucode_amd_bsp(un
 extern void load_ucode_amd_ap(unsigned int family);
 extern int __init save_microcode_in_initrd_amd(unsigned int family);
 void reload_ucode_amd(void);
-extern void amd_check_microcode(void);
 #else
 static inline void __init load_ucode_amd_bsp(unsigned int family) {}
 static inline void load_ucode_amd_ap(unsigned int family) {}
 static inline int __init
 save_microcode_in_initrd_amd(unsigned int family) { return -EINVAL; }
 static inline void reload_ucode_amd(void) {}
-static inline void amd_check_microcode(void) {};
 #endif
 #endif /* _ASM_X86_MICROCODE_AMD_H */
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -948,9 +948,11 @@ extern u32 amd_get_nodes_per_socket(void
 #ifdef CONFIG_CPU_SUP_AMD
 extern bool cpu_has_ibpb_brtype_microcode(void);
 extern void amd_clear_divider(void);
+extern void amd_check_microcode(void);
 #else
 bool cpu_has_ibpb_brtype_microcode(void) { return false;}
 static inline void amd_clear_divider(void)		{ }
+static inline void amd_check_microcode(void)		{ }
 #endif