From: Ankur Arora <ankur.a.arora@oracle.com>
To: Ankur Arora <ankur.a.arora@oracle.com>
Cc: linux-kernel@vger.kernel.org, peterz@infradead.org,
tglx@linutronix.de, paulmck@kernel.org, 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: Wed, 09 Oct 2024 12:05:47 -0700 [thread overview]
Message-ID: <87o73t9jw4.fsf@oracle.com> (raw)
In-Reply-To: <20241009165411.3426937-5-ankur.a.arora@oracle.com>
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?
--
ankur
next prev parent reply other threads:[~2024-10-09 19:07 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 [this message]
2024-10-10 14:37 ` Paul E. McKenney
2024-10-10 17:59 ` Ankur Arora
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=87o73t9jw4.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.