From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933779Ab2GDIMs (ORCPT ); Wed, 4 Jul 2012 04:12:48 -0400 Received: from mga11.intel.com ([192.55.52.93]:60888 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932289Ab2GDIMo (ORCPT ); Wed, 4 Jul 2012 04:12:44 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.71,315,1320652800"; d="scan'208";a="173269048" Message-ID: <4FF3FAF9.4060302@linux.intel.com> Date: Wed, 04 Jul 2012 16:12:41 +0800 From: Chen Gong User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 MIME-Version: 1.0 To: Chen Gong CC: tglx@linutronix.de, tony.luck@intel.com, borislav.petkov@amd.com, peterz@infradead.org, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH V3] tmp patch to fix hotplug issue in CMCI storm References: <1340086140-13652-1-git-send-email-gong.chen@linux.intel.com> In-Reply-To: <1340086140-13652-1-git-send-email-gong.chen@linux.intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 于 2012/6/19 14:09, Chen Gong 写道: > v3->v1 > Thanks very much for Thomas' suggestion to simply the whole logic. > > Signed-off-by: Chen Gong > --- > arch/x86/kernel/cpu/mcheck/mce-internal.h | 2 ++ > arch/x86/kernel/cpu/mcheck/mce.c | 1 + > arch/x86/kernel/cpu/mcheck/mce_intel.c | 11 +++++++++++ > 3 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/cpu/mcheck/mce-internal.h b/arch/x86/kernel/cpu/mcheck/mce-internal.h > index 2cd73ce..6a05c1d 100644 > --- a/arch/x86/kernel/cpu/mcheck/mce-internal.h > +++ b/arch/x86/kernel/cpu/mcheck/mce-internal.h > @@ -31,9 +31,11 @@ extern struct mce_bank *mce_banks; > #ifdef CONFIG_X86_MCE_INTEL > unsigned long mce_intel_adjust_timer(unsigned long interval); > void mce_intel_cmci_poll(void); > +void mce_intel_hcpu_update(unsigned long cpu); > #else > # define mce_intel_adjust_timer mce_adjust_timer_default > static inline void mce_intel_cmci_poll(void) { } > +static inline void mce_intel_hcpu_update(unsigned long cpu) { } > #endif > > void mce_timer_kick(unsigned long interval); > diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c > index e3f8b94..5e22d99 100644 > --- a/arch/x86/kernel/cpu/mcheck/mce.c > +++ b/arch/x86/kernel/cpu/mcheck/mce.c > @@ -2306,6 +2306,7 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) > if (threshold_cpu_callback) > threshold_cpu_callback(action, cpu); > mce_device_remove(cpu); > + mce_intel_hcpu_update(cpu); > break; > case CPU_DOWN_PREPARE: > smp_call_function_single(cpu, mce_disable_cpu, &action, 1); > diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c > index 92d8b5c..693bc7d 100644 > --- a/arch/x86/kernel/cpu/mcheck/mce_intel.c > +++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c > @@ -77,6 +77,14 @@ void mce_intel_cmci_poll(void) > machine_check_poll(MCP_TIMESTAMP, &__get_cpu_var(mce_banks_owned)); > } > > +void mce_intel_hcpu_update(unsigned long cpu) > +{ > + if (per_cpu(cmci_storm_state, cpu) == CMCI_STORM_ACTIVE) > + atomic_dec(&cmci_storm_on_cpus); > + > + per_cpu(cmci_storm_state, cpu) = CMCI_STORM_NONE; > +} > + > unsigned long mce_intel_adjust_timer(unsigned long interval) > { > if (interval < CMCI_POLL_INTERVAL) > @@ -119,6 +127,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 { > Hi, Thomas How is going on for this patch and whole patch series? I don't know if you have updated it or not.