Skip to contentSkip to conversation

x86/microcode changes for v3.3

GIT PULL Ingo Molnar 1 participant 1 message Jan 5, 2012 x86

lore
Share & tools
lore
#0 lore raw

Linus,

Please pull the latest x86-microcode-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-microcode-for-linus

Thanks,

Ingo

------------------>
Borislav Petkov (5):
x86, microcode, AMD: Add a vendor-specific exit function x86, microcode, AMD: Add a reusable buffer x86, microcode, AMD: Simplify ucode verification x86, microcode, AMD: Exit early on success x86, microcode, AMD: Update copyrights

 arch/x86/include/asm/microcode.h |    2 +
 arch/x86/kernel/microcode_amd.c  |  209 +++++++++++++++++++++-----------------
 arch/x86/kernel/microcode_core.c |    5 +
 3 files changed, 121 insertions(+), 95 deletions(-)
arch/x86/include/asm/microcode.h +2 -0
index 2421507..4ebe157 100644
@@ -48,6 +48,7 @@ static inline struct microcode_ops * __init init_intel_microcode(void)
 
 #ifdef CONFIG_MICROCODE_AMD
 extern struct microcode_ops * __init init_amd_microcode(void);
+extern void __exit exit_amd_microcode(void);
 
 static inline void get_ucode_data(void *to, const u8 *from, size_t n)
 {
@@ -59,6 +60,7 @@ static inline struct microcode_ops * __init init_amd_microcode(void)
 {
 	return NULL;
 }
+static inline void __exit exit_amd_microcode(void) {}
 #endif
 
 #endif /* _ASM_X86_MICROCODE_H */
arch/x86/kernel/microcode_amd.c +114 -95

298 lines not on this page · raw message

arch/x86/kernel/microcode_core.c +5 -0
index 9d46f5e..9302e2d 100644
@@ -563,6 +563,8 @@ module_init(microcode_init);
 
 static void __exit microcode_exit(void)
 {
+	struct cpuinfo_x86 *c = &cpu_data(0);
+
 	microcode_dev_exit();
 
 	unregister_hotcpu_notifier(&mc_cpu_notifier);
@@ -580,6 +582,9 @@ static void __exit microcode_exit(void)
 
 	microcode_ops = NULL;
 
+	if (c->x86_vendor == X86_VENDOR_AMD)
+		exit_amd_microcode();
+
 	pr_info("Microcode Update Driver: v" MICROCODE_VERSION " removed.\n");
 }
 module_exit(microcode_exit);