From: Paul E. McKenney Date: Fri, 3 Aug 2012 15:56:17 +0000 (-0700) Subject: Merge branches 'bigrt.2012.07.31a', 'doctorture.2012.08.03a', 'fixes.2012.08.03a... X-Git-Tag: next-20120816~27^2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=d1d61c117a7be3ad34bee463ef657f6f51b3046f;p=karo-tx-linux.git Merge branches 'bigrt.2012.07.31a', 'doctorture.2012.08.03a', 'fixes.2012.08.03a', 'hotplug.2012.08.03a' and 'idle.2012.07.31a' into dev.3.7.2012.08.03a Conflicts: kernel/rcutree.c --- d1d61c117a7be3ad34bee463ef657f6f51b3046f diff --cc kernel/rcutree.c index 44609c3debbe,f280e542e3e9,9f44749eb9bb,8fda815318a6,ccf3cbf8e037..a3484892ca48 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c @@@@@@ -324,37 -316,37 -316,8 -316,37 -319,37 +327,8 @@@@@@ static struct rcu_node *rcu_get_root(st return &rsp->node[0]; } -/* - * If the specified CPU is offline, tell the caller that it is in - * a quiescent state. Otherwise, whack it with a reschedule IPI. - * Grace periods can end up waiting on an offline CPU when that - * CPU is in the process of coming online -- it will be added to the - * rcu_node bitmasks before it actually makes it online. The same thing - * can happen while a CPU is in the process of coming online. Because this - * race is quite rare, we check for it after detecting that the grace - * period has been delayed rather than checking each and every CPU - * each and every time we start a new grace period. - */ -static int rcu_implicit_offline_qs(struct rcu_data *rdp) -{ - /* - * If the CPU is offline for more than a jiffy, it is in a quiescent - * state. We can trust its state not to change because interrupts - * are disabled. The reason for the jiffy's worth of slack is to - * handle CPUs initializing on the way up and finding their way - * to the idle loop on the way down. - */ - if (cpu_is_offline(rdp->cpu) && - ULONG_CMP_LT(rdp->rsp->gp_start + 2, jiffies)) { - trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, "ofl"); - rdp->offline_fqs++; - return 1; - } - return 0; -} - /* -- - * If the specified CPU is offline, tell the caller that it is in -- - * a quiescent state. Otherwise, whack it with a reschedule IPI. -- - * Grace periods can end up waiting on an offline CPU when that -- - * CPU is in the process of coming online -- it will be added to the -- - * rcu_node bitmasks before it actually makes it online. The same thing -- - * can happen while a CPU is in the process of coming online. Because this -- - * race is quite rare, we check for it after detecting that the grace -- - * period has been delayed rather than checking each and every CPU -- - * each and every time we start a new grace period. -- - */ -- - static int rcu_implicit_offline_qs(struct rcu_data *rdp) -- - { -- - /* -- - * If the CPU is offline for more than a jiffy, it is in a quiescent -- - * state. We can trust its state not to change because interrupts -- - * are disabled. The reason for the jiffy's worth of slack is to -- - * handle CPUs initializing on the way up and finding their way -- - * to the idle loop on the way down. -- - */ -- - if (cpu_is_offline(rdp->cpu) && -- - ULONG_CMP_LT(rdp->rsp->gp_start + 2, jiffies)) { -- - trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, "ofl"); -- - rdp->offline_fqs++; -- - return 1; -- - } -- - return 0; -- - } -- - -- - /* ---- * rcu_idle_enter_common - inform RCU that current CPU is moving towards idle ++++ * rcu_eqs_enter_common - current CPU is moving towards extended quiescent state * * If the new value of the ->dynticks_nesting counter now is zero, * we really have entered idle, and must do the appropriate accounting. @@@@@@ -452,12 -444,12 -415,13 -444,12 -506,12 +485,13 @@@@@@ void rcu_irq_exit(void if (rdtp->dynticks_nesting) trace_rcu_dyntick("--=", oldval, rdtp->dynticks_nesting); else ---- rcu_idle_enter_common(rdtp, oldval); ++++ rcu_eqs_enter_common(rdtp, oldval, 1); local_irq_restore(flags); } ++ ++EXPORT_SYMBOL_GPL(rcu_irq_exit); /* ---- * rcu_idle_exit_common - inform RCU that current CPU is moving away from idle ++++ * rcu_eqs_exit_common - current CPU moving away from extended quiescent state * * If the new value of the ->dynticks_nesting counter was previously zero, * we really have exited idle, and must do the appropriate accounting. @@@@@@ -547,9 -539,9 -511,10 -539,9 -657,9 +637,10 @@@@@@ void rcu_irq_enter(void if (oldval) trace_rcu_dyntick("++=", oldval, rdtp->dynticks_nesting); else ---- rcu_idle_exit_common(rdtp, oldval); ++++ rcu_eqs_exit_common(rdtp, oldval, 1); local_irq_restore(flags); } ++ ++EXPORT_SYMBOL_GPL(rcu_irq_enter); /** * rcu_nmi_enter - inform RCU of entry to NMI context