On Tue, Jun 24, 2025 at 08:10:55PM -0700, Boqun Feng wrote: > Add the refscale test for shazptr to measure the reader side > performance. > > Signed-off-by: Boqun Feng <boqun.f...@gmail.com> > --- > kernel/rcu/refscale.c | 39 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) > > diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c > index f11a7c2af778..154520e4ee4c 100644 > --- a/kernel/rcu/refscale.c > +++ b/kernel/rcu/refscale.c > @@ -29,6 +29,7 @@ > #include <linux/reboot.h> > #include <linux/sched.h> > #include <linux/seq_buf.h> > +#include <linux/shazptr.h> > #include <linux/spinlock.h> > #include <linux/smp.h> > #include <linux/stat.h> > @@ -890,6 +891,43 @@ static const struct ref_scale_ops typesafe_seqlock_ops = > { > .name = "typesafe_seqlock" > }; > > +static void ref_shazptr_read_section(const int nloops) > +{ > + int i; > + > + for (i = nloops; i >= 0; i--) { > + preempt_disable(); > + { guard(shazptr)(ref_shazptr_read_section); } > + preempt_enable();
scoped_guard (preempt) guard(shazptr)(ref_shazptr_read_section); > + } > +} > + > +static void ref_shazptr_delay_section(const int nloops, const int udl, const > int ndl) > +{ > + int i; > + > + for (i = nloops; i >= 0; i--) { > + preempt_disable(); > + { > + guard(shazptr)(ref_shazptr_delay_section); > + un_delay(udl, ndl); > + } > + preempt_enable(); scoped_guard (preempt) { guard(shazptr)(ref_shazptr_delay_section); un_delay(udl, ndl); } > + } > +} > + > +static bool ref_shazptr_init(void) > +{ > + return true; > +} > + > +static const struct ref_scale_ops shazptr_ops = { > + .init = ref_shazptr_init, > + .readsection = ref_shazptr_read_section, > + .delaysection = ref_shazptr_delay_section, > + .name = "shazptr" > +}; > + > static void rcu_scale_one_reader(void) > { > if (readdelay <= 0) > @@ -1197,6 +1235,7 @@ ref_scale_init(void) > &refcnt_ops, &rwlock_ops, &rwsem_ops, &lock_ops, &lock_irq_ops, > &acqrel_ops, &sched_clock_ops, &clock_ops, &jiffies_ops, > &typesafe_ref_ops, &typesafe_lock_ops, &typesafe_seqlock_ops, > + &shazptr_ops, > }; > > if (!torture_init_begin(scale_type, verbose)) > -- > 2.39.5 (Apple Git-154) >