linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Sedat Dilek <sedat.dilek@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	linux-next <linux-next@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Kristen Carlson Accardi <kristen@linux.intel.com>
Subject: Re: linux-next: Tree for Feb 4
Date: Wed, 4 Feb 2015 16:57:16 -0800	[thread overview]
Message-ID: <20150205005716.GS5370@linux.vnet.ibm.com> (raw)
In-Reply-To: <CA+icZUUPKNR1ua49NLVGv0i_gu9ZkVrReP_dgAWm8RPVY8Nr+w@mail.gmail.com>

On Thu, Feb 05, 2015 at 01:30:45AM +0100, Sedat Dilek wrote:
> On Thu, Feb 5, 2015 at 1:10 AM, Paul E. McKenney
> <paulmck@linux.vnet.ibm.com> wrote:
> > On Wed, Feb 04, 2015 at 03:51:15PM -0800, Paul E. McKenney wrote:
> >> On Wed, Feb 04, 2015 at 11:59:31PM +0100, Rafael J. Wysocki wrote:
> >> > On Wednesday, February 04, 2015 01:53:58 PM Paul E. McKenney wrote:
> >> > > On Wed, Feb 04, 2015 at 10:54:07PM +0100, Rafael J. Wysocki wrote:
> >> > > > On Wednesday, February 04, 2015 09:18:03 PM Sedat Dilek wrote:
> >
> > [ . . . ]
> >
> >> > > > > [ 1144.482666] Disabling non-boot CPUs ...
> >> > > > > [ 1144.483000] intel_pstate CPU 1 exiting
> >> > > > > [ 1144.486064]
> >> > > > > [ 1144.486065] ===============================
> >> > > > > [ 1144.486067] smpboot: CPU 1 didn't die...
> >> > > > > [ 1144.486067] [ INFO: suspicious RCU usage. ]
> >> > > > > [ 1144.486069] 3.19.0-rc7-next-20150204.1-iniza-small #1 Not tainted
> >> > > > > [ 1144.486070] -------------------------------
> >> > > > > [ 1144.486072] include/trace/events/tlb.h:35 suspicious
> >> > > > > rcu_dereference_check() usage!
> >> > > > > [ 1144.486073]
> >> > > > > [ 1144.486073] other info that might help us debug this:
> >> > > > > [ 1144.486073]
> >> > > > > [ 1144.486074]
> >> > > > > [ 1144.486074] RCU used illegally from offline CPU!
> >> > > > > [ 1144.486074] rcu_scheduler_active = 1, debug_locks = 0
> >> > > > > [ 1144.486076] no locks held by swapper/1/0.
> >> > > > > [ 1144.486076]
> >> > > > > [ 1144.486076] stack backtrace:
> >> > > > > [ 1144.486079] CPU: 1 PID: 0 Comm: swapper/1 Not tainted
> >> > > > > 3.19.0-rc7-next-20150204.1-iniza-small #1
> >> > > > > [ 1144.486080] Hardware name: SAMSUNG ELECTRONICS CO., LTD.
> >> > > > > 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
> >> > > > > [ 1144.486085]  0000000000000001 ffff88011a44fe18 ffffffff817e370d
> >> > > > > 0000000000000011
> >> > > > > [ 1144.486088]  ffff88011a448290 ffff88011a44fe48 ffffffff810d6847
> >> > > > > ffff8800c66b9600
> >> > > > > [ 1144.486091]  0000000000000001 ffff88011a44c000 ffffffff81cb3900
> >> > > > > ffff88011a44fe78
> >> > > > > [ 1144.486092] Call Trace:
> >> > > > > [ 1144.486099]  [<ffffffff817e370d>] dump_stack+0x4c/0x65
> >> > > > > [ 1144.486104]  [<ffffffff810d6847>] lockdep_rcu_suspicious+0xe7/0x120
> >> > >
> >> > > As near as I can tell, idle_task_exit() is running on an offline CPU,
> >> > > then calling switch_mm() which contains trace_tlb_flush(), which uses RCU.
> >> > > And RCU is objecting to being used from a CPU that it is ignoring.
> >> > >
> >> > > One approach would be to push RCU's idea of when the CPU goes offline
> >> > > down into arch code in this case, using some Kconfig symbol and
> >> > > the usual conditional compilation.  Another approach would be to
> >> > > invoke the trace calls under cpu_online(), for example, for the
> >> > > first such call in switch_mm():
> >> > >
> >> > >   if (cpu_online(smp_processor_id()))
> >> > >           trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
> >> > >
> >> > > The compiler would discard this if tracing was disabled.
> >> >
> >> > That looks like less intrusive to me.
> >>
> >> One possible concern is increased context-switch path length, but that
> >> would only be the case where tracing is enabled by default.
> >
> > Nevertheless, here is an untested patch.  Does it help?
> 
> No bedtime :-)

Sorry!  Actually, getting results tomorrow would be plenty OK by me.

> I tried with a revert of...
> 
> commit 5f1dedac9adb6259bb7b62a923bd7c247a2f2d5b
> rcu: Handle outgoing CPUs on exit from idle loop
> 
> ...and offlining cpu1 seems not to produce the trace...

As expected.  The trace can still appear, but the outgoing CPU needs to
be delayed by at least one jiffy on its final pass through the idle loop.
Which can really happen in virtualized environments.

> [  115.280244] PPP BSD Compression module registered
> [  115.288761] PPP Deflate Compression module registered
> [  162.935524] intel_pstate CPU 1 exiting
> [  162.949729] smpboot: CPU 1 is now offline
> 
> Will try the patch.

Looking forward to seeing the results!

							Thanx, Paul

> - Sedat -
> 
> >
> >                                                         Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > x86: Omit switch_mm() tracing for offline CPUs
> >
> > The architecture-specific switch_mm() function can be called by offline
> > CPUs, but includes event tracing, which cannot be legally carried out
> > on offline CPUs.  This results in a lockdep-RCU splat.  This commit fixes
> > this splat by omitting the tracing when the CPU is offline.
> >
> > Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> >
> > diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
> > index 40269a2bf6f9..7e7f2445fbc9 100644
> > --- a/arch/x86/include/asm/mmu_context.h
> > +++ b/arch/x86/include/asm/mmu_context.h
> > @@ -47,7 +47,8 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
> >
> >                 /* Re-load page tables */
> >                 load_cr3(next->pgd);
> > -               trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
> > +               if (cpu_online(smp_processor_id()))
> > +                       trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
> >
> >                 /* Stop flush ipis for the previous mm */
> >                 cpumask_clear_cpu(cpu, mm_cpumask(prev));
> > @@ -84,7 +85,8 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
> >                          * to make sure to use no freed page tables.
> >                          */
> >                         load_cr3(next->pgd);
> > -                       trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
> > +                       if (cpu_online(smp_processor_id()))
> > +                               trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
> >                         load_LDT_nolock(&next->context);
> >                 }
> >         }
> >
> 

  reply	other threads:[~2015-02-05  0:57 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-04  8:35 linux-next: Tree for Feb 4 Stephen Rothwell
2015-02-04 12:26 ` Sedat Dilek
2015-02-04 15:16   ` Jens Axboe
2015-02-04 15:21     ` Sedat Dilek
2015-02-04 15:31       ` Jens Axboe
2015-02-04 15:36         ` Sedat Dilek
2015-02-04 15:58           ` Martin K. Petersen
2015-02-04 16:06             ` Sedat Dilek
2015-02-05  3:17               ` Martin K. Petersen
2015-02-05  3:41                 ` Sedat Dilek
2015-02-05 19:46                 ` Sedat Dilek
2015-02-06 15:24                   ` Sedat Dilek
2015-02-04 20:18 ` Sedat Dilek
2015-02-04 21:54   ` Rafael J. Wysocki
2015-02-04 21:53     ` Paul E. McKenney
2015-02-04 22:59       ` Rafael J. Wysocki
2015-02-04 23:51         ` Paul E. McKenney
2015-02-04 23:58           ` Sedat Dilek
2015-02-05  0:10           ` Paul E. McKenney
2015-02-05  0:30             ` Sedat Dilek
2015-02-05  0:57               ` Paul E. McKenney [this message]
2015-02-05  1:18                 ` Sedat Dilek
2015-02-05  1:51                   ` Paul E. McKenney
2015-02-05  1:53                     ` Sedat Dilek
2015-02-05  2:12                       ` Sedat Dilek
2015-02-05  4:13                         ` Paul E. McKenney
2015-02-05  7:14                       ` Dave Hansen
2015-02-05 14:37                         ` Paul E. McKenney
2015-02-05 14:57                         ` Sedat Dilek
2015-02-05 16:58                           ` Paul E. McKenney
2015-02-05 18:03                         ` Steven Rostedt
2015-02-05 18:08                           ` Steven Rostedt
2015-02-05 18:11                             ` Dave Hansen
2015-02-05 18:34                               ` Paul E. McKenney
2015-02-05 18:35                                 ` Dave Hansen
2015-02-05 18:45                                   ` Paul E. McKenney
2015-02-05 19:25                                     ` Sedat Dilek
2015-02-05 19:33                                       ` Paul E. McKenney
2015-02-05 19:42                                         ` Sedat Dilek
2015-02-05 19:58                                       ` Steven Rostedt
2015-02-05 20:07                                         ` Sedat Dilek
2015-02-05 20:22                                           ` Steven Rostedt
2015-02-05 20:50                                             ` Sedat Dilek
2015-02-05 21:45                                               ` Sedat Dilek
2015-02-05 22:09                                                 ` Steven Rostedt
2015-02-05 22:16                                                   ` Sedat Dilek
2015-02-05 23:11                                                     ` Steven Rostedt
2015-02-05 23:53                                                       ` Sedat Dilek
2015-02-06  0:03                                                         ` Sedat Dilek
2015-02-06  0:12                                                         ` Steven Rostedt
2015-02-06  0:14                                                           ` Sedat Dilek
2015-02-04 22:38     ` Sedat Dilek
2015-02-04 23:25       ` Rafael J. Wysocki
2015-02-04 23:54         ` Sedat Dilek
2015-02-04 22:46     ` Sedat Dilek
2015-02-04 23:30       ` Rafael J. Wysocki
2015-02-04 23:48         ` Sedat Dilek
  -- strict thread matches above, loose matches on Subject: below --
2022-02-04  4:14 Stephen Rothwell
2021-02-04  9:13 Stephen Rothwell
2020-02-04  4:19 Stephen Rothwell
2019-02-04  5:35 Stephen Rothwell
2016-02-04  3:48 Stephen Rothwell
2014-02-04  5:07 Stephen Rothwell
     [not found] ` <CAP=VYLpgLC_4yuPtQH_yAd8S9cqQAVu2uB2=Wf3q_zgY4uzkLw@mail.gmail.com>
2014-02-04 22:23   ` Stephen Rothwell
2014-02-05  0:41 ` Stephen Rothwell
2013-02-04  7:39 Stephen Rothwell
2013-02-04 13:56 ` James Hogan
2013-02-04 20:33   ` Stephen Rothwell

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=20150205005716.GS5370@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=kristen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rjw@rjwysocki.net \
    --cc=sedat.dilek@gmail.com \
    --cc=sfr@canb.auug.org.au \
    /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;
as well as URLs for NNTP newsgroup(s).