diff options
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r-- | arch/x86/kernel/smpboot.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 8c3aca7cb343..7ed9e070a6e9 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -282,6 +282,8 @@ static void __cpuinit smp_callin(void) | |||
282 | cpu_set(cpuid, cpu_callin_map); | 282 | cpu_set(cpuid, cpu_callin_map); |
283 | } | 283 | } |
284 | 284 | ||
285 | static int __cpuinitdata unsafe_smp; | ||
286 | |||
285 | /* | 287 | /* |
286 | * Activate a secondary processor. | 288 | * Activate a secondary processor. |
287 | */ | 289 | */ |
@@ -397,7 +399,7 @@ static void __cpuinit smp_apply_quirks(struct cpuinfo_x86 *c) | |||
397 | goto valid_k7; | 399 | goto valid_k7; |
398 | 400 | ||
399 | /* If we get here, not a certified SMP capable AMD system. */ | 401 | /* If we get here, not a certified SMP capable AMD system. */ |
400 | add_taint(TAINT_UNSAFE_SMP); | 402 | unsafe_smp = 1; |
401 | } | 403 | } |
402 | 404 | ||
403 | valid_k7: | 405 | valid_k7: |
@@ -414,12 +416,10 @@ static void __cpuinit smp_checks(void) | |||
414 | * Don't taint if we are running SMP kernel on a single non-MP | 416 | * Don't taint if we are running SMP kernel on a single non-MP |
415 | * approved Athlon | 417 | * approved Athlon |
416 | */ | 418 | */ |
417 | if (tainted & TAINT_UNSAFE_SMP) { | 419 | if (unsafe_smp && num_online_cpus() > 1) { |
418 | if (num_online_cpus()) | 420 | printk(KERN_INFO "WARNING: This combination of AMD" |
419 | printk(KERN_INFO "WARNING: This combination of AMD" | 421 | "processors is not suitable for SMP.\n"); |
420 | "processors is not suitable for SMP.\n"); | 422 | add_taint(TAINT_UNSAFE_SMP); |
421 | else | ||
422 | tainted &= ~TAINT_UNSAFE_SMP; | ||
423 | } | 423 | } |
424 | } | 424 | } |
425 | 425 | ||