diff options
-rw-r--r-- | arch/x86/kernel/microcode_amd.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c index e8a68c2a4364..9129c6981c5b 100644 --- a/arch/x86/kernel/microcode_amd.c +++ b/arch/x86/kernel/microcode_amd.c | |||
@@ -71,6 +71,9 @@ struct microcode_amd { | |||
71 | 71 | ||
72 | static struct equiv_cpu_entry *equiv_cpu_table; | 72 | static struct equiv_cpu_entry *equiv_cpu_table; |
73 | 73 | ||
74 | /* page-sized ucode patch buffer */ | ||
75 | void *patch; | ||
76 | |||
74 | static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig) | 77 | static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig) |
75 | { | 78 | { |
76 | struct cpuinfo_x86 *c = &cpu_data(cpu); | 79 | struct cpuinfo_x86 *c = &cpu_data(cpu); |
@@ -351,9 +354,14 @@ static struct microcode_ops microcode_amd_ops = { | |||
351 | 354 | ||
352 | struct microcode_ops * __init init_amd_microcode(void) | 355 | struct microcode_ops * __init init_amd_microcode(void) |
353 | { | 356 | { |
357 | patch = (void *)get_zeroed_page(GFP_KERNEL); | ||
358 | if (!patch) | ||
359 | return NULL; | ||
360 | |||
354 | return µcode_amd_ops; | 361 | return µcode_amd_ops; |
355 | } | 362 | } |
356 | 363 | ||
357 | void __exit exit_amd_microcode(void) | 364 | void __exit exit_amd_microcode(void) |
358 | { | 365 | { |
366 | free_page((unsigned long)patch); | ||
359 | } | 367 | } |