diff options
author | Fenghua Yu <fenghua.yu@intel.com> | 2012-12-21 02:44:24 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-01-31 16:19:06 -0500 |
commit | e6ebf5deaaaa33b661f0db86380c232b162bd68c (patch) | |
tree | a90eb68a9a610a47ed6cbdf8a554252c02172b16 /arch/x86/kernel | |
parent | d288e1cf8e62f3e4034f1f021f047009c4ac0b3c (diff) |
x86/common.c: load ucode in 64 bit or show loading ucode info in 32 bit on AP
In 64 bit, load ucode on AP in cpu_init().
In 32 bit, show ucode loading info on AP in cpu_init(). Microcode has been
loaded earlier before paging. Now it is safe to show the loading microcode
info on this AP.
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Link: http://lkml.kernel.org/r/1356075872-3054-5-git-send-email-fenghua.yu@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index d7fd2468752a..d814772c5bed 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -1220,6 +1220,12 @@ void __cpuinit cpu_init(void) | |||
1220 | int cpu; | 1220 | int cpu; |
1221 | int i; | 1221 | int i; |
1222 | 1222 | ||
1223 | /* | ||
1224 | * Load microcode on this cpu if a valid microcode is available. | ||
1225 | * This is early microcode loading procedure. | ||
1226 | */ | ||
1227 | load_ucode_ap(); | ||
1228 | |||
1223 | cpu = stack_smp_processor_id(); | 1229 | cpu = stack_smp_processor_id(); |
1224 | t = &per_cpu(init_tss, cpu); | 1230 | t = &per_cpu(init_tss, cpu); |
1225 | oist = &per_cpu(orig_ist, cpu); | 1231 | oist = &per_cpu(orig_ist, cpu); |
@@ -1311,6 +1317,8 @@ void __cpuinit cpu_init(void) | |||
1311 | struct tss_struct *t = &per_cpu(init_tss, cpu); | 1317 | struct tss_struct *t = &per_cpu(init_tss, cpu); |
1312 | struct thread_struct *thread = &curr->thread; | 1318 | struct thread_struct *thread = &curr->thread; |
1313 | 1319 | ||
1320 | show_ucode_info_early(); | ||
1321 | |||
1314 | if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) { | 1322 | if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) { |
1315 | printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); | 1323 | printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); |
1316 | for (;;) | 1324 | for (;;) |