diff options
-rw-r--r-- | arch/x86/kernel/cpu/addon_cpuid_features.c | 15 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/amd.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 8 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/intel.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/therm_throt.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot.c | 45 |
6 files changed, 47 insertions, 29 deletions
diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c index c965e5212714..468489b57aae 100644 --- a/arch/x86/kernel/cpu/addon_cpuid_features.c +++ b/arch/x86/kernel/cpu/addon_cpuid_features.c | |||
@@ -74,6 +74,7 @@ void __cpuinit detect_extended_topology(struct cpuinfo_x86 *c) | |||
74 | unsigned int eax, ebx, ecx, edx, sub_index; | 74 | unsigned int eax, ebx, ecx, edx, sub_index; |
75 | unsigned int ht_mask_width, core_plus_mask_width; | 75 | unsigned int ht_mask_width, core_plus_mask_width; |
76 | unsigned int core_select_mask, core_level_siblings; | 76 | unsigned int core_select_mask, core_level_siblings; |
77 | static bool printed; | ||
77 | 78 | ||
78 | if (c->cpuid_level < 0xb) | 79 | if (c->cpuid_level < 0xb) |
79 | return; | 80 | return; |
@@ -127,12 +128,14 @@ void __cpuinit detect_extended_topology(struct cpuinfo_x86 *c) | |||
127 | 128 | ||
128 | c->x86_max_cores = (core_level_siblings / smp_num_siblings); | 129 | c->x86_max_cores = (core_level_siblings / smp_num_siblings); |
129 | 130 | ||
130 | 131 | if (!printed) { | |
131 | printk(KERN_INFO "CPU: Physical Processor ID: %d\n", | 132 | printk(KERN_INFO "CPU: Physical Processor ID: %d\n", |
132 | c->phys_proc_id); | 133 | c->phys_proc_id); |
133 | if (c->x86_max_cores > 1) | 134 | if (c->x86_max_cores > 1) |
134 | printk(KERN_INFO "CPU: Processor Core ID: %d\n", | 135 | printk(KERN_INFO "CPU: Processor Core ID: %d\n", |
135 | c->cpu_core_id); | 136 | c->cpu_core_id); |
137 | printed = 1; | ||
138 | } | ||
136 | return; | 139 | return; |
137 | #endif | 140 | #endif |
138 | } | 141 | } |
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 7128b3799cec..8dc3ea145c97 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -375,8 +375,6 @@ static void __cpuinit srat_detect_node(struct cpuinfo_x86 *c) | |||
375 | node = nearby_node(apicid); | 375 | node = nearby_node(apicid); |
376 | } | 376 | } |
377 | numa_set_node(cpu, node); | 377 | numa_set_node(cpu, node); |
378 | |||
379 | printk(KERN_INFO "CPU %d/0x%x -> Node %d\n", cpu, apicid, node); | ||
380 | #endif | 378 | #endif |
381 | } | 379 | } |
382 | 380 | ||
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index c1afa990a6c8..0ee9a3254eec 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -427,6 +427,7 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
427 | #ifdef CONFIG_X86_HT | 427 | #ifdef CONFIG_X86_HT |
428 | u32 eax, ebx, ecx, edx; | 428 | u32 eax, ebx, ecx, edx; |
429 | int index_msb, core_bits; | 429 | int index_msb, core_bits; |
430 | static bool printed; | ||
430 | 431 | ||
431 | if (!cpu_has(c, X86_FEATURE_HT)) | 432 | if (!cpu_has(c, X86_FEATURE_HT)) |
432 | return; | 433 | return; |
@@ -442,7 +443,7 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
442 | smp_num_siblings = (ebx & 0xff0000) >> 16; | 443 | smp_num_siblings = (ebx & 0xff0000) >> 16; |
443 | 444 | ||
444 | if (smp_num_siblings == 1) { | 445 | if (smp_num_siblings == 1) { |
445 | printk(KERN_INFO "CPU: Hyper-Threading is disabled\n"); | 446 | printk_once(KERN_INFO "CPU0: Hyper-Threading is disabled\n"); |
446 | goto out; | 447 | goto out; |
447 | } | 448 | } |
448 | 449 | ||
@@ -469,11 +470,12 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
469 | ((1 << core_bits) - 1); | 470 | ((1 << core_bits) - 1); |
470 | 471 | ||
471 | out: | 472 | out: |
472 | if ((c->x86_max_cores * smp_num_siblings) > 1) { | 473 | if (!printed && (c->x86_max_cores * smp_num_siblings) > 1) { |
473 | printk(KERN_INFO "CPU: Physical Processor ID: %d\n", | 474 | printk(KERN_INFO "CPU: Physical Processor ID: %d\n", |
474 | c->phys_proc_id); | 475 | c->phys_proc_id); |
475 | printk(KERN_INFO "CPU: Processor Core ID: %d\n", | 476 | printk(KERN_INFO "CPU: Processor Core ID: %d\n", |
476 | c->cpu_core_id); | 477 | c->cpu_core_id); |
478 | printed = 1; | ||
477 | } | 479 | } |
478 | #endif | 480 | #endif |
479 | } | 481 | } |
@@ -1115,7 +1117,7 @@ void __cpuinit cpu_init(void) | |||
1115 | if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) | 1117 | if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) |
1116 | panic("CPU#%d already initialized!\n", cpu); | 1118 | panic("CPU#%d already initialized!\n", cpu); |
1117 | 1119 | ||
1118 | printk(KERN_INFO "Initializing CPU#%d\n", cpu); | 1120 | pr_debug("Initializing CPU#%d\n", cpu); |
1119 | 1121 | ||
1120 | clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE); | 1122 | clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE); |
1121 | 1123 | ||
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index c900b73f9224..9c31e8b09d2c 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
@@ -270,8 +270,6 @@ static void __cpuinit srat_detect_node(struct cpuinfo_x86 *c) | |||
270 | node = cpu_to_node(cpu); | 270 | node = cpu_to_node(cpu); |
271 | } | 271 | } |
272 | numa_set_node(cpu, node); | 272 | numa_set_node(cpu, node); |
273 | |||
274 | printk(KERN_INFO "CPU %d/0x%x -> Node %d\n", cpu, apicid, node); | ||
275 | #endif | 273 | #endif |
276 | } | 274 | } |
277 | 275 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c index 4fef985fc221..1003ed4bbce4 100644 --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c | |||
@@ -339,8 +339,8 @@ void intel_init_thermal(struct cpuinfo_x86 *c) | |||
339 | l = apic_read(APIC_LVTTHMR); | 339 | l = apic_read(APIC_LVTTHMR); |
340 | apic_write(APIC_LVTTHMR, l & ~APIC_LVT_MASKED); | 340 | apic_write(APIC_LVTTHMR, l & ~APIC_LVT_MASKED); |
341 | 341 | ||
342 | printk(KERN_INFO "CPU%d: Thermal monitoring enabled (%s)\n", | 342 | printk_once(KERN_INFO "CPU0: Thermal monitoring enabled (%s)\n", |
343 | cpu, tm2 ? "TM2" : "TM1"); | 343 | tm2 ? "TM2" : "TM1"); |
344 | 344 | ||
345 | /* enable thermal throttle processing */ | 345 | /* enable thermal throttle processing */ |
346 | atomic_set(&therm_throt_en, 1); | 346 | atomic_set(&therm_throt_en, 1); |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 29e6744f51e3..678d0b8c26f3 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -671,6 +671,26 @@ static void __cpuinit do_fork_idle(struct work_struct *work) | |||
671 | complete(&c_idle->done); | 671 | complete(&c_idle->done); |
672 | } | 672 | } |
673 | 673 | ||
674 | /* reduce the number of lines printed when booting a large cpu count system */ | ||
675 | static void __cpuinit announce_cpu(int cpu, int apicid) | ||
676 | { | ||
677 | static int current_node = -1; | ||
678 | int node = cpu_to_node(cpu); | ||
679 | |||
680 | if (system_state == SYSTEM_BOOTING) { | ||
681 | if (node != current_node) { | ||
682 | if (current_node > (-1)) | ||
683 | pr_cont(" Ok.\n"); | ||
684 | current_node = node; | ||
685 | pr_info("Booting Node %3d, Processors ", node); | ||
686 | } | ||
687 | pr_cont(" #%d%s", cpu, cpu == (nr_cpu_ids - 1) ? " Ok.\n" : ""); | ||
688 | return; | ||
689 | } else | ||
690 | pr_info("Booting Node %d Processor %d APIC 0x%x\n", | ||
691 | node, cpu, apicid); | ||
692 | } | ||
693 | |||
674 | /* | 694 | /* |
675 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad | 695 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad |
676 | * (ie clustered apic addressing mode), this is a LOGICAL apic ID. | 696 | * (ie clustered apic addressing mode), this is a LOGICAL apic ID. |
@@ -737,9 +757,8 @@ do_rest: | |||
737 | /* start_ip had better be page-aligned! */ | 757 | /* start_ip had better be page-aligned! */ |
738 | start_ip = setup_trampoline(); | 758 | start_ip = setup_trampoline(); |
739 | 759 | ||
740 | /* So we see what's up */ | 760 | /* So we see what's up */ |
741 | printk(KERN_INFO "Booting processor %d APIC 0x%x ip 0x%lx\n", | 761 | announce_cpu(cpu, apicid); |
742 | cpu, apicid, start_ip); | ||
743 | 762 | ||
744 | /* | 763 | /* |
745 | * This grunge runs the startup process for | 764 | * This grunge runs the startup process for |
@@ -788,21 +807,17 @@ do_rest: | |||
788 | udelay(100); | 807 | udelay(100); |
789 | } | 808 | } |
790 | 809 | ||
791 | if (cpumask_test_cpu(cpu, cpu_callin_mask)) { | 810 | if (cpumask_test_cpu(cpu, cpu_callin_mask)) |
792 | /* number CPUs logically, starting from 1 (BSP is 0) */ | 811 | pr_debug("CPU%d: has booted.\n", cpu); |
793 | pr_debug("OK.\n"); | 812 | else { |
794 | printk(KERN_INFO "CPU%d: ", cpu); | ||
795 | print_cpu_info(&cpu_data(cpu)); | ||
796 | pr_debug("CPU has booted.\n"); | ||
797 | } else { | ||
798 | boot_error = 1; | 813 | boot_error = 1; |
799 | if (*((volatile unsigned char *)trampoline_base) | 814 | if (*((volatile unsigned char *)trampoline_base) |
800 | == 0xA5) | 815 | == 0xA5) |
801 | /* trampoline started but...? */ | 816 | /* trampoline started but...? */ |
802 | printk(KERN_ERR "Stuck ??\n"); | 817 | pr_err("CPU%d: Stuck ??\n", cpu); |
803 | else | 818 | else |
804 | /* trampoline code not run */ | 819 | /* trampoline code not run */ |
805 | printk(KERN_ERR "Not responding.\n"); | 820 | pr_err("CPU%d: Not responding.\n", cpu); |
806 | if (apic->inquire_remote_apic) | 821 | if (apic->inquire_remote_apic) |
807 | apic->inquire_remote_apic(apicid); | 822 | apic->inquire_remote_apic(apicid); |
808 | } | 823 | } |
@@ -1293,14 +1308,16 @@ void native_cpu_die(unsigned int cpu) | |||
1293 | for (i = 0; i < 10; i++) { | 1308 | for (i = 0; i < 10; i++) { |
1294 | /* They ack this in play_dead by setting CPU_DEAD */ | 1309 | /* They ack this in play_dead by setting CPU_DEAD */ |
1295 | if (per_cpu(cpu_state, cpu) == CPU_DEAD) { | 1310 | if (per_cpu(cpu_state, cpu) == CPU_DEAD) { |
1296 | printk(KERN_INFO "CPU %d is now offline\n", cpu); | 1311 | if (system_state == SYSTEM_RUNNING) |
1312 | pr_info("CPU %u is now offline\n", cpu); | ||
1313 | |||
1297 | if (1 == num_online_cpus()) | 1314 | if (1 == num_online_cpus()) |
1298 | alternatives_smp_switch(0); | 1315 | alternatives_smp_switch(0); |
1299 | return; | 1316 | return; |
1300 | } | 1317 | } |
1301 | msleep(100); | 1318 | msleep(100); |
1302 | } | 1319 | } |
1303 | printk(KERN_ERR "CPU %u didn't die...\n", cpu); | 1320 | pr_err("CPU %u didn't die...\n", cpu); |
1304 | } | 1321 | } |
1305 | 1322 | ||
1306 | void play_dead_common(void) | 1323 | void play_dead_common(void) |