From: Mike Travis <travis@sgi.com>
To: Ingo Molnar <mingo@elte.hu>,
Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Andrew Morton <akpm@linux-foundation.org>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Roland Dreier <rdreier@cisco.com>,
Randy Dunlap <rdunlap@xenotime.net>, Tejun Heo <tj@kernel.org>,
Andi Kleen <andi@firstfloor.org>,
Greg Kroah-Hartman <gregkh@suse.de>,
Yinghai Lu <yhlu.kernel@gmail.com>,
"H. Peter Anvin" <hpa@zytor.com>,
David Rientjes <rientjes@google.com>,
Steven Rostedt <rostedt@goodmis.org>,
Rusty Russell <rusty@rustcorp.com.au>,
Jack Steiner <steiner@sgi.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86, mce: rework output of MCE banks ownership information
Date: Mon, 14 Dec 2009 13:46:41 -0800 [thread overview]
Message-ID: <4B26B241.5010403@sgi.com> (raw)
In-Reply-To: <4B02EE1D.6020302@sgi.com>
Hi Ingo,
When running the latest kernel, I still find these in the output:
[ 0.722553] Booting Node 0, Processors #1
[ 0.811625] CPU 1 MCA banks SHD:0 SHD:1 CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:7 SHD:8 SHD:9 SHD:12 SHD:13 SHD:14 SHD:15 SHD:16 SHD:17 SHD:18 SHD:19 SHD:20 SHD:21
[ 0.812071] #2
[ 0.907468] CPU 2 MCA banks SHD:0 SHD:1 CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:7 SHD:8 SHD:9 SHD:12 SHD:13 SHD:14 SHD:15 SHD:16 SHD:17 SHD:18 SHD:19 SHD:20 SHD:21
[ 0.907918] #3
[ 1.003311] CPU 3 MCA banks SHD:0 SHD:1 CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:7 SHD:8 SHD:9 SHD:12 SHD:13 SHD:14 SHD:15 SHD:16 SHD:17 SHD:18 SHD:19 SHD:20 SHD:21
[ 1.003750] #4
Was there anything else needed for this patch to be accepted?
If it's not acceptable, would simply printing the above as DEBUG
messages be acceptable? (I'm aware you don't like printing
summaries during init.)
Thanks,
Mike
Mike Travis wrote:
> Author: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
>
> The output of MCE banks ownership information on boot tend
> to be long on new processor which has many banks:
>
> CPU 1 MCA banks SHD:0 SHD:1 CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:7 SHD:8
> SHD:9 SHD:12 SHD:13 SHD:14 SHD:15 SHD:16 SHD:17 SHD:18 SHD:19 SHD:20 SHD:21
>
> This message can fill up the console output when the number
> of cpus is large.
>
> This patch suppress this info message on boot, and introduce
> debug message in shorter format instead, like:
>
> CPU 1 MCE banks map: ssCC PCss ssPP ssss ssss ss
>
> where: s: shared, C: checked by cmci, P: checked by poll.
>
> This patch still keep the info when ownership is updated.
> E.g. if a cpu take over the ownership from hot-removed cpu,
> both message will be shown:
>
> CPU 1 MCE banks map updated: CMCI:6 CMCI:7 CMCI:10 CMCI:11
> CPU 1 MCE banks map: ssCC PCCC ssPP ssCC ssss ss
>
> v2:
> - stop changing the level of message on update
> - change the number of banks message on boot to debug level
>
> Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
>
> - Modified to not use pr_cont().
>
> Signed-off-by: Mike Travis <travis@sgi.com>
> ---
> arch/x86/kernel/cpu/mcheck/mce.c | 6 +--
> arch/x86/kernel/cpu/mcheck/mce_intel.c | 63
> +++++++++++++++++++++++++++------
> 2 files changed, 55 insertions(+), 14 deletions(-)
>
> --- linux.orig/arch/x86/kernel/cpu/mcheck/mce.c
> +++ linux/arch/x86/kernel/cpu/mcheck/mce.c
> @@ -1215,11 +1215,11 @@
>
> b = cap & MCG_BANKCNT_MASK;
> if (!banks)
> - printk(KERN_INFO "mce: CPU supports %d MCE banks\n", b);
> + pr_debug("mce: CPU supports %d MCE banks\n", b);
>
> if (b > MAX_NR_BANKS) {
> - printk(KERN_WARNING
> - "MCE: Using only %u machine check banks out of %u\n",
> + pr_warning(
> + "MCE: Using only %u machine check banks out of %u\n",
> MAX_NR_BANKS, b);
> b = MAX_NR_BANKS;
> }
> --- linux.orig/arch/x86/kernel/cpu/mcheck/mce_intel.c
> +++ linux/arch/x86/kernel/cpu/mcheck/mce_intel.c
> @@ -64,14 +64,50 @@
> mce_notify_irq();
> }
>
> -static void print_update(char *type, int *hdr, int num)
> +#define MCE_MSG_LEN 120
> +
> +#ifdef DEBUG_KERNEL
> +static void print_banks_map(int banks, char *buf)
> +{
> + int i, n;
> +
> + n = snprintf(buf, MCE_MSG_LEN, "CPU %d MCE banks map:",
> + smp_processor_id());
> + for (i = 0; i < banks; i++) {
> + n += snprintf(&buf[n], MCE_MSG_LEN - n,
> + "%s%s", (i % 4) ? "" : " ",
> + test_bit(i, __get_cpu_var(mce_banks_owned)) ? "C" :
> + test_bit(i, __get_cpu_var(mce_poll_banks)) ? "P" : "s");
> + }
> +
> + /* (indicate if message buffer overflowed) */
> + pr_debug("%s%s\n", buf, n < MCE_MSG_LEN ? "" : "..." );
> +}
> +
> +static void print_update(char *type, int *hdr, int num, char *buf)
> +{
> + int n = *hdr;
> +
> + if (n == 0)
> + n = snprintf(buf, MCE_MSG_LEN,
> + "CPU %d MCE banks map updated:", smp_processor_id());
> +
> + n += snprintf(&buf[n], MCE_MSG_LEN - n, " %s:%d", type, num);
> + *hdr = n;
> +}
> +
> +#else /* !DEBUG_KERNEL */
> +
> +static inline void print_banks_map(int banks, char *buf)
> +{
> +}
> +
> +static inline void print_update(char *type, int *hdr, int num, char *buf)
> {
> - if (*hdr == 0)
> - printk(KERN_INFO "CPU %d MCA banks", smp_processor_id());
> - *hdr = 1;
> - printk(KERN_CONT " %s:%d", type, num);
> }
>
> +#endif
> +
> /*
> * Enable CMCI (Corrected Machine Check Interrupt) for available MCE banks
> * on this CPU. Use the algorithm recommended in the SDM to discover shared
> @@ -83,8 +119,10 @@
> unsigned long flags;
> int hdr = 0;
> int i;
> + char buf[MCE_MSG_LEN];
>
> spin_lock_irqsave(&cmci_discover_lock, flags);
> +
> for (i = 0; i < banks; i++) {
> u64 val;
>
> @@ -95,8 +133,8 @@
>
> /* Already owned by someone else? */
> if (val & CMCI_EN) {
> - if (test_and_clear_bit(i, owned) || boot)
> - print_update("SHD", &hdr, i);
> + if (test_and_clear_bit(i, owned) && !boot)
> + print_update("SHD", &hdr, i, buf);
> __clear_bit(i, __get_cpu_var(mce_poll_banks));
> continue;
> }
> @@ -107,16 +145,19 @@
>
> /* Did the enable bit stick? -- the bank supports CMCI */
> if (val & CMCI_EN) {
> - if (!test_and_set_bit(i, owned) || boot)
> - print_update("CMCI", &hdr, i);
> + if (!test_and_set_bit(i, owned) && !boot)
> + print_update("CMCI", &hdr, i, buf);
> __clear_bit(i, __get_cpu_var(mce_poll_banks));
> } else {
> WARN_ON(!test_bit(i, __get_cpu_var(mce_poll_banks)));
> }
> }
> - spin_unlock_irqrestore(&cmci_discover_lock, flags);
> if (hdr)
> - printk(KERN_CONT "\n");
> + pr_debug("%s%s\n", buf, hdr < MCE_MSG_LEN ? "" : "...");
> + if (hdr || boot)
> + print_banks_map(banks, buf);
> +
> + spin_unlock_irqrestore(&cmci_discover_lock, flags);
> }
>
> /*
next prev parent reply other threads:[~2009-12-14 21:46 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-16 21:07 [PATCH 0/6] Limit console output by suppressing repetitious messages Mike Travis
2009-11-16 21:07 ` [PATCH 1/6] x86: Limit the number of processor bootup messages Mike Travis
2009-11-16 21:22 ` Ingo Molnar
2009-11-16 21:34 ` Mike Travis
2009-11-16 21:07 ` [PATCH 2/6] x86: Limit the number of per cpu MCE " Mike Travis
2009-11-16 21:22 ` Ingo Molnar
2009-11-16 21:35 ` Mike Travis
2009-11-17 7:10 ` Hidetoshi Seto
2009-11-17 17:16 ` Mike Travis
2009-11-17 18:40 ` [PATCH] x86, mce: rework output of MCE banks ownership information Mike Travis
2009-12-14 21:46 ` Mike Travis [this message]
2009-12-15 1:50 ` Hidetoshi Seto
2009-11-16 21:07 ` [PATCH 3/6] INIT: Limit the number of per cpu calibration bootup messages Mike Travis
2009-11-16 21:24 ` Ingo Molnar
2009-11-16 21:27 ` H. Peter Anvin
2009-11-16 21:43 ` Cyrill Gorcunov
2009-11-16 21:46 ` H. Peter Anvin
2009-11-16 21:50 ` Cyrill Gorcunov
2009-11-17 3:09 ` David Miller
2009-11-17 15:59 ` Cyrill Gorcunov
2009-11-17 16:29 ` David Miller
2009-11-17 17:42 ` Cyrill Gorcunov
2009-11-17 17:49 ` Mike Travis
2009-11-17 17:54 ` H. Peter Anvin
2009-11-17 17:59 ` Cyrill Gorcunov
2009-11-17 16:51 ` Mike Travis
2009-11-16 21:45 ` Mike Travis
2009-11-16 21:48 ` H. Peter Anvin
2009-11-16 22:51 ` Mike Travis
2009-11-16 22:55 ` H. Peter Anvin
2009-11-16 21:07 ` [PATCH 4/6] firmware: Limit the number of per cpu firmware messages during bootup Mike Travis
2009-11-16 21:07 ` [PATCH 5/6] sched: Limit the number of scheduler debug messages Mike Travis
2009-11-16 21:07 ` [PATCH 6/6] x86: Limit number of per cpu TSC sync messages Mike Travis
-- strict thread matches above, loose matches on Subject: below --
2009-12-15 1:51 [PATCH] x86, mce: rework output of MCE banks ownership information Hidetoshi Seto
2009-12-15 19:13 ` Mike Travis
2009-12-16 2:54 ` Hidetoshi Seto
2009-12-16 3:15 ` Mike Travis
2009-12-15 23:30 ` Mike Travis
2009-12-15 23:40 ` H. Peter Anvin
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=4B26B241.5010403@sgi.com \
--to=travis@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=fweisbec@gmail.com \
--cc=gregkh@suse.de \
--cc=heiko.carstens@de.ibm.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rdreier@cisco.com \
--cc=rdunlap@xenotime.net \
--cc=rientjes@google.com \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=seto.hidetoshi@jp.fujitsu.com \
--cc=steiner@sgi.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=x86@kernel.org \
--cc=yhlu.kernel@gmail.com \
/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