From: Paul E. McKenney Date: Wed, 19 Jun 2019 16:21:46 +0000 (-0700) Subject: Merge branches 'consolidate.2019.05.28a', 'doc.2019.05.28a', 'fixes.2019.06.13a'... X-Git-Tag: v5.3-rc1~204^2^2^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=11ca7a9d541d09586fbf89290d1e14619cc40de0;p=linux.git Merge branches 'consolidate.2019.05.28a', 'doc.2019.05.28a', 'fixes.2019.06.13a', 'srcu.2019.05.28a', 'sync.2019.05.28a' and 'torture.2019.05.28a' into HEAD consolidate.2019.05.28a: RCU flavor consolidation cleanups and optmizations. doc.2019.05.28a: Documentation updates. fixes.2019.06.13a: Miscellaneous fixes. srcu.2019.05.28a: SRCU updates. sync.2019.05.28a: RCU-sync flavor consolidation. torture.2019.05.28a: Torture-test updates. --- 11ca7a9d541d09586fbf89290d1e14619cc40de0 diff --cc kernel/rcu/tree.c index b9629cf08f94,980ca3ca643f,f888a76673da,980ca3ca643f,980ca3ca643f,980ca3ca643f..a14e5fbbea46 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@@@@@@ -384,24 -376,11 -376,12 -376,11 -376,11 -376,11 +384,25 @@@@@@@ static void __maybe_unused rcu_momentar */ static int rcu_is_cpu_rrupt_from_idle(void) { ----- return __this_cpu_read(rcu_data.dynticks_nesting) <= 0 && ----- __this_cpu_read(rcu_data.dynticks_nmi_nesting) <= 1; +++++ /* Called only from within the scheduling-clock interrupt */ +++++ lockdep_assert_in_irq(); +++++ +++++ /* Check for counter underflows */ +++++ RCU_LOCKDEP_WARN(__this_cpu_read(rcu_data.dynticks_nesting) < 0, +++++ "RCU dynticks_nesting counter underflow!"); +++++ RCU_LOCKDEP_WARN(__this_cpu_read(rcu_data.dynticks_nmi_nesting) <= 0, +++++ "RCU dynticks_nmi_nesting counter underflow/zero!"); +++++ +++++ /* Are we at first interrupt nesting level? */ +++++ if (__this_cpu_read(rcu_data.dynticks_nmi_nesting) != 1) +++++ return false; +++++ +++++ /* Does CPU appear to be idle from an RCU standpoint? */ +++++ return __this_cpu_read(rcu_data.dynticks_nesting) == 0; } -- ---#define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch. */ ++ +++#define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch ... */ ++ +++#define DEFAULT_MAX_RCU_BLIMIT 10000 /* ... even during callback flood. */ static long blimit = DEFAULT_RCU_BLIMIT; #define DEFAULT_RCU_QHIMARK 10000 /* If this many pending, ignore blimit. */ static long qhimark = DEFAULT_RCU_QHIMARK;