From: Ingo Molnar Date: Tue, 15 Mar 2016 08:00:12 +0000 (+0100) Subject: Merge commit 'fixes.2015.02.23a' into core/rcu X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=8bc6782fe20bd2584c73a35c47329c9fd0a8d34c;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git Merge commit 'fixes.2015.02.23a' into core/rcu Conflicts: kernel/rcu/tree.c Signed-off-by: Ingo Molnar --- 8bc6782fe20bd2584c73a35c47329c9fd0a8d34c diff --cc kernel/rcu/tree.c index 9fd5b628a88d,39f9c73d33c5..55cea189783f --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@@ -2046,9 -2045,7 +2045,9 @@@ static void rcu_gp_cleanup(struct rcu_s needgp = __note_gp_changes(rsp, rnp, rdp) || needgp; /* smp_mb() provided by prior unlock-lock pair. */ nocb += rcu_future_gp_cleanup(rsp, rnp); + sq = rcu_nocb_gp_get(rnp); - raw_spin_unlock_irq(&rnp->lock); + raw_spin_unlock_irq_rcu_node(rnp); + rcu_nocb_gp_cleanup(sq); cond_resched_rcu_qs(); WRITE_ONCE(rsp->gp_activity, jiffies); rcu_gp_slow(rsp, gp_cleanup_delay); @@@ -2247,8 -2246,8 +2248,8 @@@ static void rcu_report_qs_rsp(struct rc { WARN_ON_ONCE(!rcu_gp_in_progress(rsp)); WRITE_ONCE(rsp->gp_flags, READ_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS); - raw_spin_unlock_irqrestore(&rcu_get_root(rsp)->lock, flags); + raw_spin_unlock_irqrestore_rcu_node(rcu_get_root(rsp), flags); - rcu_gp_kthread_wake(rsp); + swake_up(&rsp->gp_wq); /* Memory barrier implied by swake_up() path. */ } /* @@@ -2901,8 -2896,8 +2898,8 @@@ static void force_quiescent_state(struc return; /* Someone beat us to it. */ } WRITE_ONCE(rsp->gp_flags, READ_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS); - raw_spin_unlock_irqrestore(&rnp_old->lock, flags); + raw_spin_unlock_irqrestore_rcu_node(rnp_old, flags); - rcu_gp_kthread_wake(rsp); + swake_up(&rsp->gp_wq); /* Memory barrier implied by swake_up() path. */ } /* @@@ -3528,10 -3523,10 +3525,10 @@@ static void __rcu_report_exp_rnp(struc break; } if (rnp->parent == NULL) { - raw_spin_unlock_irqrestore(&rnp->lock, flags); + raw_spin_unlock_irqrestore_rcu_node(rnp, flags); if (wake) { smp_mb(); /* EGP done before wake_up(). */ - wake_up(&rsp->expedited_wq); + swake_up(&rsp->expedited_wq); } break; }