mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Chen Gong <gong.chen@linux.intel.com>
Cc: tony.luck@intel.com, borislav.petkov@amd.com, x86@kernel.org,
	peterz@infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tmp patch to fix hotplug issue in CMCI storm
Date: Fri, 15 Jun 2012 11:55:57 +0200 (CEST)	[thread overview]
Message-ID: <alpine.LFD.2.02.1206151122140.3086@ionos> (raw)
In-Reply-To: <4FDADB74.3060701@linux.intel.com>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2778 bytes --]

On Fri, 15 Jun 2012, Chen Gong wrote:
> 于 2012/6/14 22:07, Thomas Gleixner 写道:
> > On Thu, 14 Jun 2012, Chen Gong wrote:
> > > this patch is based on tip tree and previous 5 patches.
> > 
> > You really don't need all this complexity to handle that. The main
> > thing is that you clear the storm state and adjust the storm counter
> > when the cpu goes offline (in case the state is ACTIVE).
> > 
> > When it comes online again then you can simply let it restart cmci. If
> > the storm on this cpu (or node) still exists then it will notice and
> > everything falls in place.
> 
> I ever tested some different scenarios, if storm on this cpu still
> exists, it triggers the CMCI and broadcast it on the sibling CPU,
> which means the counter *cmci_storm_on_cpus* will increase beyond
> the upper limit. E.g. on a 2 sockets SandyBridge-EP system (one socket
> has 8 cores and 16 threads), inject one error on one socket, you can
> watch *cmci_storm_on_cpus* = 16 becuase of CMCI broadcast, during
> this time, offline and online one CPU on this socket, firstly
> *cmci_storm_on_cpus* = 15 because of offline and ACTIVE status, and then
> *cmci_storm_on_cpus* = 31 in that CMCI is actived because of
> online.That's why I have to disable CMCI during whole online/offline
> until CMCI storm is subsided. Frankly, the logic is a little bit
> complex so that I write many comments to avoid I forget it after some
> time :-)

This does not make any sense at all.

What you are saying is that even if CPU0 run cmci_clear() the CMCI
raised on CPU1 will cause the CMCI vector to be triggered on CPU0.

So how does the whole storm machinery work in the following case:

CPU0   	    	      CPU1
cmci incoming	      cmci incoming
     storm detected   	   no storm detected yet
     cmci_clear()
     switch to poll
		      
		      cmci raised

So according to your explanation that would cause the cmci vector to
be broadcasted to CPU0 as well. Now that would cause the counter to
get a bogus increment, right ?

So instead of hacking insane crap into the code, we have simply to do
the obvious Right Thing:

Index: linux-2.6/arch/x86/kernel/cpu/mcheck/mce_intel.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/mcheck/mce_intel.c
+++ linux-2.6/arch/x86/kernel/cpu/mcheck/mce_intel.c
@@ -119,6 +119,9 @@ static bool cmci_storm_detect(void)
 	unsigned long ts = __this_cpu_read(cmci_time_stamp);
 	unsigned long now = jiffies;
 
+	if (__this_cpu_read(cmci_storm_state) != CMCI_STORM_NONE)
+		return true;
+
 	if (time_before_eq(now, ts + CMCI_STORM_INTERVAL)) {
 		cnt++;
 	} else {

That will prevent damage under all circumstances, cpu hotplug
included. 

But that's too simple and comprehensible I fear.

Thanks,

	tglx

  reply	other threads:[~2012-06-15  9:56 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-06 21:53 [patch 0/5] x86: mce: Bugfixes, cleanups and a new CMCI poll version Thomas Gleixner
2012-06-06 21:53 ` [patch 1/5] x86: mce: Disable preemption when calling raise_local() Thomas Gleixner
2012-06-06 21:53 ` [patch 2/5] x86: mce: Serialize mce injection Thomas Gleixner
2012-06-06 21:53 ` [patch 3/5] x86: mce: Split timer init Thomas Gleixner
2012-06-07 15:18   ` Borislav Petkov
2012-06-20  3:35   ` Hidetoshi Seto
2012-06-06 21:53 ` [patch 4/5] x86: mce: Remove the frozen cases in the hotplug code Thomas Gleixner
2012-06-07 17:49   ` Borislav Petkov
2012-06-06 21:53 ` [patch 5/5] x86: mce: Add cmci poll mode Thomas Gleixner
2012-06-07 18:14   ` Borislav Petkov
2012-06-07 10:08 ` [patch 0/5] x86: mce: Bugfixes, cleanups and a new CMCI poll version Chen Gong
2012-06-07 13:35   ` Borislav Petkov
2012-06-07 16:22     ` Luck, Tony
2012-06-08  7:49   ` Thomas Gleixner
2012-06-11  5:46     ` Chen Gong
2012-06-11  6:09     ` Chen Gong
2012-06-14 13:49     ` [PATCH] tmp patch to fix hotplug issue in CMCI storm Chen Gong
2012-06-14 14:07       ` Thomas Gleixner
2012-06-15  6:51         ` Chen Gong
2012-06-15  9:55           ` Thomas Gleixner [this message]
2012-06-18  6:42             ` Chen Gong
2012-06-18  6:45             ` [PATCH V2] " Chen Gong
2012-06-18  8:00               ` Thomas Gleixner
2012-06-18 10:13                 ` Chen Gong
2012-06-18 12:23                   ` Thomas Gleixner
2012-06-19  6:05                     ` Chen Gong
2012-06-19  6:09                     ` [PATCH V3] " Chen Gong
2012-07-04  8:12                       ` Chen Gong
2012-07-16  3:16                         ` Chen Gong
2012-07-16  8:22                           ` Thomas Gleixner
2012-07-17 21:47                             ` Chen Gong

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=alpine.LFD.2.02.1206151122140.3086@ionos \
    --to=tglx@linutronix.de \
    --cc=borislav.petkov@amd.com \
    --cc=gong.chen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=tony.luck@intel.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

Powered by JetHome