hi, Paul,
On Tue, Sep 03, 2024 at 03:26:43AM -0700, Paul E. McKenney wrote:
> On Tue, Sep 03, 2024 at 02:49:48PM +0800, kernel test robot wrote:
> >
> >
> > Hello,
> >
> > kernel test robot noticed "BUG:using__this_cpu_read()in_preemptible" on:
> >
> > commit: 558049054fe90985d650a50b6a757943a9faf646 ("srcu: Add
> > srcu_read_lock_lite() and srcu_read_unlock_lite()")
> > https://github.com/paulmckrcu/linux dev.2024.08.30b
> >
> > in testcase: boot
> >
> > compiler: gcc-12
> > test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
> >
> > (please refer to attached dmesg/kmsg for entire log/backtrace)
> >
> >
> > +------------------------------------------+------------+------------+
> > | | ddf16dbef6 | 558049054f |
> > +------------------------------------------+------------+------------+
> > | BUG:using__this_cpu_read()in_preemptible | 0 | 12 |
> > +------------------------------------------+------------+------------+
> >
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new
> > version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <[email protected]>
> > | Closes: https://lore.kernel.org/oe-lkp/[email protected]
>
> Good catch, thank you for testing! Does the incremental patch at the
> end of this email fix this for you?
>
> Thanx, Paul
I applied patch directly upon 558049054f, confirmed the issue gone.
>
>
> commit 01c732e108f6ea51e1660ad6bd59fff36e653ddb
> Author: Paul E. McKenney <[email protected]>
> Date: Tue Sep 3 03:25:27 2024 -0700
>
> squash! srcu: Add srcu_read_lock_lite() and srcu_read_unlock_lite()
>
> [ paulmck: Apply kernel test robot feedback. ]
>
> Signed-off-by: Paul E. McKenney <[email protected]>
>
> diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
> index 3133646f0b258..637d366a4dc7b 100644
> --- a/kernel/rcu/srcutree.c
> +++ b/kernel/rcu/srcutree.c
> @@ -1239,7 +1239,7 @@ static bool srcu_should_expedite(struct srcu_struct
> *ssp)
>
> check_init_srcu_struct(ssp);
> /* If _lite() readers, don't do unsolicited expediting. */
> - if (__this_cpu_read(ssp->sda->srcu_reader_flavor) &
> SRCU_READ_FLAVOR_LITE)
> + if (this_cpu_read(ssp->sda->srcu_reader_flavor) & SRCU_READ_FLAVOR_LITE)
> return false;
> /* If the local srcu_data structure has callbacks, not idle. */
> sdp = raw_cpu_ptr(ssp->sda);