From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
To: lkp@lists.01.org
Subject: Re: [lkp-robot] [torture] b151f93a71: INFO:rcu_preempt_detected_stalls_on_CPUs/tasks
Date: Tue, 28 Nov 2017 13:08:10 -0800 [thread overview]
Message-ID: <20171128210810.GA22726@linux.vnet.ibm.com> (raw)
In-Reply-To: <20171128204619.GA16740@linux.vnet.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 3333 bytes --]
On Tue, Nov 28, 2017 at 12:46:19PM -0800, Paul E. McKenney wrote:
> On Tue, Nov 28, 2017 at 09:35:54AM -0800, Paul E. McKenney wrote:
> > On Tue, Nov 28, 2017 at 06:10:08PM +0100, Thomas Gleixner wrote:
> > > On Tue, 28 Nov 2017, Paul E. McKenney wrote:
> > > > On Tue, Nov 28, 2017 at 05:47:35PM +0100, Thomas Gleixner wrote:
> > > > diff --git a/kernel/time/timer.c b/kernel/time/timer.c
> > > > index db774b0f217e..a3321bb565db 100644
> > > > --- a/kernel/time/timer.c
> > > > +++ b/kernel/time/timer.c
> > > > @@ -1803,7 +1803,7 @@ signed long __sched schedule_timeout(signed long timeout)
> > > > idx = timer_get_idx(&timer.timer);
> > > > idx_now = calc_wheel_index(j, base->clk);
> > > > raw_spin_unlock_irqrestore(&base->lock, flags);
> > > > - pr_info("%s: Waylayed timer idx: %u idx_now: %u\n", __func__, idx, idx_now);
> > > > + pr_info("%s: Waylayed timer base->clk: %#lx jiffies: %#lx base->next_expiry: %#lx timer->flags: %#x timer->expires %#lx idx: %u idx_now: %u\n", __func__, base->clk, j, base->next_expiry, timer.timer.flags, timer.timer.expires, idx, idx_now);
> > >
> > > Please print idx and idx_now as hex values. It's simpler to decode that way.
> >
> > Here you go! Starting tests at this end, focusing on TREE01 and TREE04.
> > BTW, TREE04 doesn't do any CPU hotplug, providing a counterexample to
> > my long-held assumption that this only happened in the presence of CPU
> > hotplug operations.
>
> And here is output with changes discussed on IRC. TREE04 managed to
> have not one but two overlapping RCU CPU stall warnings, one for RCU-bh
> and the second for RCU-sched. TREE04 and TREE04. HZ=1000.
And here is the full patch, in all its lack of aesthetic appeal.
Thanx, Paul
------------------------------------------------------------------------
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index ffebcf878fba..fbfdc572ceaa 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1755,8 +1755,13 @@ static void process_timeout(struct timer_list *t)
*/
signed long __sched schedule_timeout(signed long timeout)
{
+ struct timer_base *base;
struct process_timer timer;
unsigned long expire;
+ unsigned long flags;
+ unsigned long i;
+ unsigned int idx, idx_now;
+ unsigned long j;
switch (timeout)
{
@@ -1793,6 +1798,17 @@ signed long __sched schedule_timeout(signed long timeout)
timer_setup_on_stack(&timer.timer, process_timeout, 0);
__mod_timer(&timer.timer, expire, 0);
schedule();
+ j = jiffies;
+ if (timeout < 5 && time_after(j, expire + 8 * HZ) && timer_pending(&timer.timer)) {
+ base = lock_timer_base(&timer.timer, &flags);
+ idx = timer_get_idx(&timer.timer);
+ idx_now = calc_wheel_index(j, base->clk);
+ raw_spin_unlock_irqrestore(&base->lock, flags);
+ pr_info("%s: Waylayed timer base->clk: %#lx jiffies: %#lx base->next_expiry: %#lx timer->flags: %#x timer->expires %#lx idx: %x idx_now: %x base->pending_map ", __func__, base->clk, j, base->next_expiry, timer.timer.flags, timer.timer.expires, idx, idx_now);
+ for (i = 0; i < WHEEL_SIZE / sizeof(base->pending_map[0]) / 8; i++)
+ pr_cont("%16lx", base->pending_map[i]);
+ pr_cont("\n");
+ }
del_singleshot_timer_sync(&timer.timer);
/* Remove the timer from the object tracker */
WARNING: multiple messages have this Message-ID (diff)
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: kernel test robot <xiaolong.ye@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
lkp@01.org
Subject: Re: [lkp-robot] [torture] b151f93a71: INFO:rcu_preempt_detected_stalls_on_CPUs/tasks
Date: Tue, 28 Nov 2017 13:08:10 -0800 [thread overview]
Message-ID: <20171128210810.GA22726@linux.vnet.ibm.com> (raw)
In-Reply-To: <20171128204619.GA16740@linux.vnet.ibm.com>
On Tue, Nov 28, 2017 at 12:46:19PM -0800, Paul E. McKenney wrote:
> On Tue, Nov 28, 2017 at 09:35:54AM -0800, Paul E. McKenney wrote:
> > On Tue, Nov 28, 2017 at 06:10:08PM +0100, Thomas Gleixner wrote:
> > > On Tue, 28 Nov 2017, Paul E. McKenney wrote:
> > > > On Tue, Nov 28, 2017 at 05:47:35PM +0100, Thomas Gleixner wrote:
> > > > diff --git a/kernel/time/timer.c b/kernel/time/timer.c
> > > > index db774b0f217e..a3321bb565db 100644
> > > > --- a/kernel/time/timer.c
> > > > +++ b/kernel/time/timer.c
> > > > @@ -1803,7 +1803,7 @@ signed long __sched schedule_timeout(signed long timeout)
> > > > idx = timer_get_idx(&timer.timer);
> > > > idx_now = calc_wheel_index(j, base->clk);
> > > > raw_spin_unlock_irqrestore(&base->lock, flags);
> > > > - pr_info("%s: Waylayed timer idx: %u idx_now: %u\n", __func__, idx, idx_now);
> > > > + pr_info("%s: Waylayed timer base->clk: %#lx jiffies: %#lx base->next_expiry: %#lx timer->flags: %#x timer->expires %#lx idx: %u idx_now: %u\n", __func__, base->clk, j, base->next_expiry, timer.timer.flags, timer.timer.expires, idx, idx_now);
> > >
> > > Please print idx and idx_now as hex values. It's simpler to decode that way.
> >
> > Here you go! Starting tests at this end, focusing on TREE01 and TREE04.
> > BTW, TREE04 doesn't do any CPU hotplug, providing a counterexample to
> > my long-held assumption that this only happened in the presence of CPU
> > hotplug operations.
>
> And here is output with changes discussed on IRC. TREE04 managed to
> have not one but two overlapping RCU CPU stall warnings, one for RCU-bh
> and the second for RCU-sched. TREE04 and TREE04. HZ=1000.
And here is the full patch, in all its lack of aesthetic appeal.
Thanx, Paul
------------------------------------------------------------------------
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index ffebcf878fba..fbfdc572ceaa 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1755,8 +1755,13 @@ static void process_timeout(struct timer_list *t)
*/
signed long __sched schedule_timeout(signed long timeout)
{
+ struct timer_base *base;
struct process_timer timer;
unsigned long expire;
+ unsigned long flags;
+ unsigned long i;
+ unsigned int idx, idx_now;
+ unsigned long j;
switch (timeout)
{
@@ -1793,6 +1798,17 @@ signed long __sched schedule_timeout(signed long timeout)
timer_setup_on_stack(&timer.timer, process_timeout, 0);
__mod_timer(&timer.timer, expire, 0);
schedule();
+ j = jiffies;
+ if (timeout < 5 && time_after(j, expire + 8 * HZ) && timer_pending(&timer.timer)) {
+ base = lock_timer_base(&timer.timer, &flags);
+ idx = timer_get_idx(&timer.timer);
+ idx_now = calc_wheel_index(j, base->clk);
+ raw_spin_unlock_irqrestore(&base->lock, flags);
+ pr_info("%s: Waylayed timer base->clk: %#lx jiffies: %#lx base->next_expiry: %#lx timer->flags: %#x timer->expires %#lx idx: %x idx_now: %x base->pending_map ", __func__, base->clk, j, base->next_expiry, timer.timer.flags, timer.timer.expires, idx, idx_now);
+ for (i = 0; i < WHEEL_SIZE / sizeof(base->pending_map[0]) / 8; i++)
+ pr_cont("%16lx", base->pending_map[i]);
+ pr_cont("\n");
+ }
del_singleshot_timer_sync(&timer.timer);
/* Remove the timer from the object tracker */
next prev parent reply other threads:[~2017-11-28 21:08 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-26 8:42 [lkp-robot] [torture] b151f93a71: INFO:rcu_preempt_detected_stalls_on_CPUs/tasks kernel test robot
2017-11-26 8:42 ` kernel test robot
2017-11-27 21:57 ` Paul E. McKenney
2017-11-27 21:57 ` Paul E. McKenney
2017-11-27 2:48 ` Ye Xiaolong
2017-11-27 2:48 ` Ye Xiaolong
2017-11-28 14:16 ` Thomas Gleixner
2017-11-28 14:16 ` Thomas Gleixner
2017-11-28 16:41 ` Paul E. McKenney
2017-11-28 16:41 ` Paul E. McKenney
2017-11-28 16:47 ` Thomas Gleixner
2017-11-28 16:47 ` Thomas Gleixner
2017-11-28 17:07 ` Paul E. McKenney
2017-11-28 17:07 ` Paul E. McKenney
2017-11-28 17:10 ` Thomas Gleixner
2017-11-28 17:10 ` Thomas Gleixner
2017-11-28 17:35 ` Paul E. McKenney
2017-11-28 17:35 ` Paul E. McKenney
2017-11-28 20:46 ` Paul E. McKenney
2017-11-28 20:46 ` Paul E. McKenney
2017-11-28 21:08 ` Paul E. McKenney [this message]
2017-11-28 21:08 ` Paul E. McKenney
2017-11-29 19:08 ` Paul E. McKenney
2017-11-29 19:08 ` Paul E. McKenney
2017-11-29 22:07 ` Paul E. McKenney
2017-11-29 22:07 ` Paul E. McKenney
2017-11-29 22:38 ` Paul E. McKenney
2017-11-29 22:38 ` Paul E. McKenney
2017-12-01 0:45 ` Paul E. McKenney
2017-12-01 0:45 ` Paul E. McKenney
2017-11-28 16:52 ` Paul E. McKenney
2017-11-28 16:52 ` Paul E. McKenney
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=20171128210810.GA22726@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=lkp@lists.01.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.