On Sat, Mar 30, 2019 at 09:14:36AM +0530, Neeraj Upadhyay wrote: > On 3/30/19 2:57 AM, Paul E. McKenney wrote: > >On Fri, Mar 29, 2019 at 07:52:15PM +0530, Neeraj Upadhyay wrote: > >> > >> > >>On 3/29/19 6:58 PM, Mukesh Ojha wrote: > >>> > >>>On 3/29/2019 4:57 PM, Neeraj Upadhyay wrote: > >>>>Only unlock the root node, if current node (rnp) is not > >>>>root node. > >>>> > >>>>Signed-off-by: Neeraj Upadhyay <neeraju@xxxxxxxxxxxxxx> > >>> > >>> > >>> > >>>>--- > >>>> kernel/rcu/tree_stall.h | 4 +++- > >>>> 1 file changed, 3 insertions(+), 1 deletion(-) > >>>> > >>>>diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h > >>>>index f65a73a..0651833 100644 > >>>>--- a/kernel/rcu/tree_stall.h > >>>>+++ b/kernel/rcu/tree_stall.h > >>> > >>> > >>>why this is showing as under tree_stall.h while it is under > >>>"kernel/rcu/tree.c" > >> > >>It's moved in https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?h=dev&id=10462d6f58fb6dbde7563e9343505d98d5bfba3d > >> > >>Please see linux-rcu dev tree for other changes, which moves code to > >>this file. > >> > >> > >>Thanks > >>Neeraj > >> > >>> > >>>>@@ -630,7 +630,9 @@ static void rcu_check_gp_start_stall(struct > >>>>rcu_node *rnp, struct rcu_data *rdp, > >>>> time_before(j, rcu_state.gp_req_activity + gpssdelay) || > >>>> time_before(j, rcu_state.gp_activity + gpssdelay) || > >>>> atomic_xchg(&warned, 1)) { > >>>>- raw_spin_unlock_rcu_node(rnp_root); /* irqs remain disabled. */ > >>>>+ if (rnp_root != rnp) > >>>>+ /* irqs remain disabled. */ > >>>>+ raw_spin_unlock_rcu_node(rnp_root); > >>> > >>>Looks good as it will balance the lock .if it is the root_node, > >>>which was not there earlier, and unlock was happening without any > >>>lock on root. > >>> > >>>Reviewed-by: Mukesh Ojha <mojha@xxxxxxxxxxxxxx> > > > >Applied, again thank you both! > > > >In both cases, I updated the commit log, so please check to make sure > >that I didn't mess anything up. > > > > Thanx, Paul > > > > Thanks Paul. One minor comment on https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?h=dev&id=ec6530e763046b6bb1f4c2c2aed49ebc68aae2a0 > > > "it clearly does not make sense to release > both rnp->lock and rnp->lock" > > should be rnp->lock and rnp_root->lock Good eyes, fixed, thank you! Thanx, Paul > Thanks > Neeraj > > >>>Cheers, > >>>-Mukesh > >>> > >>>> raw_spin_unlock_irqrestore_rcu_node(rnp, flags); > >>>> return; > >>>> } > >> > >>-- > >>QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a > >>member of the Code Aurora Forum, hosted by The Linux Foundation > >> > > > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a > member of the Code Aurora Forum, hosted by The Linux Foundation >