Re: [PATCH v2 7/9] sched: define TIF_ALLOW_RESCHED

From: Paul E. McKenney
Date: Thu Oct 19 2023 - 13:08:17 EST


On Thu, Oct 19, 2023 at 02:37:23PM +0200, Daniel Bristot de Oliveira wrote:
> On 10/18/23 20:13, Paul E. McKenney wrote:
> > On Wed, Oct 18, 2023 at 02:00:35PM -0400, Steven Rostedt wrote:
> >> On Wed, 18 Oct 2023 10:55:02 -0700
> >> "Paul E. McKenney" <paulmck@xxxxxxxxxx> wrote:
> >>
> >>>> If everything becomes PREEMPT_RCU, then the above should be able to be
> >>>> turned into just:
> >>>>
> >>>> if (!disable_irq)
> >>>> local_irq_disable();
> >>>>
> >>>> rcu_momentary_dyntick_idle();
> >>>>
> >>>> if (!disable_irq)
> >>>> local_irq_enable();
> >>>>
> >>>> And no cond_resched() is needed.
> >>>
> >>> Even given that CONFIG_PREEMPT_RCU=n still exists, the fact that
> >>> run_osnoise() is running in kthread context with preemption and everything
> >>> else enabled (am I right?), then the change you suggest should work fine.
> >>
> >> There's a user space option that lets you run that loop with preemption and/or
> >> interrupts disabled.
> >
> > Ah, thank you. Then as long as this function is not expecting an RCU
> > reader to span that call to rcu_momentary_dyntick_idle(), all is well.
> > This is a kthread, so there cannot be something else expecting an RCU
> > reader to span that call.
>
> Sorry for the delay, this thread is quite long (and I admit I should be paying
> attention to it).
>
> It seems that you both figure it out without me anyways. This piece of
> code is preemptive unless a config is set to disable irq or preemption (as
> steven mentioned). That call is just a ping to RCU to say that things
> are fine.
>
> So Steven's suggestion should work.

Very good!

> >>>>> Again. There is no non-preemtible RCU with this model, unless I'm
> >>>>> missing something important here.
> >>>>
> >>>> Daniel?
> >>>
> >>> But very happy to defer to Daniel. ;-)
> >>
> >> But Daniel could also correct me ;-)
> >
> > If he figures out a way that it is broken, he gets to fix it. ;-)
>
> It works for me, keep in the loop for the patches and I can test and
> adjust osnoise accordingly. osnoise should not be a reason to block more
> important things like this patch set, and we can find a way out in
> the osnoise tracer side. (I might need an assistance from rcu
> people, but I know I can count on them :-).

For good or for bad, we will be here. ;-)

Thanx, Paul