mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Xiaotian Feng <xtfeng@gmail.com>
To: Mike Travis <travis@sgi.com>
Cc: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Roland Dreier <rdreier@cisco.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Jack Steiner <steiner@sgi.com>,
	x86@kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] x86: Limit the number of processor bootup messages
Date: Tue, 19 Jan 2010 13:07:23 +0800	[thread overview]
Message-ID: <7b6bb4a51001182107n1929d36ch358687062f65d37b@mail.gmail.com> (raw)
In-Reply-To: <4B219E28.8080601@sgi.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 11358 bytes --]

Could we consider such cases that system doesn't have a large numberof processors? This commit makes my system bootup message ugly ....
CPU0: Intel(R) Core(TM)2 Quad CPU    Q9400  @ 2.66GHz stepping 0alockdep: fixing up alternatives.Booting Node   0, Processors  #1lockdep: fixing up alternatives. #2lockdep: fixing up alternatives. #3Brought up 4 CPUsTotal of 4 processors activated (21278.36 BogoMIPS).
So if num_present_cpus < nr_cpu_ids, the output will never print OK.....And the output is also twisted with lockdep prints...
On Fri, Dec 11, 2009 at 9:19 AM, Mike Travis <travis@sgi.com> wrote:> x86: Limit the number of processor bootup messages>> When there are a large number of processors in a system, there> is an excessive amount of messages sent to the system console.> It's estimated that with 4096 processors in a system, and the> console baudrate set to 56K, the startup messages will take> about 84 minutes to clear the serial port.>> This set of patches limits the number of repetitious messages> which contain no additional information.  Much of this information> is obtainable from the /proc and /sysfs.   Some of the messages> are also sent to the kernel log buffer as KERN_DEBUG messages so> dmesg can be used to examine more closely any details specific to> a problem.>> The new cpu bootup sequence for system_state == SYSTEM_BOOTING:>> Booting Node   0, Processors  #1 #2 #3 #4 #5 #6 #7 Ok.> Booting Node   1, Processors  #8 #9 #10 #11 #12 #13 #14 #15 Ok.> ...> Booting Node   3, Processors  #56 #57 #58 #59 #60 #61 #62 #63 Ok.> Brought up 64 CPUs>> After the system is running, a single line boot message is displayed> when CPU's are hotplugged on:>>   Booting Node %d Processor %d APIC 0x%x>>> Status of the following lines:>>   CPU: Physical Processor ID:          printed once (for boot cpu)>   CPU: Processor Core ID:              printed once (for boot cpu)>   CPU: Hyper-Threading is disabled     printed once (for boot cpu)>   CPU: Thermal monitoring enabled      printed once (for boot cpu)>   CPU %d/0x%x -> Node %d:              removed>   CPU %d is now offline:               only if system_state == RUNNING>   Initializing CPU#%d:         KERN_DEBUG>> Signed-off-by: Mike Travis <travis@sgi.com>> ---> arch/x86/kernel/cpu/addon_cpuid_features.c |   15 +++++----> arch/x86/kernel/cpu/amd.c                  |    2 -> arch/x86/kernel/cpu/common.c               |    8 +++--> arch/x86/kernel/cpu/intel.c                |    2 -> arch/x86/kernel/cpu/mcheck/therm_throt.c   |    4 +-> arch/x86/kernel/smpboot.c                  |   45> +++++++++++++++++++----------> 6 files changed, 47 insertions(+), 29 deletions(-)>> --- linux.orig/arch/x86/kernel/cpu/addon_cpuid_features.c> +++ linux/arch/x86/kernel/cpu/addon_cpuid_features.c> @@ -74,6 +74,7 @@>        unsigned int eax, ebx, ecx, edx, sub_index;>        unsigned int ht_mask_width, core_plus_mask_width;>        unsigned int core_select_mask, core_level_siblings;> +       static bool printed;>>        if (c->cpuid_level < 0xb)>                return;> @@ -127,12 +128,14 @@>>        c->x86_max_cores = (core_level_siblings / smp_num_siblings);>> -> -       printk(KERN_INFO  "CPU: Physical Processor ID: %d\n",> -              c->phys_proc_id);> -       if (c->x86_max_cores > 1)> -               printk(KERN_INFO  "CPU: Processor Core ID: %d\n",> -                      c->cpu_core_id);> +       if (!printed) {> +               printk(KERN_INFO  "CPU: Physical Processor ID: %d\n",> +                      c->phys_proc_id);> +               if (c->x86_max_cores > 1)> +                       printk(KERN_INFO  "CPU: Processor Core ID: %d\n",> +                              c->cpu_core_id);> +               printed = 1;> +       }>        return;> #endif> }> --- linux.orig/arch/x86/kernel/cpu/amd.c> +++ linux/arch/x86/kernel/cpu/amd.c> @@ -375,8 +375,6 @@>                        node = nearby_node(apicid);>        }>        numa_set_node(cpu, node);> -> -       printk(KERN_INFO "CPU %d/0x%x -> Node %d\n", cpu, apicid, node);> #endif> }>> --- linux.orig/arch/x86/kernel/cpu/common.c> +++ linux/arch/x86/kernel/cpu/common.c> @@ -427,6 +427,7 @@> #ifdef CONFIG_X86_HT>        u32 eax, ebx, ecx, edx;>        int index_msb, core_bits;> +       static bool printed;>>        if (!cpu_has(c, X86_FEATURE_HT))>                return;> @@ -442,7 +443,7 @@>        smp_num_siblings = (ebx & 0xff0000) >> 16;>>        if (smp_num_siblings == 1) {> -               printk(KERN_INFO  "CPU: Hyper-Threading is disabled\n");> +               printk_once(KERN_INFO "CPU0: Hyper-Threading is> disabled\n");>                goto out;>        }>> @@ -469,11 +470,12 @@>                                       ((1 << core_bits) - 1);>> out:> -       if ((c->x86_max_cores * smp_num_siblings) > 1) {> +       if (!printed && (c->x86_max_cores * smp_num_siblings) > 1) {>                printk(KERN_INFO  "CPU: Physical Processor ID: %d\n",>                       c->phys_proc_id);>                printk(KERN_INFO  "CPU: Processor Core ID: %d\n",>                       c->cpu_core_id);> +               printed = 1;>        }> #endif> }> @@ -1115,7 +1117,7 @@>        if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask))>                panic("CPU#%d already initialized!\n", cpu);>> -       printk(KERN_INFO "Initializing CPU#%d\n", cpu);> +       pr_debug("Initializing CPU#%d\n", cpu);>>        clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE);>> --- linux.orig/arch/x86/kernel/cpu/intel.c> +++ linux/arch/x86/kernel/cpu/intel.c> @@ -266,8 +266,6 @@>        if (node == NUMA_NO_NODE || !node_online(node))>                node = first_node(node_online_map);>        numa_set_node(cpu, node);> -> -       printk(KERN_INFO "CPU %d/0x%x -> Node %d\n", cpu, apicid, node);> #endif> }>> --- linux.orig/arch/x86/kernel/cpu/mcheck/therm_throt.c> +++ linux/arch/x86/kernel/cpu/mcheck/therm_throt.c> @@ -339,8 +339,8 @@>        l = apic_read(APIC_LVTTHMR);>        apic_write(APIC_LVTTHMR, l & ~APIC_LVT_MASKED);>> -       printk(KERN_INFO "CPU%d: Thermal monitoring enabled (%s)\n",> -              cpu, tm2 ? "TM2" : "TM1");> +       printk_once(KERN_INFO "CPU0: Thermal monitoring enabled (%s)\n",> +                      tm2 ? "TM2" : "TM1");>>        /* enable thermal throttle processing */>        atomic_set(&therm_throt_en, 1);> --- linux.orig/arch/x86/kernel/smpboot.c> +++ linux/arch/x86/kernel/smpboot.c> @@ -671,6 +671,26 @@>        complete(&c_idle->done);> }>> +/* reduce the number of lines printed when booting a large cpu count system> */> +static void __cpuinit announce_cpu(int cpu, int apicid)> +{> +       static int current_node = -1;> +       int node = cpu_to_node(cpu);> +> +       if (system_state == SYSTEM_BOOTING) {> +               if (node != current_node) {> +                       if (current_node > (-1))> +                               pr_cont(" Ok.\n");> +                       current_node = node;> +                       pr_info("Booting Node %3d, Processors ", node);> +               }> +               pr_cont(" #%d%s", cpu, cpu == (nr_cpu_ids - 1) ? " Ok.\n" :> "");> +               return;> +       } else> +               pr_info("Booting Node %d Processor %d APIC 0x%x\n",> +                       node, cpu, apicid);> +}> +> /*>  * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad>  * (ie clustered apic addressing mode), this is a LOGICAL apic ID.> @@ -736,9 +756,8 @@>        /* start_ip had better be page-aligned! */>        start_ip = setup_trampoline();>> -       /* So we see what's up   */> -       printk(KERN_INFO "Booting processor %d APIC 0x%x ip 0x%lx\n",> -                         cpu, apicid, start_ip);> +       /* So we see what's up */> +       announce_cpu(cpu, apicid);>>        /*>         * This grunge runs the startup process for> @@ -787,21 +806,17 @@>                        udelay(100);>                }>> -               if (cpumask_test_cpu(cpu, cpu_callin_mask)) {> -                       /* number CPUs logically, starting from 1 (BSP is 0)> */> -                       pr_debug("OK.\n");> -                       printk(KERN_INFO "CPU%d: ", cpu);> -                       print_cpu_info(&cpu_data(cpu));> -                       pr_debug("CPU has booted.\n");> -               } else {> +               if (cpumask_test_cpu(cpu, cpu_callin_mask))> +                       pr_debug("CPU%d: has booted.\n", cpu);> +               else {>                        boot_error = 1;>                        if (*((volatile unsigned char *)trampoline_base)>                                        == 0xA5)>                                /* trampoline started but...? */> -                               printk(KERN_ERR "Stuck ??\n");> +                               pr_err("CPU%d: Stuck ??\n", cpu);>                        else>                                /* trampoline code not run */> -                               printk(KERN_ERR "Not responding.\n");> +                               pr_err("CPU%d: Not responding.\n", cpu);>                        if (apic->inquire_remote_apic)>                                apic->inquire_remote_apic(apicid);>                }> @@ -1291,14 +1306,16 @@>        for (i = 0; i < 10; i++) {>                /* They ack this in play_dead by setting CPU_DEAD */>                if (per_cpu(cpu_state, cpu) == CPU_DEAD) {> -                       printk(KERN_INFO "CPU %d is now offline\n", cpu);> +                       if (system_state == SYSTEM_RUNNING)> +                               pr_info("CPU %u is now offline\n", cpu);> +>                        if (1 == num_online_cpus())>                                alternatives_smp_switch(0);>                        return;>                }>                msleep(100);>        }> -       printk(KERN_ERR "CPU %u didn't die...\n", cpu);> +       pr_err("CPU %u didn't die...\n", cpu);> }>> void play_dead_common(void)>> --> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in> the body of a message to majordomo@vger.kernel.org> More majordomo info at  http://vger.kernel.org/majordomo-info.html> Please read the FAQ at  http://www.tux.org/lkml/>ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

  parent reply	other threads:[~2010-01-19  5:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-11  1:19 Mike Travis
2009-12-12  0:15 ` [tip:x86/urgent] " tip-bot for Mike Travis
2010-01-19  5:07 ` Xiaotian Feng [this message]
2010-01-19 15:22   ` [PATCH] " Mike Travis
  -- strict thread matches above, loose matches on Subject: below --
2009-11-18  0:22 [PATCH 0/5] Limit console output by suppressing repetitious messages Mike Travis
2009-11-18  0:22 ` [PATCH 1/5] x86: Limit the number of processor bootup messages Mike Travis
2009-11-26  9:15   ` Ingo Molnar
2009-11-27 21:29     ` [PATCH] " Mike Travis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7b6bb4a51001182107n1929d36ch358687062f65d37b@mail.gmail.com \
    --to=xtfeng@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rdreier@cisco.com \
    --cc=steiner@sgi.com \
    --cc=tglx@linutronix.de \
    --cc=travis@sgi.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®