All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ankur Arora <ankur.a.arora@oracle.com>
To: paulmck@kernel.org
Cc: Ankur Arora <ankur.a.arora@oracle.com>,
	linux-kernel@vger.kernel.org, peterz@infradead.org,
	tglx@linutronix.de, mingo@kernel.org, bigeasy@linutronix.de,
	juri.lelli@redhat.com, vincent.guittot@linaro.org,
	dietmar.eggemann@arm.com, rostedt@goodmis.org,
	bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
	frederic@kernel.org, efault@gmx.de
Subject: Re: [PATCH 4/7] rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
Date: Thu, 10 Oct 2024 10:59:31 -0700	[thread overview]
Message-ID: <87v7xz7sak.fsf@oracle.com> (raw)
In-Reply-To: <bbd35e87-c7ac-4e69-9f82-7c7338307079@paulmck-laptop>


Paul E. McKenney <paulmck@kernel.org> writes:

> On Wed, Oct 09, 2024 at 12:05:47PM -0700, Ankur Arora wrote:
>>
>>
>> Ankur Arora <ankur.a.arora@oracle.com> writes:
>>
>> > With PREEMPT_RCU=n, cond_resched() provides urgently needed quiescent
>> > states for read-side critical sections via rcu_all_qs().
>> > One reason why this was needed, was lacking preempt-count, the tick
>> > handler has no way of knowing whether it is executing in a read-side
>> > critical section or not.
>> >
>> > With PREEMPT_LAZY=y, there can be configurations with PREEMPT_COUNT=y,
>> > PREEMPT_RCU=n, where cond_resched() is a stub that does not provide
>> > quiescent states via rcu_all_qs().
>> >
>> > So, use the availability of preempt_count() to report quiescent states
>> > in rcu_flavor_sched_clock_irq().
>>
>> A note about the inverse of this case, where we might have long running
>> loops which only temporarily enable preemption and thus would be
>> unlikely to align themselves with the tick: in prior discussions [1]
>> Paul had pointed the need for providing for forcing a context switch
>> in such a scenario.
>>
>> I had a patch which did that, but I think it is unnecessary since this
>> clause in rcu_sched_clock_irq() should already handle it.
>>
>>    void rcu_sched_clock_irq(int user) {
>>         ...
>>         /* The load-acquire pairs with the store-release setting to true. */
>>         if (smp_load_acquire(this_cpu_ptr(&rcu_data.rcu_urgent_qs))) {
>>                 /* Idle and userspace execution already are quiescent states. */
>>                 if (!rcu_is_cpu_rrupt_from_idle() && !user) {
>>                         set_tsk_need_resched(current);
>>                         set_preempt_need_resched();
>>                 }
>>                 __this_cpu_write(rcu_data.rcu_urgent_qs, false);
>>         }
>>
>> Paul?
>
> As long as the tick is actually enabled.
>
> But looking deeper, there is code in force_qs_rnp() and
> rcu_watching_snap_recheck() to force the tick on CPUs that don't
> response to the grace period soon enough via the -1 return from the
> rcu_watching_snap_recheck() function and via resched_cpu().

Ah. I had missed that path. Thanks.

--
ankur

  reply	other threads:[~2024-10-10 17:59 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-09 16:54 [PATCH 0/7] Lazy preemption bits Ankur Arora
2024-10-09 16:54 ` [PATCH 1/7] sched: warn for high latency with TIF_NEED_RESCHED_LAZY Ankur Arora
2024-10-10  6:37   ` Sebastian Andrzej Siewior
2024-10-10 18:19     ` Ankur Arora
2024-10-13  9:44   ` kernel test robot
2024-10-13  9:54   ` kernel test robot
2024-10-16  9:36   ` Shrikanth Hegde
2024-10-21 19:21     ` Ankur Arora
2024-10-22  5:41       ` Shrikanth Hegde
2024-10-09 16:54 ` [PATCH 2/7] rcu: limit PREEMPT_RCU configurations Ankur Arora
2024-10-09 18:01   ` Peter Zijlstra
2024-10-09 18:24     ` Paul E. McKenney
2024-10-09 20:52       ` Peter Zijlstra
2024-10-09 21:16         ` Paul E. McKenney
2024-10-10  7:58           ` Peter Zijlstra
2024-10-10 14:19             ` Paul E. McKenney
2024-10-10  6:32       ` Sebastian Andrzej Siewior
2024-10-10  8:10         ` Peter Zijlstra
2024-10-10  9:13           ` Sebastian Andrzej Siewior
2024-10-10 10:03             ` Peter Zijlstra
2024-10-10 10:26               ` Sebastian Andrzej Siewior
2024-10-10 10:44                 ` Peter Zijlstra
2024-10-10 14:29                   ` Paul E. McKenney
2024-10-11  8:18                     ` Sebastian Andrzej Siewior
2024-10-11 13:59                       ` Paul E. McKenney
2024-10-11 14:43                         ` Sebastian Andrzej Siewior
2024-10-11 15:59                           ` Paul E. McKenney
2024-10-15 11:22                             ` Sebastian Andrzej Siewior
2024-10-15 22:13                               ` Ankur Arora
2024-10-17  8:04                                 ` Sebastian Andrzej Siewior
2024-10-17 22:50                                   ` Ankur Arora
2024-10-18 17:43                                     ` Paul E. McKenney
2024-10-18 19:18                                       ` Ankur Arora
2024-10-18 23:24                                         ` Paul E. McKenney
2024-10-19  1:07                                           ` Ankur Arora
2024-10-19  4:30                                             ` Paul E. McKenney
2024-10-15 23:11                               ` Paul E. McKenney
2024-10-17  7:07                                 ` Sebastian Andrzej Siewior
2024-10-18 17:38                                   ` Paul E. McKenney
2024-10-21 11:27                                     ` Sebastian Andrzej Siewior
2024-10-21 16:48                                       ` Paul E. McKenney
2024-10-21 19:20                                         ` Ankur Arora
2024-10-22 23:49                                           ` Paul E. McKenney
2024-10-22 14:09                                         ` Sebastian Andrzej Siewior
2024-10-22 23:54                                           ` Paul E. McKenney
2024-10-23  6:58                                             ` Sebastian Andrzej Siewior
2024-10-10 17:35             ` Ankur Arora
2024-10-11  7:58               ` Sebastian Andrzej Siewior
2024-10-15 23:01                 ` Ankur Arora
2024-10-10 17:42           ` Ankur Arora
2024-10-09 16:54 ` [PATCH 3/7] rcu: fix header guard for rcu_all_qs() Ankur Arora
2024-10-10  6:41   ` Sebastian Andrzej Siewior
2024-10-10  8:11     ` Peter Zijlstra
2024-10-10 14:29       ` Paul E. McKenney
2024-10-09 16:54 ` [PATCH 4/7] rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y Ankur Arora
2024-10-09 19:05   ` Ankur Arora
2024-10-10 14:37     ` Paul E. McKenney
2024-10-10 17:59       ` Ankur Arora [this message]
2024-10-10  6:50   ` Sebastian Andrzej Siewior
2024-10-10 17:56     ` Ankur Arora
2024-10-11  7:52       ` Sebastian Andrzej Siewior
2024-10-09 16:54 ` [PATCH 5/7] rcu: rename PREEMPT_AUTO to PREEMPT_LAZY Ankur Arora
2024-10-09 18:02   ` Peter Zijlstra
2024-10-09 18:52     ` Ankur Arora
2024-10-09 16:54 ` [PATCH 6/7] osnoise: handle quiescent states for PREEMPT_RCU=n, PREEMPTION=y Ankur Arora
2024-10-10  6:53   ` Sebastian Andrzej Siewior
2024-10-10 14:39     ` Paul E. McKenney
2024-10-10 17:50     ` Ankur Arora
2024-10-11  7:36       ` Sebastian Andrzej Siewior
2024-10-14 20:14         ` Ankur Arora
2024-10-09 16:54 ` [PATCH 7/7] powerpc: add support for PREEMPT_LAZY Ankur Arora
2024-10-10  7:22   ` Sebastian Andrzej Siewior
2024-10-10 18:10     ` Ankur Arora
2024-10-11 18:35       ` Shrikanth Hegde
2024-10-12 22:42         ` Michael Ellerman

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=87v7xz7sak.fsf@oracle.com \
    --to=ankur.a.arora@oracle.com \
    --cc=bigeasy@linutronix.de \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=efault@gmx.de \
    --cc=frederic@kernel.org \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.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 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.