On 4 October 2026 00:43:48 BST, "Paul E. McKenney" <[email protected]>
wrote:
>On Sat, Oct 03, 2026 at 06:52:44PM +0100, Bradley Morgan wrote:
>> On 3 October 2026 17:17:19 BST, Kunwu Chan <[email protected]> wrote:
>> >Add support for scaling atomic SRCU grace periods using
>> >srcu_read_lock_atomic()/srcu_read_unlock_atomic() and
>> >synchronize_srcu_atomic().
>> >
>> >Suggested-by: Paul E. McKenney <[email protected]>
>> >Signed-off-by: Kunwu Chan <[email protected]>
>> 
>> 1: why didn't u cc me
>> 2: why did you ommit my tag? I tend to review based on correctness, cuz
>idk pauls preferences, once I do I'll be a better rcu reviewer.
>
>Take it easy, Bradley.
>
>Many in the Linux kernel community consider it polite to drop a tag
>from (or, as in this case, avoid adding a tag to) a patch that changed
>significantly.  On the CC issue, you did find the patch the first time
>without him CCing you.  ;-)
>
>Kunwu did nothing wrong here.

I'm annoyed but not mad, no grudges taken..

>
>                                                       Thanx, Paul
>
>> >---
>> >Changes since v1:
>> >- Rename srcu_atomic_ctlp to srcua and reuse srcu_ctlp for
>> >  SRCU operations, as suggested by Paul.
>> >- Reuse the existing SRCU cleanup and completed helpers by
>> >  initializing srcu_ctlp in srcu_atomic_scale_init().
>> >- Add .stats using srcu_scale_stats().
>> >- Use "srcua" to match the existing "srcu" and "srcud" scale
>> >  type names.
>> >- Use synchronize_srcu_atomic() for both normal and expedited
>> >  scale tests.
>> >
>> >v1:
>https://lore.kernel.org/all/[email protected]/
>> >Tested with kvm.sh --torture rcuscale scale_type=srcua on x86_64 and
>> >arm64, alongside gp_exp=1 and PROVE_LOCKING=y: no warnings or lockdep
>> >splats.
>> >---
>> > kernel/rcu/rcuscale.c | 41 ++++++++++++++++++++++++++++++++++++++++-
>> > 1 file changed, 40 insertions(+), 1 deletion(-)
>> >
>> >diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
>> >index 1097ec15879c..b172882824ac 100644
>> >--- a/kernel/rcu/rcuscale.c
>> >+++ b/kernel/rcu/rcuscale.c
>> >@@ -293,6 +293,44 @@ static struct rcu_scale_ops srcud_ops = {
>> >    .name           = "srcud"
>> > };
>> > 
>> >+static struct srcu_struct srcua;
>> >+
>> >+static int srcu_scale_atomic_read_lock(void)
>> >+{
>> >+   return srcu_read_lock_atomic(srcu_ctlp);
>> >+}
>> >+
>> >+static void srcu_scale_atomic_read_unlock(int idx)
>> >+{
>> >+   srcu_read_unlock_atomic(srcu_ctlp, idx);
>> >+}
>> >+
>> >+static void srcu_scale_atomic_synchronize(void)
>> >+{
>> >+   synchronize_srcu_atomic(srcu_ctlp);
>> >+}
>> >+
>> >+static void srcu_atomic_scale_init(void)
>> >+{
>> >+   srcu_ctlp = &srcua;
>> >+   init_srcu_struct_atomic(srcu_ctlp);
>> >+}
>> >+
>> >+static struct rcu_scale_ops srcua_ops = {
>> >+   .ptype          = SRCU_FLAVOR,
>> >+   .init           = srcu_atomic_scale_init,
>> >+   .cleanup        = srcu_sync_scale_cleanup,
>> >+   .readlock       = srcu_scale_atomic_read_lock,
>> >+   .readunlock     = srcu_scale_atomic_read_unlock,
>> >+   .get_gp_seq     = srcu_scale_completed,
>> >+   .gp_diff        = rcu_seq_diff,
>> >+   .exp_completed  = srcu_scale_completed,
>> >+   .sync           = srcu_scale_atomic_synchronize,
>> >+   .exp_sync       = srcu_scale_atomic_synchronize,
>> >+   .stats          = srcu_scale_stats,
>> >+   .name           = "srcua"
>> >+};
>> >+
>> > #ifdef CONFIG_TASKS_RCU
>> > 
>> > /*
>> >@@ -1110,7 +1148,8 @@ rcu_scale_init(void)
>> >    long i;
>> >    long j;
>> >    static struct rcu_scale_ops *scale_ops[] = {
>> >-           &rcu_ops, &srcu_ops, &srcud_ops, TASKS_OPS TASKS_RUDE_OPS 
>> >TASKS_TRACING_OPS
>> >+           &rcu_ops, &srcu_ops, &srcua_ops, &srcud_ops,
>> >+           TASKS_OPS TASKS_RUDE_OPS TASKS_TRACING_OPS
>> >    };
>> > 
>> >    if (!torture_init_begin(scale_type, verbose))
>> >
>> >base-commit: d21906b0aa1e9573cdb5e7acaca44966b9d1dcd2
>> >
>> 
>> --- Thanks!
>> "I'm not a very positive person" - Linus torvalds

--- Thanks!
"I'm not a very positive person" - Linus torvalds

Reply via email to