Re: RCU stall when using function_graph

From: Paul E. McKenney
Date: Wed Aug 16 2017 - 13:58:14 EST


On Wed, Aug 16, 2017 at 12:41:40PM -0400, Steven Rostedt wrote:
> On Wed, 16 Aug 2017 09:32:28 -0700
> "Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
>
> > Let me see if I understand you... About halfway to the stall limit,
> > RCU triggers an irq_work (on each CPU that has not yet passed through
> > a quiescent state, IPIing them in turn?), and if the irq_work has
> > not completed by the end of the stall limit, RCU adds that to its
> > stall-warning message.
>
> Doesn't even have to be half way through. It could be done at the
> limit, and then wait a little more.

Agreed. However, I take other evasive action halfway through, so there
is a nice place to put the code.

> > Or am I missing something here?
>
> No, I think that's what I was suggesting.

I don't see a way of canceling an irq_work.

Ah, but there is an irq_work_queue_on() that fails if still pending.
I should be able to use that instead of cancel. Plus, -I- don't have
to send the IPIs, I can just let irq_work_queue_on() do my dirty work!

This should provide sufficient entertainment for a bit! ;-)

Thanx, Paul