public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Chen Gong <gong.chen@linux.intel.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	tony.luck@intel.com, bp@amd64.org, x86@kernel.org,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [patch 2/2] x86: mce: Implement cmci poll mode for intel machines
Date: Wed, 6 Jun 2012 12:23:34 +0200 (CEST)	[thread overview]
Message-ID: <alpine.LFD.2.02.1206061215250.3086@ionos> (raw)
In-Reply-To: <alpine.LFD.2.02.1206061056520.3086@ionos>

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

On Wed, 6 Jun 2012, Thomas Gleixner wrote:

> On Wed, 6 Jun 2012, Chen Gong wrote:
> > 于 2012/6/5 21:35, Thomas Gleixner 写道:
> > I add some print in timer callback, it shows:
> > 
> > smp_processor_id() = 0, mce_timer_fn data(CPU id) = 10
> > timer->function = ffffffff8102c200, timer pending = 1, CPU = 0
> > (add_timer_on, BUG!!!)
> 
> Sure. That's not a surprise. The timer function for cpu 10 is called
> on cpu 0. And the timer function does:
> 
>    struct timer_list *t = &__get_cpu_var(mce_timer);
> 
> which gets a pointer to the timer of cpu0. And that timer is
> pending. So yes, it's exploding for a good reason.
> 
> Though, this does not tell us how the timer of cpu10 gets on cpu0.
> 
> Did you do any cpu hotplug operations ?

There's a problem in the hotplug code.

        case CPU_DOWN_PREPARE:
	case CPU_DOWN_PREPARE_FROZEN:
                del_timer_sync(t);
                smp_call_function_single(cpu, mce_disable_cpu, &action, 1);
                break;

We delete the timer before we disable mce and cmci. So if the cmci
interrupt kicks the timer after del_timer_sync() and before
mce_disable_cpu() is called on the other core, then the timer is still
enqueued when the cpu goes down. After it's dead the timer is migrated
and then the above scenario happens.

Can you try the following just for a quick test ?

        case CPU_DOWN_PREPARE:
	case CPU_DOWN_PREPARE_FROZEN:
                del_timer_sync(t);
                smp_call_function_single(cpu, mce_disable_cpu, &action, 1);
+		del_timer_sync(t);
                break;

That's not a proper solution, for a proper solution the hotplug code
of mce needs an overhaul. It's patently ugly.

Thanks,

	tglx

  reply	other threads:[~2012-06-06 10:23 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-24 17:54 [patch 0/2] x86: mce: Implement poll mode for CMCI Thomas Gleixner
2012-05-24 17:54 ` [patch 1/2] x86: mce Cleanup timer mess Thomas Gleixner
2012-05-25  6:16   ` Borislav Petkov
2012-06-04  2:22   ` Chen Gong
2012-06-04 18:14     ` Luck, Tony
2012-06-04 19:57       ` Thomas Gleixner
2012-06-04 22:18       ` Borislav Petkov
2012-05-24 17:54 ` [patch 2/2] x86: mce: Implement cmci poll mode for intel machines Thomas Gleixner
2012-05-25  6:24   ` Borislav Petkov
2012-05-25  7:31     ` Chen Gong
2012-05-25  9:20       ` Thomas Gleixner
2012-05-25 12:17         ` Thomas Gleixner
2012-05-28  9:47     ` Chen Gong
2012-05-28  9:52   ` Chen Gong
2012-06-04  2:37   ` Chen Gong
2012-06-04 20:01     ` Thomas Gleixner
2012-06-05 11:47       ` Chen Gong
2012-06-05 12:57         ` Borislav Petkov
2012-06-06  1:36           ` Chen Gong
2012-06-06  9:04             ` Borislav Petkov
2012-06-05 13:35         ` Thomas Gleixner
2012-06-06  7:21           ` Chen Gong
2012-06-06  9:18             ` Thomas Gleixner
2012-06-06 10:23               ` Thomas Gleixner [this message]
2012-06-06 12:24                 ` Chen Gong
2012-06-06 12:27                   ` Peter Zijlstra
2012-06-06 14:15                   ` Thomas Gleixner
2012-06-06 14:46                     ` Thomas Gleixner
2012-06-07  3:32                       ` 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.1206061215250.3086@ionos \
    --to=tglx@linutronix.de \
    --cc=bp@amd64.org \
    --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