From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@elte.hu>,
linux-kernel@vger.kernel.org, Don Zickus <dzickus@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: fix BUG: using smp_processor_id() in touch_nmi_watchdog and touch_softlockup_watchdog
Date: Thu, 19 Aug 2010 01:44:47 +0400 [thread overview]
Message-ID: <20100818214447.GC11949@lenovo> (raw)
In-Reply-To: <20100818123346.02028e96.akpm@linux-foundation.org>
On Wed, Aug 18, 2010 at 12:33:46PM -0700, Andrew Morton wrote:
> On Fri, 13 Aug 2010 13:21:58 +0300
> Sergey Senozhatsky <sergey.senozhatsky@gmail.com> wrote:
>
> > Hello,
> >
> > Got this traces today:
> >
> > ...
> >
...
> > void touch_softlockup_watchdog(void)
> > {
> > - __get_cpu_var(watchdog_touch_ts) = 0;
> > + int this_cpu = get_cpu();
> > + per_cpu(watchdog_touch_ts, this_cpu) = 0;
> > + put_cpu();
> > }
> > EXPORT_SYMBOL(touch_softlockup_watchdog);
> >
> > @@ -142,7 +143,9 @@ void touch_all_softlockup_watchdogs(void)
> > #ifdef CONFIG_HARDLOCKUP_DETECTOR
> > void touch_nmi_watchdog(void)
> > {
> > - __get_cpu_var(watchdog_nmi_touch) = true;
> > + int this_cpu = get_cpu();
> > + per_cpu(watchdog_nmi_touch, this_cpu) = true;
> > + put_cpu();
> > touch_softlockup_watchdog();
> > }
> > EXPORT_SYMBOL(touch_nmi_watchdog);
>
> Why did this start happening? Surely we've called
> touch_softlockup_watchdog() from within preemptible code before now.
indeed, and we've been using __raw interface before (2.6.18)
void touch_softlockup_watchdog(void)
{
__raw_get_cpu_var(touch_timestamp) = jiffies;
}
> Methinks that
>
> : commit 26e09c6eee14f4827b55137ba0eedc4e77cd50ab
> : Author: Don Zickus <dzickus@redhat.com>
> : AuthorDate: Mon May 17 18:06:04 2010 -0400
> : Commit: Frederic Weisbecker <fweisbec@gmail.com>
> : CommitDate: Wed May 19 11:32:14 2010 +0200
> :
> : lockup_detector: Convert per_cpu to __get_cpu_var for readability
>
> was simply broken? That would be strange, given that it's been sitting
> around since May 17.
>
> If we don't want to revert 26e09c6eee14f4827b55137ba0eedc4e77cd50ab
> then I'd suggest that we simply switch to raw_smp_processor_id(): those
> newly-added get_cpu/put_cpu calls don't do anything useful.
>
I think it's fine to use __get_cpu_var in touch_nmi_watchdog (which should not
be called with irq enabled since it ticks anyway then, at least on x86) for hardware
nmi watchdog, can't conclude anything about softlockup (except that we had __raw
interface before) since I'm not familiar with soflockup watchdog at moment.
-- Cyrill
next prev parent reply other threads:[~2010-08-18 21:44 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-13 10:21 fix BUG: using smp_processor_id() in touch_nmi_watchdog and touch_softlockup_watchdog Sergey Senozhatsky
2010-08-16 8:22 ` Peter Zijlstra
2010-08-16 13:34 ` Don Zickus
2010-08-16 13:46 ` Peter Zijlstra
2010-08-16 14:08 ` [PATCH] fix BUG " Sergey Senozhatsky
2010-08-16 14:30 ` Don Zickus
2010-08-17 4:27 ` Yong Zhang
2010-08-17 2:59 ` Frederic Weisbecker
2010-08-17 3:16 ` Yong Zhang
2010-08-17 8:39 ` Sergey Senozhatsky
2010-08-17 9:05 ` Yong Zhang
2010-08-17 9:24 ` Sergey Senozhatsky
2010-08-17 9:37 ` Yong Zhang
2010-08-17 10:28 ` Sergey Senozhatsky
2010-08-17 12:48 ` Yong Zhang
2010-08-17 10:39 ` Sergey Senozhatsky
2010-08-17 12:56 ` Yong Zhang
2010-08-17 13:13 ` Don Zickus
2010-08-18 2:48 ` Frederic Weisbecker
2010-08-18 20:01 ` Andrew Morton
2010-08-19 2:27 ` Don Zickus
2010-08-20 2:57 ` Don Zickus
2010-08-20 3:42 ` Andrew Morton
2010-08-20 12:34 ` Don Zickus
2010-08-26 17:17 ` acpi_os_stall() and touch_nmi_watchdog() (was Re: [PATCH] fix BUG using smp_processor_id() in touch_nmi_watchdog and touch_softlockup_watchdog) Len Brown
2010-08-20 15:02 ` [PATCH] fix BUG using smp_processor_id() in touch_nmi_watchdog and touch_softlockup_watchdog Yong Zhang
2010-08-26 10:14 ` Maxim Levitsky
2010-08-26 14:40 ` Don Zickus
2010-08-17 7:56 ` [PATCH] fix BUG using smp_processor_id() in touch_nmi_watchdog and touch_softlockup_watchdog (v2) Sergey Senozhatsky
2010-08-16 14:12 ` fix BUG: using smp_processor_id() in touch_nmi_watchdog and touch_softlockup_watchdog Don Zickus
2010-08-16 14:29 ` Peter Zijlstra
2010-08-16 14:06 ` Yong Zhang
2010-08-18 19:33 ` Andrew Morton
2010-08-18 21:44 ` Cyrill Gorcunov [this message]
2010-09-22 9:00 ` [PATCH] avoid second smp_processor_id() call in __touch_watchdog Sergey Senozhatsky
2010-09-22 14:41 ` Don Zickus
2010-09-22 16:27 ` Frederic Weisbecker
2010-09-22 16:39 ` Peter Zijlstra
2010-09-22 16:47 ` Frederic Weisbecker
2010-09-24 19:34 ` Don Zickus
2010-09-25 17:43 ` Sergey Senozhatsky
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=20100818214447.GC11949@lenovo \
--to=gorcunov@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=dzickus@redhat.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=sergey.senozhatsky@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