From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: paulmck@kernel.org
Cc: frederic@kernel.org, rcu@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-team@meta.com,
rostedt@goodmis.org, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Kent Overstreet <kent.overstreet@linux.dev>,
bpf@vger.kernel.org
Subject: Re: [PATCH rcu 05/12] srcu: Standardize srcu_data pointers to "sdp" and similar
Date: Tue, 15 Oct 2024 10:40:27 +0530 [thread overview]
Message-ID: <72ab4701-3d40-42d3-a26a-a0d76fbe27ca@amd.com> (raw)
In-Reply-To: <e63311e5-4311-4b08-abcc-8298a22c52f4@paulmck-laptop>
On 10/15/2024 5:59 AM, Paul E. McKenney wrote:
> On Mon, Oct 14, 2024 at 09:49:52AM -0700, Paul E. McKenney wrote:
>> On Mon, Oct 14, 2024 at 02:45:50PM +0530, Neeraj Upadhyay wrote:
>>> On 10/9/2024 11:37 PM, Paul E. McKenney wrote:
>>>> This commit changes a few "cpuc" variables to "sdp" to align wiht usage
>>>> elsewhere.
>>>>
>>>
>>> s/wiht/with/
>>
>> Good eyes!
>
> And fixed.
> >>> This commit is doing a lot more than renaming "cpuc".
>>
>> Indeed, it does look like I forgot to commit between two changes.
>>
>> It looks like this commit log goes with the changes to the
>> functions srcu_readers_lock_idx(), srcu_readers_unlock_idx(), and
>> srcu_readers_active(). With the exception of the change from "NMI-safe"
>> to "reader flavors in the WARN_ONCE() string in srcu_readers_unlock_idx().
>>
>> How would you suggest that I split up the non-s/cpuc/sdp/ changes?
>
> As a first step, I split it three ways, as you can see on the updated "dev"
> branch in the -rcu tree.
>
> Thoughts?
>
Split looks good to me!
- Neeraj
> Thanx, Paul
>
>>> - Neeraj
>>>
>>>> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
>>>> Cc: Alexei Starovoitov <ast@kernel.org>
>>>> Cc: Andrii Nakryiko <andrii@kernel.org>
>>>> Cc: Peter Zijlstra <peterz@infradead.org>
>>>> Cc: Kent Overstreet <kent.overstreet@linux.dev>
>>>> Cc: <bpf@vger.kernel.org>
>>>> ---
>>>> include/linux/srcu.h | 35 ++++++++++++++++++----------------
>>>> include/linux/srcutree.h | 4 ++++
>>>> kernel/rcu/srcutree.c | 41 ++++++++++++++++++++--------------------
>>>> 3 files changed, 44 insertions(+), 36 deletions(-)
>>>>
>>>> diff --git a/include/linux/srcu.h b/include/linux/srcu.h
>>>> index 06728ef6f32a4..84daaa33ea0ab 100644
>>>> --- a/include/linux/srcu.h
>>>> +++ b/include/linux/srcu.h
>>>> @@ -176,10 +176,6 @@ static inline int srcu_read_lock_held(const struct srcu_struct *ssp)
>>>>
>>>> #endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */
>>>>
>>>> -#define SRCU_NMI_UNKNOWN 0x0
>>>> -#define SRCU_NMI_UNSAFE 0x1
>>>> -#define SRCU_NMI_SAFE 0x2
>>>> -
>>>> #if defined(CONFIG_PROVE_RCU) && defined(CONFIG_TREE_SRCU)
>>>> void srcu_check_read_flavor(struct srcu_struct *ssp, int read_flavor);
>>>> #else
>>>> @@ -235,16 +231,19 @@ static inline void srcu_check_read_flavor(struct srcu_struct *ssp, int read_flav
>>>> * a mutex that is held elsewhere while calling synchronize_srcu() or
>>>> * synchronize_srcu_expedited().
>>>> *
>>>> - * Note that srcu_read_lock() and the matching srcu_read_unlock() must
>>>> - * occur in the same context, for example, it is illegal to invoke
>>>> - * srcu_read_unlock() in an irq handler if the matching srcu_read_lock()
>>>> - * was invoked in process context.
>>>> + * The return value from srcu_read_lock() must be passed unaltered
>>>> + * to the matching srcu_read_unlock(). Note that srcu_read_lock() and
>>>> + * the matching srcu_read_unlock() must occur in the same context, for
>>>> + * example, it is illegal to invoke srcu_read_unlock() in an irq handler
>>>> + * if the matching srcu_read_lock() was invoked in process context. Or,
>>>> + * for that matter to invoke srcu_read_unlock() from one task and the
>>>> + * matching srcu_read_lock() from another.
>>>> */
>>>> static inline int srcu_read_lock(struct srcu_struct *ssp) __acquires(ssp)
>>>> {
>>>> int retval;
>>>>
>>>> - srcu_check_read_flavor(ssp, false);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NORMAL);
>>>> retval = __srcu_read_lock(ssp);
>>>> srcu_lock_acquire(&ssp->dep_map);
>>>> return retval;
>>>> @@ -256,12 +255,16 @@ static inline int srcu_read_lock(struct srcu_struct *ssp) __acquires(ssp)
>>>> *
>>>> * Enter an SRCU read-side critical section, but in an NMI-safe manner.
>>>> * See srcu_read_lock() for more information.
>>>> + *
>>>> + * If srcu_read_lock_nmisafe() is ever used on an srcu_struct structure,
>>>> + * then none of the other flavors may be used, whether before, during,
>>>> + * or after.
>>>> */
>>>> static inline int srcu_read_lock_nmisafe(struct srcu_struct *ssp) __acquires(ssp)
>>>> {
>>>> int retval;
>>>>
>>>> - srcu_check_read_flavor(ssp, true);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NMI);
>>>> retval = __srcu_read_lock_nmisafe(ssp);
>>>> rcu_try_lock_acquire(&ssp->dep_map);
>>>> return retval;
>>>> @@ -273,7 +276,7 @@ srcu_read_lock_notrace(struct srcu_struct *ssp) __acquires(ssp)
>>>> {
>>>> int retval;
>>>>
>>>> - srcu_check_read_flavor(ssp, false);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NORMAL);
>>>> retval = __srcu_read_lock(ssp);
>>>> return retval;
>>>> }
>>>> @@ -302,7 +305,7 @@ srcu_read_lock_notrace(struct srcu_struct *ssp) __acquires(ssp)
>>>> static inline int srcu_down_read(struct srcu_struct *ssp) __acquires(ssp)
>>>> {
>>>> WARN_ON_ONCE(in_nmi());
>>>> - srcu_check_read_flavor(ssp, false);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NORMAL);
>>>> return __srcu_read_lock(ssp);
>>>> }
>>>>
>>>> @@ -317,7 +320,7 @@ static inline void srcu_read_unlock(struct srcu_struct *ssp, int idx)
>>>> __releases(ssp)
>>>> {
>>>> WARN_ON_ONCE(idx & ~0x1);
>>>> - srcu_check_read_flavor(ssp, false);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NORMAL);
>>>> srcu_lock_release(&ssp->dep_map);
>>>> __srcu_read_unlock(ssp, idx);
>>>> }
>>>> @@ -333,7 +336,7 @@ static inline void srcu_read_unlock_nmisafe(struct srcu_struct *ssp, int idx)
>>>> __releases(ssp)
>>>> {
>>>> WARN_ON_ONCE(idx & ~0x1);
>>>> - srcu_check_read_flavor(ssp, true);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NMI);
>>>> rcu_lock_release(&ssp->dep_map);
>>>> __srcu_read_unlock_nmisafe(ssp, idx);
>>>> }
>>>> @@ -342,7 +345,7 @@ static inline void srcu_read_unlock_nmisafe(struct srcu_struct *ssp, int idx)
>>>> static inline notrace void
>>>> srcu_read_unlock_notrace(struct srcu_struct *ssp, int idx) __releases(ssp)
>>>> {
>>>> - srcu_check_read_flavor(ssp, false);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NORMAL);
>>>> __srcu_read_unlock(ssp, idx);
>>>> }
>>>>
>>>> @@ -359,7 +362,7 @@ static inline void srcu_up_read(struct srcu_struct *ssp, int idx)
>>>> {
>>>> WARN_ON_ONCE(idx & ~0x1);
>>>> WARN_ON_ONCE(in_nmi());
>>>> - srcu_check_read_flavor(ssp, false);
>>>> + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_NORMAL);
>>>> __srcu_read_unlock(ssp, idx);
>>>> }
>>>>
>>>> diff --git a/include/linux/srcutree.h b/include/linux/srcutree.h
>>>> index ab7d8d215b84b..79ad809c7f035 100644
>>>> --- a/include/linux/srcutree.h
>>>> +++ b/include/linux/srcutree.h
>>>> @@ -43,6 +43,10 @@ struct srcu_data {
>>>> struct srcu_struct *ssp;
>>>> };
>>>>
>>>> +/* Values for ->srcu_reader_flavor. */
>>>> +#define SRCU_READ_FLAVOR_NORMAL 0x1 // srcu_read_lock().
>>>> +#define SRCU_READ_FLAVOR_NMI 0x2 // srcu_read_lock_nmisafe().
>>>> +
>>>> /*
>>>> * Node in SRCU combining tree, similar in function to rcu_data.
>>>> */
>>>> diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
>>>> index abe55777c4335..4c51be484b48a 100644
>>>> --- a/kernel/rcu/srcutree.c
>>>> +++ b/kernel/rcu/srcutree.c
>>>> @@ -438,9 +438,9 @@ static unsigned long srcu_readers_lock_idx(struct srcu_struct *ssp, int idx)
>>>> unsigned long sum = 0;
>>>>
>>>> for_each_possible_cpu(cpu) {
>>>> - struct srcu_data *cpuc = per_cpu_ptr(ssp->sda, cpu);
>>>> + struct srcu_data *sdp = per_cpu_ptr(ssp->sda, cpu);
>>>>
>>>> - sum += atomic_long_read(&cpuc->srcu_lock_count[idx]);
>>>> + sum += atomic_long_read(&sdp->srcu_lock_count[idx]);
>>>> }
>>>> return sum;
>>>> }
>>>> @@ -456,14 +456,14 @@ static unsigned long srcu_readers_unlock_idx(struct srcu_struct *ssp, int idx)
>>>> unsigned long sum = 0;
>>>>
>>>> for_each_possible_cpu(cpu) {
>>>> - struct srcu_data *cpuc = per_cpu_ptr(ssp->sda, cpu);
>>>> + struct srcu_data *sdp = per_cpu_ptr(ssp->sda, cpu);
>>>>
>>>> - sum += atomic_long_read(&cpuc->srcu_unlock_count[idx]);
>>>> + sum += atomic_long_read(&sdp->srcu_unlock_count[idx]);
>>>> if (IS_ENABLED(CONFIG_PROVE_RCU))
>>>> - mask = mask | READ_ONCE(cpuc->srcu_reader_flavor);
>>>> + mask = mask | READ_ONCE(sdp->srcu_reader_flavor);
>>>> }
>>>> WARN_ONCE(IS_ENABLED(CONFIG_PROVE_RCU) && (mask & (mask - 1)),
>>>> - "Mixed NMI-safe readers for srcu_struct at %ps.\n", ssp);
>>>> + "Mixed reader flavors for srcu_struct at %ps.\n", ssp);
>>>> return sum;
>>>> }
>>>>
>>>> @@ -564,12 +564,12 @@ static bool srcu_readers_active(struct srcu_struct *ssp)
>>>> unsigned long sum = 0;
>>>>
>>>> for_each_possible_cpu(cpu) {
>>>> - struct srcu_data *cpuc = per_cpu_ptr(ssp->sda, cpu);
>>>> + struct srcu_data *sdp = per_cpu_ptr(ssp->sda, cpu);
>>>>
>>>> - sum += atomic_long_read(&cpuc->srcu_lock_count[0]);
>>>> - sum += atomic_long_read(&cpuc->srcu_lock_count[1]);
>>>> - sum -= atomic_long_read(&cpuc->srcu_unlock_count[0]);
>>>> - sum -= atomic_long_read(&cpuc->srcu_unlock_count[1]);
>>>> + sum += atomic_long_read(&sdp->srcu_lock_count[0]);
>>>> + sum += atomic_long_read(&sdp->srcu_lock_count[1]);
>>>> + sum -= atomic_long_read(&sdp->srcu_unlock_count[0]);
>>>> + sum -= atomic_long_read(&sdp->srcu_unlock_count[1]);
>>>> }
>>>> return sum;
>>>> }
>>>> @@ -703,20 +703,21 @@ EXPORT_SYMBOL_GPL(cleanup_srcu_struct);
>>>> */
>>>> void srcu_check_read_flavor(struct srcu_struct *ssp, int read_flavor)
>>>> {
>>>> - int reader_flavor_mask = 1 << read_flavor;
>>>> - int old_reader_flavor_mask;
>>>> + int old_read_flavor;
>>>> struct srcu_data *sdp;
>>>>
>>>> - /* NMI-unsafe use in NMI is a bad sign */
>>>> - WARN_ON_ONCE(!read_flavor && in_nmi());
>>>> + /* NMI-unsafe use in NMI is a bad sign, as is multi-bit read_flavor values. */
>>>> + WARN_ON_ONCE((read_flavor != SRCU_READ_FLAVOR_NMI) && in_nmi());
>>>> + WARN_ON_ONCE(read_flavor & (read_flavor - 1));
>>>> +
>>>> sdp = raw_cpu_ptr(ssp->sda);
>>>> - old_reader_flavor_mask = READ_ONCE(sdp->srcu_reader_flavor);
>>>> - if (!old_reader_flavor_mask) {
>>>> - old_reader_flavor_mask = cmpxchg(&sdp->srcu_reader_flavor, 0, reader_flavor_mask);
>>>> - if (!old_reader_flavor_mask)
>>>> + old_read_flavor = READ_ONCE(sdp->srcu_reader_flavor);
>>>> + if (!old_read_flavor) {
>>>> + old_read_flavor = cmpxchg(&sdp->srcu_reader_flavor, 0, read_flavor);
>>>> + if (!old_read_flavor)
>>>> return;
>>>> }
>>>> - WARN_ONCE(old_reader_flavor_mask != reader_flavor_mask, "CPU %d old state %d new state %d\n", sdp->cpu, old_reader_flavor_mask, reader_flavor_mask);
>>>> + WARN_ONCE(old_read_flavor != read_flavor, "CPU %d old state %d new state %d\n", sdp->cpu, old_read_flavor, read_flavor);
>>>> }
>>>> EXPORT_SYMBOL_GPL(srcu_check_read_flavor);
>>>> #endif /* CONFIG_PROVE_RCU */
>>>
next prev parent reply other threads:[~2024-10-15 5:10 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-09 18:07 [PATCH rcu 0/12] SRCU-lite changes for v6.13 Paul E. McKenney
2024-10-09 18:07 ` [PATCH rcu 01/12] srcu: Rename srcu_might_be_idle() to srcu_should_expedite() Paul E. McKenney
2024-10-14 8:56 ` Neeraj Upadhyay
2024-10-09 18:07 ` [PATCH rcu 02/12] srcu: Introduce srcu_gp_is_expedited() helper function Paul E. McKenney
2024-10-14 8:57 ` Neeraj Upadhyay
2024-10-09 18:07 ` [PATCH rcu 03/12] srcu: Renaming in preparation for additional reader flavor Paul E. McKenney
2024-10-14 9:10 ` Neeraj Upadhyay
2024-10-14 16:52 ` Paul E. McKenney
2024-10-15 3:25 ` Neeraj Upadhyay
2024-10-09 18:07 ` [PATCH rcu 04/12] srcu: Bit manipulation changes " Paul E. McKenney
2024-10-14 9:12 ` Neeraj Upadhyay
2024-10-14 16:51 ` Paul E. McKenney
2024-10-15 3:32 ` Neeraj Upadhyay
2024-10-09 18:07 ` [PATCH rcu 05/12] srcu: Standardize srcu_data pointers to "sdp" and similar Paul E. McKenney
2024-10-14 9:15 ` Neeraj Upadhyay
2024-10-14 16:49 ` Paul E. McKenney
2024-10-15 0:29 ` Paul E. McKenney
2024-10-15 5:10 ` Neeraj Upadhyay [this message]
2024-10-09 18:07 ` [PATCH rcu 06/12] srcu: Add srcu_read_lock_lite() and srcu_read_unlock_lite() Paul E. McKenney
2024-11-11 12:54 ` Neeraj Upadhyay
2024-11-11 15:26 ` Paul E. McKenney
2024-11-11 16:51 ` Neeraj Upadhyay
2024-11-12 1:28 ` Paul E. McKenney
2024-11-12 1:31 ` [PATCH rcu 1/3] srcu: Remove smp_mb() from srcu_read_unlock_lite() Paul E. McKenney
2024-11-12 3:17 ` Neeraj Upadhyay
2024-11-12 1:31 ` [PATCH rcu 2/3] srcu: Check for srcu_read_lock_lite() across all CPUs Paul E. McKenney
2024-11-12 3:28 ` Neeraj Upadhyay
2024-11-12 5:48 ` Paul E. McKenney
2024-11-12 1:31 ` [PATCH rcu 3/3] srcu: Unconditionally record srcu_read_lock_lite() in ->srcu_reader_flavor Paul E. McKenney
2024-11-12 4:32 ` Neeraj Upadhyay
2024-11-12 3:15 ` [PATCH rcu 06/12] srcu: Add srcu_read_lock_lite() and srcu_read_unlock_lite() Neeraj Upadhyay
2024-10-09 18:07 ` [PATCH rcu 07/12] srcu: Allow inlining of __srcu_read_{,un}lock_lite() Paul E. McKenney
2024-10-09 18:07 ` [PATCH rcu 08/12] rcutorture: Expand RCUTORTURE_RDR_MASK_[12] to eight bits Paul E. McKenney
2024-10-09 18:07 ` [PATCH rcu 09/12] rcutorture: Add reader_flavor parameter for SRCU readers Paul E. McKenney
2024-10-09 18:07 ` [PATCH rcu 10/12] rcutorture: Add srcu_read_lock_lite() support to rcutorture.reader_flavor Paul E. McKenney
2024-10-09 18:07 ` [PATCH rcu 11/12] rcutorture: Add light-weight SRCU scenario Paul E. McKenney
2024-10-09 18:07 ` [PATCH rcu 12/12] refscale: Add srcu_read_lock_lite() support using "srcu-lite" Paul E. McKenney
2024-10-10 15:38 ` Frederic Weisbecker
2024-10-10 16:06 ` Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 0/13] SRCU-lite changes for v6.13 Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 01/13] srcu: Rename srcu_might_be_idle() to srcu_should_expedite() Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 02/13] srcu: Introduce srcu_gp_is_expedited() helper function Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 03/13] srcu: Renaming in preparation for additional reader flavor Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 04/13] srcu: Bit manipulation changes " Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 05/13] srcu: Standardize srcu_data pointers to "sdp" and similar Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 06/13] srcu: Add srcu_read_lock_lite() and srcu_read_unlock_lite() Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 07/13] srcu: Allow inlining of __srcu_read_{,un}lock_lite() Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 08/13] rcutorture: Expand RCUTORTURE_RDR_MASK_[12] to eight bits Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 09/13] rcutorture: Add reader_flavor parameter for SRCU readers Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 10/13] rcutorture: Add srcu_read_lock_lite() support to rcutorture.reader_flavor Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 11/13] rcutorture: Add light-weight SRCU scenario Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 12/13] refscale: Add srcu_read_lock_lite() support using "srcu-lite" Paul E. McKenney
2024-10-11 17:39 ` [PATCH v2 rcu 13/13] srcu: Improve srcu_read_lock_lite() kernel-doc comment Paul E. McKenney
2024-10-11 17:57 ` Andrii Nakryiko
2024-10-15 15:59 ` Paul E. McKenney
2024-10-15 16:11 ` [PATCH v3 rcu 0/13] SRCU-lite changes for v6.13 Paul E. McKenney
2024-10-15 16:10 ` [PATCH rcu 01/15] srcu: Rename srcu_might_be_idle() to srcu_should_expedite() Paul E. McKenney
2024-10-15 16:10 ` [PATCH rcu 02/15] srcu: Introduce srcu_gp_is_expedited() helper function Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 03/15] srcu: Renaming in preparation for additional reader flavor Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 04/15] srcu: Bit manipulation changes " Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 05/15] srcu: Standardize srcu_data pointers to "sdp" and similar Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 06/15] srcu: Improve srcu_read_lock{,_nmisafe}() comments Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 07/15] srcu: Create CPP macros for normal and NMI-safe SRCU readers Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 08/15] srcu: Add srcu_read_lock_lite() and srcu_read_unlock_lite() Paul E. McKenney
2024-11-04 23:27 ` Frederic Weisbecker
2024-11-05 0:39 ` Paul E. McKenney
2024-11-11 11:17 ` Neeraj Upadhyay
2024-11-11 15:17 ` Paul E. McKenney
2024-11-11 17:46 ` Andrii Nakryiko
2024-11-11 17:51 ` Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 09/15] srcu: Allow inlining of __srcu_read_{,un}lock_lite() Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 10/15] rcutorture: Expand RCUTORTURE_RDR_MASK_[12] to eight bits Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 11/15] rcutorture: Add reader_flavor parameter for SRCU readers Paul E. McKenney
2024-11-12 4:42 ` Neeraj Upadhyay
2024-11-12 19:27 ` Paul E. McKenney
2024-11-13 3:20 ` Neeraj Upadhyay
2024-10-15 16:11 ` [PATCH rcu 12/15] rcutorture: Add srcu_read_lock_lite() support to rcutorture.reader_flavor Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 13/15] rcutorture: Add light-weight SRCU scenario Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 14/15] refscale: Add srcu_read_lock_lite() support using "srcu-lite" Paul E. McKenney
2024-10-29 0:25 ` [PATCH rcu v4 " Paul E. McKenney
2024-10-15 16:11 ` [PATCH rcu 15/15] srcu: Improve srcu_read_lock_lite() kernel-doc comment Paul E. McKenney
2024-11-12 4:37 ` [PATCH v3 rcu 0/13] SRCU-lite changes for v6.13 Neeraj Upadhyay
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=72ab4701-3d40-42d3-a26a-a0d76fbe27ca@amd.com \
--to=neeraj.upadhyay@amd.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=frederic@kernel.org \
--cc=kent.overstreet@linux.dev \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
/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.