Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752883AbdFLViB (ORCPT ); Mon, 12 Jun 2017 17:38:01 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:57900 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752430AbdFLVh7 (ORCPT ); Mon, 12 Jun 2017 17:37:59 -0400 Date: Mon, 12 Jun 2017 14:37:55 -0700 From: "Paul E. McKenney" To: mingo@kernel.org Cc: linux-kernel@vger.kernel.org, priyalee.kushwaha@intel.com, drozdziak1@gmail.com, arnd@arndb.de, ldr709@gmail.com, tglx@linutronix.de, peterz@infradead.org, josh@joshtriplett.org, nico@linaro.org, kjlx@templeofstupid.com, vegard.nossum@oracle.com, torvalds@linux-foundation.org, dcb314@hotmail.com, fengguang.wu@intel.com, fweisbec@gmail.com, riel@redhat.com, rostedt@goodmis.org Subject: [GIT PULL rcu/next] RCU commits for 4.13 Reply-To: paulmck@linux.vnet.ibm.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 x-cbid: 17061221-0048-0000-0000-000001A3EC10 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007221; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000212; SDB=6.00873871; UDB=6.00434928; IPR=6.00653957; BA=6.00005414; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015795; XFM=3.00000015; UTC=2017-06-12 21:37:57 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17061221-0049-0000-0000-0000417D994C Message-Id: <20170612213754.GA7201@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-06-12_12:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1706120378 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 12131 Lines: 219 Hello, Ingo, This pull request is unusual in being a single linear set of commits, as opposed to my usual topic branches. This is due to the many large-footprint changes, which means that reasonable topic branches result in large numbers of merge conflicts. In addition, some commits depend on other commits that should be on different topic branches. I will return to the topic-branch style next time. The largest feature of this series is shrinking and simplification, with the following diffstat summary: 79 files changed, 1496 insertions(+), 4211 deletions(-) In other words, this series represents a net reduction of more than 2700 lines of code. These commits were posted to LKML: http://lkml.kernel.org/r/20170525215934.GA11578@linux.vnet.ibm.com Two of these commits (46/88 and 48/88) have been deferred, most likely to v4.14. All of the remaining commits have been subjected to the 0day Test Robot and -next testing, and are availiable in teh git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo for you to fetch changes up to 6d48152eafde1f0d0a4a9e0584fa7d9ff4fbfdac: rcu: Remove RCU CPU stall warnings from Tiny RCU (2017-06-08 18:52:45 -0700) ---------------------------------------------------------------- Arnd Bergmann (1): bcm47xx: Fix build regression Paul E. McKenney (83): rcutorture: Add lockdep to one of the SRCU scenarios rcutorture: Add three-level tree test for Tree SRCU rcutorture: Fix bug in reporting Kconfig mis-settings rcutorture: Add a scenario for Tiny SRCU rcutorture: Add a scenario for Classic SRCU rcu: Prevent rcu_barrier() from starting needless grace periods rcutorture: Correctly handle CONFIG_RCU_TORTURE_TEST_* options rcutorture: Update test scenarios based on new Kconfig dependencies srcu: Eliminate possibility of destructive counter overflow rcu: Complain if blocking in preemptible RCU read-side critical section rcuperf: Defer expedited/normal check to end of test rcuperf: Remove conflicting Kconfig options rcu: Remove obsolete reference to synchronize_kernel() rcuperf: Add ability to performance-test call_rcu() and friends rcuperf: Add a Kconfig-fragment file for Classic SRCU rcu: Make sync_rcu_preempt_exp_done() return bool checkpatch: Remove checks for expedited grace periods rcuperf: Add test for dynamically initialized srcu_struct doc/atomic_ops: Clarify smp_mb__{before,after}_atomic() atomics: Add header comment so spin_unlock_wait() rcuperf: Add the ability to test tiny RCU flavors srcu: Make Classic and Tree SRCU announce themselves at bootup rcutorture: Reduce CPUs dedicated to testing Classic SRCU srcu: Shrink Tiny SRCU a bit more rcuperf: Set more user-friendly defaults rcuperf: Add writer_holdoff boot parameter rcutorture: Add "git diff" output to testid.txt file srcu: Document auto-expediting requirement doc: Take tail recursion into account in RCU requirements rcu: Add preemptibility checks in rcu_sched_qs() and rcu_bh_qs() rcu: Print out rcupdate.c non-default boot-time settings rcu: Update rcu_bootup_announce_oddness() srcu: Make exp_holdoff module parameter be static srcu: Print non-default exp_holdoff values at boot time rcu: Add lockdep_assert_held() teeth to tree.c rcu: Add lockdep_assert_held() teeth to tree_plugin.h srcu: Make SRCU be once again optional srcu: Shrink Tiny SRCU a bit srcu: Add DEBUG_OBJECTS_RCU_HEAD functionality rcu: Make synchronize_rcu_mult() check for duplicates sched: Rely on synchronize_rcu_mult() de-duplication rcu: Use RCU_NOCB_WAKE rather than RCU_NOGP_WAKE rcu: Add memory barriers for NOCB leader wakeup rcu: Flag need for rcu_node_tree.h and rcu_segcblist.h visibility rcu: Move docbook comments out of rcupdate.h rcu: Move rcu_expedited and rcu_normal externs from rcupdate.h rcu: Move expediting-related access/control out of rcupdate.h rcu: Move torture-related definitions from rcupdate.h to rcu.h rcu: Remove UINT_CMP_GE() and UINT_CMP_LT() rcu: Move rcupdate.h to new empty-function style rcu: Eliminate the unused __rcu_is_watching() function rcu: Move the RCU_SCHEDULER_ definitions from rcupdate.h rcu: Remove linux/debugobjects.h from rcupdate.h rcu: Improve __call_rcu() debug-objects error message rcu: Move rcu_is_nocb_cpu() from rcupdate.h to rcu.h rcu: Move rcu_ftrace_dump() from rcupdate.h to rcu.h rcu: move rcupdate.h to the new true/false-function style rcu: Move torture-related functions out of rcutiny.h and rcutree.h rcu: Move rcu_request_urgent_qs_task() out of rcutiny.h and rcutree.h rcu: Move rcutiny.h to new empty/true/false-function style srcu: Prevent sdp->srcu_gp_seq_needed counter wrap srcu: Shrink srcu.h by moving docbook and private function srcu: Apply trivial callback lists to shrink Tiny SRCU lockdep: Use consistent printing primitives rcu: Refactor #includes from include/linux/rcupdate.h rcu: Convert rnp->lock wrappers to macros for SRCU use rcu: Move rnp->lock wrappers for SRCU use srcu: Use rnp->lock wrappers to replace explicit memory barriers rcu: Remove *_SLOW_* Kconfig options rcu: Remove the RCU_KTHREAD_PRIO Kconfig option rcu: Remove nohz_full full-system-idle state machine rcu: Remove #ifdef moving rcu_end_inkernel_boot from rcupdate.h rcu: Remove typecheck() from RCU locking wrapper functions rcu: Remove the now-obsolete PROVE_RCU_REPEATEDLY Kconfig option rcu: Remove SPARSE_RCU_POINTER Kconfig option srcu: Fix rcutorture-statistics typo srcu: Remove Classic SRCU rcu: Remove debugfs tracing rcu: Eliminate NOCBs CPU-state Kconfig options rcu: Move RCU non-debug Kconfig options to kernel/rcu rcu: Move RCU debug Kconfig options to kernel/rcu rcu: Remove event tracing from Tiny RCU rcu: Remove RCU CPU stall warnings from Tiny RCU Priyalee Kushwaha (1): srcu-cbmc: Use /usr/bin/awk instead of /bin/awk Stan Drozd (1): docs: Fix typo in Documentation/memory-barriers.txt Documentation/RCU/00-INDEX | 2 - .../RCU/Design/Requirements/Requirements.html | 34 +- Documentation/RCU/checklist.txt | 8 +- Documentation/RCU/trace.txt | 535 ----------------- Documentation/admin-guide/kernel-parameters.txt | 41 +- Documentation/core-api/atomic_ops.rst | 5 + Documentation/dev-tools/sparse.rst | 6 - Documentation/kernel-per-CPU-kthreads.txt | 31 +- Documentation/memory-barriers.txt | 2 +- Documentation/timers/NO_HZ.txt | 29 +- include/linux/bcm47xx_nvram.h | 1 + include/linux/compiler.h | 4 - include/linux/rcu_node_tree.h | 4 + include/linux/rcu_segcblist.h | 4 + include/linux/rcupdate.h | 318 +--------- include/linux/rcutiny.h | 167 +----- include/linux/rcutree.h | 21 +- include/linux/spinlock.h | 20 + include/linux/srcu.h | 25 +- include/linux/srcuclassic.h | 115 ---- include/linux/srcutiny.h | 47 +- include/linux/srcutree.h | 13 +- include/trace/events/rcu.h | 1 + init/Kconfig | 349 +---------- kernel/locking/lockdep.c | 176 +++--- kernel/rcu/Kconfig | 242 ++++++++ kernel/rcu/Kconfig.debug | 82 +++ kernel/rcu/Makefile | 2 - kernel/rcu/rcu.h | 277 +++++++++ kernel/rcu/rcuperf.c | 129 +++- kernel/rcu/rcutorture.c | 21 +- kernel/rcu/srcu.c | 661 --------------------- kernel/rcu/srcutiny.c | 86 +-- kernel/rcu/srcutree.c | 187 ++++-- kernel/rcu/tiny.c | 54 +- kernel/rcu/tiny_plugin.h | 123 ---- kernel/rcu/tree.c | 195 +++--- kernel/rcu/tree.h | 109 +--- kernel/rcu/tree_exp.h | 2 +- kernel/rcu/tree_plugin.h | 573 +++--------------- kernel/rcu/tree_trace.c | 494 --------------- kernel/rcu/update.c | 77 ++- kernel/sched/core.c | 8 +- kernel/time/Kconfig | 50 -- lib/Kconfig.debug | 184 +----- lib/Makefile | 3 - scripts/checkpatch.pl | 17 - .../selftests/rcutorture/bin/configcheck.sh | 2 +- .../testing/selftests/rcutorture/bin/kvm-build.sh | 2 +- tools/testing/selftests/rcutorture/bin/kvm.sh | 5 +- .../selftests/rcutorture/configs/rcu/CFLIST | 2 + .../selftests/rcutorture/configs/rcu/SRCU-C.boot | 1 + .../selftests/rcutorture/configs/rcu/SRCU-N | 2 +- .../selftests/rcutorture/configs/rcu/SRCU-P | 6 +- .../selftests/rcutorture/configs/rcu/SRCU-t | 10 + .../selftests/rcutorture/configs/rcu/SRCU-t.boot | 1 + .../selftests/rcutorture/configs/rcu/SRCU-u | 9 + .../selftests/rcutorture/configs/rcu/SRCU-u.boot | 1 + .../selftests/rcutorture/configs/rcu/TINY02 | 5 +- .../selftests/rcutorture/configs/rcu/TREE01 | 5 +- .../selftests/rcutorture/configs/rcu/TREE01.boot | 4 + .../selftests/rcutorture/configs/rcu/TREE02 | 5 +- .../selftests/rcutorture/configs/rcu/TREE03 | 4 - .../selftests/rcutorture/configs/rcu/TREE03.boot | 4 + .../selftests/rcutorture/configs/rcu/TREE04 | 4 - .../selftests/rcutorture/configs/rcu/TREE05 | 4 - .../selftests/rcutorture/configs/rcu/TREE05.boot | 3 + .../selftests/rcutorture/configs/rcu/TREE06 | 4 +- .../selftests/rcutorture/configs/rcu/TREE06.boot | 3 + .../selftests/rcutorture/configs/rcu/TREE07 | 6 - .../selftests/rcutorture/configs/rcu/TREE08 | 1 - .../selftests/rcutorture/configs/rcu/TREE08-T | 21 - .../selftests/rcutorture/configs/rcu/TREE08.boot | 1 + .../configs/{rcu/TREE02-T => rcuperf/TINY} | 19 +- .../selftests/rcutorture/configs/rcuperf/TREE | 1 - .../selftests/rcutorture/configs/rcuperf/TREE54 | 1 - .../testing/selftests/rcutorture/doc/TINY_RCU.txt | 1 - .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 34 +- .../rcutorture/formal/srcu-cbmc/modify_srcu.awk | 2 +- 79 files changed, 1496 insertions(+), 4211 deletions(-) delete mode 100644 Documentation/RCU/trace.txt delete mode 100644 include/linux/srcuclassic.h create mode 100644 kernel/rcu/Kconfig create mode 100644 kernel/rcu/Kconfig.debug delete mode 100644 kernel/rcu/srcu.c delete mode 100644 kernel/rcu/tree_trace.c create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/SRCU-C.boot create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/SRCU-t create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/SRCU-t.boot create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/SRCU-u create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/SRCU-u.boot delete mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE08-T rename tools/testing/selftests/rcutorture/configs/{rcu/TREE02-T => rcuperf/TINY} (50%)