public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, will.deacon@arm.com,
	milos@redhat.com, joe@perches.com, pdaly@codeaurora.org,
	nicolas.iooss_linux@m4x.org, hofrat@osadl.org,
	ying.xue@windriver.com, paul.gortmaker@windriver.com,
	bobby.prani@gmail.com, alexey.kodanev@oracle.com
Subject: Re: [GIT PULL rcu/next] RCU commits for 4.2
Date: Tue, 2 Jun 2015 08:31:53 +0200	[thread overview]
Message-ID: <20150602063153.GA31128@gmail.com> (raw)
In-Reply-To: <20150531044830.GA3176@linux.vnet.ibm.com>


* Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:

> Hello, Ingo,
> 
> The changes in this series include the following:
> 
> 1.	Remove all uses of RCU-protected array indexes.  These were posted
> 	to LKML at https://lkml.org/lkml/2015/5/12/827.
> 
> 2.	Documentation updates.  These were posted to LKML at
> 	https://lkml.org/lkml/2015/5/12/848.
> 
> 3.	Miscellaneous fixes.  These were posted to LKML at
> 	https://lkml.org/lkml/2015/5/12/876.
> 
> 4.	CPU-hotplug updates.  These were posted to LKML at
> 	https://lkml.org/lkml/2015/5/12/880.
> 
> 5.	Initialization/Kconfig updates.  These were posted to LKML at
> 	https://lkml.org/lkml/2015/5/12/918, however, the updates to
> 	Tree RCU's initialization have been deferred to 4.3.
> 
> 6.	Updates to Tiny RCU.  These were posted to LKML at
> 	https://lkml.org/lkml/2015/5/12/957.
> 
> 7.	Torture-testing updates.  These were posted to LKML at
> 	https://lkml.org/lkml/2015/5/12/964.
> 
> All of these changes have been subjected to -next testing, and are
> available in the 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 0868aa22167d93dd974c253d259c3e6fd47a16c8:
> 
>   Merge branches 'array.2015.05.27a', 'doc.2015.05.27a', 'fixes.2015.05.27a', 'hotplug.2015.05.27a', 'init.2015.05.27a', 'tiny.2015.05.27a' and 'torture.2015.05.27a' into HEAD (2015-05-27 13:00:49 -0700)
> 
> ----------------------------------------------------------------
> 
> Alexey Kodanev (1):
>       locktorture: fix deadlock in 'rw_lock_irq' type
> 
> Joe Perches (1):
>       rcu: tree_plugin: Use bool function return values of true/false not 1/0
> 
> Milos Vyletel (1):
>       documentation: State that rcu_dereference() reloads pointer
> 
> Nicholas Mc Guire (1):
>       rcu: Change function declaration to bool
> 
> Nicolas Iooss (1):
>       rcu: Make rcu_*_data variables static
> 
> Patrick Daly (1):
>       rcu: Fix missing task information during rcu-preempt stall
> 
> Paul E. McKenney (51):
>       rcu: Convert ACCESS_ONCE() to READ_ONCE() and WRITE_ONCE()
>       mce: Stop using array-index-based RCU primitives
>       rcu: Eliminate array-index-based RCU primitives
>       documentation: RCU-protected array indexes no longer supported
>       mce: mce_chrdev_write() can be static
>       documentation: Update rcu_dereference.txt based on WG21 discussions
>       rcu: Convert from rcu_preempt_state to *rcu_state_p
>       rcu: Eliminate a few RCU_BOOST #ifdefs in favor of IS_ENABLED()
>       rcu: Tell the compiler that rcu_state_p is immutable
>       rcu: Create an immutable rcu_data_p pointer to default rcu_data structure
>       rcu: Eliminate a few CONFIG_RCU_NOCB_CPU_ALL #ifdefs
>       rcu: Force wakeup of rcu_gp_kthread at grace-period end
>       powerpc: Fix smp_mb__before_spinlock()
>       rcu: Add more debug info on "kthread starved" RCU CPU stall warnings
>       smp: Make control dependencies work on Alpha, improve documentation
>       rcu: Make synchronize_sched_expedited() call wait_rcu_gp()
>       rcu: Eliminate HOTPLUG_CPU #ifdef in favor of IS_ENABLED()
>       rcu: Adjust ->lock acquisition for tasks no longer migrating
>       rcu: Remove dead code from force_qs_rnp()
>       rcu: Remove redundant offline check
>       rcu: Correctly initialize ->rcu_qs_ctr_snap at online time
>       cpu: Handle smpboot_unpark_threads() uniformly
>       rcu: Modulate grace-period slow init to normalize delay
>       rcu: Shut up spurious gcc uninitialized-variable warning
>       rcu: Provide diagnostic option to slow down grace-period scans
>       rcu: Directly drive TASKS_RCU from Kconfig
>       rcu: Directly drive RCU_USER_QS from Kconfig
>       rcu: Convert CONFIG_RCU_FANOUT_EXACT to boot parameter
>       rcu: Enable diagnostic dump of rcu_node combining tree
>       rcu: Create RCU_EXPERT Kconfig and hide booleans behind it
>       rcu: Break dependency of RCU_FANOUT_LEAF on RCU_FANOUT
>       rcu: Make RCU able to tolerate undefined CONFIG_RCU_FANOUT
>       rcu: Make RCU able to tolerate undefined CONFIG_RCU_FANOUT_LEAF
>       rcu: Make RCU able to tolerate undefined CONFIG_RCU_KTHREAD_PRIO
>       rcu: Conditionally compile RCU's eqs warnings
>       rcu: Further shrink Tiny RCU by making empty functions static inlines
>       rcutorture: Test both RCU-sched and RCU-bh for Tiny RCU
>       rcu: Correctly handle non-empty Tiny RCU callback list with none ready
>       rcutorture: Exchange TREE03 and TREE04 geometries
>       rcutorture: Exchange TREE03 and TREE08 NR_CPUS, speed up CPU hotplug
>       rcutorture: Allow negative values of nreaders to oversubscribe
>       locktorture: Change longdelay_us to longdelay_ms
>       rcutorture: Replace barriers with smp_store_release() and smp_load_acquire()
>       rcutorture: Test SRCU cleanup code path
>       rcutorture: TASKS_RCU set directly, so don't explicitly set it
>       rcutorture: Update configuration fragments for rcutree.rcu_fanout_exact
>       rcutorture: Make rcutorture scripts force RCU_EXPERT
>       rcutorture: Update TREE_RCU-kconfig.txt
>       rcutorture: Display "make oldconfig" errors
>       rcutorture: Allow repetition factors in Kconfig-fragment lists
>       Merge branches 'array.2015.05.27a', 'doc.2015.05.27a', 'fixes.2015.05.27a', 'hotplug.2015.05.27a', 'init.2015.05.27a', 'tiny.2015.05.27a' and 'torture.2015.05.27a' into HEAD
> 
> Paul Gortmaker (1):
>       cpu: Remove new instance of __cpuinit that crept back in
> 
> Pranith Kumar (1):
>       rcu: Remove prompt for RCU implementation
> 
> Will Deacon (1):
>       documentation: memory-barriers: Fix smp_mb__before_spinlock() semantics
> 
> Ying Xue (1):
>       rculist: Fix another sparse warning
> 
>  Documentation/RCU/arrayRCU.txt                     |  20 +-
>  Documentation/RCU/lockdep.txt                      |  10 -
>  Documentation/RCU/rcu_dereference.txt              |  38 +--
>  Documentation/RCU/whatisRCU.txt                    |   6 +-
>  Documentation/kernel-parameters.txt                |  33 +-
>  Documentation/memory-barriers.txt                  |  62 ++--
>  arch/powerpc/include/asm/barrier.h                 |   1 +
>  arch/x86/kernel/cpu/mcheck/mce.c                   |  15 +-
>  include/linux/compiler.h                           |  16 +
>  include/linux/rculist.h                            |  10 +-
>  include/linux/rcupdate.h                           |  70 +---
>  include/linux/rcutiny.h                            |  16 +
>  include/linux/rcutree.h                            |   7 +-
>  include/linux/spinlock.h                           |   2 +-
>  init/Kconfig                                       |  72 ++--
>  kernel/cpu.c                                       |   4 +-
>  kernel/events/ring_buffer.c                        |   2 +-
>  kernel/locking/locktorture.c                       |  14 +-
>  kernel/rcu/rcutorture.c                            | 103 ++++--
>  kernel/rcu/srcu.c                                  |  10 +-
>  kernel/rcu/tiny.c                                  |  38 +--
>  kernel/rcu/tiny_plugin.h                           |  12 +-
>  kernel/rcu/tree.c                                  | 365 ++++++++++++---------
>  kernel/rcu/tree.h                                  |  35 +-
>  kernel/rcu/tree_plugin.h                           | 216 ++++++------
>  kernel/rcu/tree_trace.c                            |   6 +-
>  kernel/rcu/update.c                                |  30 +-
>  kernel/torture.c                                   |  26 +-
>  lib/Kconfig.debug                                  |  66 +++-
>  .../testing/selftests/rcutorture/bin/configinit.sh |   2 +-
>  .../selftests/rcutorture/bin/kvm-recheck.sh        |   4 +
>  tools/testing/selftests/rcutorture/bin/kvm.sh      |  25 +-
>  .../selftests/rcutorture/configs/rcu/CFcommon      |   2 +
>  .../selftests/rcutorture/configs/rcu/SRCU-N        |   1 +
>  .../selftests/rcutorture/configs/rcu/SRCU-P        |   1 +
>  .../selftests/rcutorture/configs/rcu/SRCU-P.boot   |   2 +-
>  .../selftests/rcutorture/configs/rcu/TASKS01       |   5 +-
>  .../selftests/rcutorture/configs/rcu/TASKS02       |   1 -
>  .../selftests/rcutorture/configs/rcu/TASKS03       |   2 +-
>  .../selftests/rcutorture/configs/rcu/TINY02        |   2 +-
>  .../selftests/rcutorture/configs/rcu/TINY02.boot   |   1 +
>  .../selftests/rcutorture/configs/rcu/TREE01        |   1 +
>  .../selftests/rcutorture/configs/rcu/TREE02        |   2 +-
>  .../selftests/rcutorture/configs/rcu/TREE02-T      |   1 -
>  .../selftests/rcutorture/configs/rcu/TREE03        |   8 +-
>  .../selftests/rcutorture/configs/rcu/TREE03.boot   |   1 +
>  .../selftests/rcutorture/configs/rcu/TREE04        |   8 +-
>  .../selftests/rcutorture/configs/rcu/TREE05        |   4 +-
>  .../selftests/rcutorture/configs/rcu/TREE06        |   4 +-
>  .../selftests/rcutorture/configs/rcu/TREE06.boot   |   1 +
>  .../selftests/rcutorture/configs/rcu/TREE07        |   4 +-
>  .../selftests/rcutorture/configs/rcu/TREE08        |   6 +-
>  .../selftests/rcutorture/configs/rcu/TREE08-T      |   1 -
>  .../selftests/rcutorture/configs/rcu/TREE08-T.boot |   1 +
>  .../selftests/rcutorture/configs/rcu/TREE08.boot   |   1 +
>  .../selftests/rcutorture/configs/rcu/TREE09        |   1 +
>  .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt  |  36 +-
>  57 files changed, 809 insertions(+), 624 deletions(-)
>  create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE03.boot
>  create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE08-T.boot

Pulled, thanks a lot Paul!

I am wondering about the following small detail. You have reworked the whole RCU 
Kconfig machinery with the introduction of RCU_EXPERT and smart selection of 
defaults. (very nice!)

There's a single interactive option left when a user configures RCU 'anew' and 
keeps CONFIG_RCU_EXPERT disabled:

      Offload RCU callback processing from boot-selected CPUs (RCU_NOCB_CPU) [N/y/?] (NEW)

I'm wondering whether we could put this behind CONFIG_RCU_EXPERT as well, and 
disable it by default? 

The argument for this is very simple IMHO: NO_HZ_FULL depends on nocb_cpu support, 
and actually selects it, so there's no way to misconfigure it.

Without NO_HZ_FULL it might still make sense to use nocb_cpu, but it's very much 
an advanced, expert option.

With this change we could make RCU essentially configuration free in the common 
case! :-)

Thanks,

	Ingo

  reply	other threads:[~2015-06-02  6:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-31  4:48 [GIT PULL rcu/next] RCU commits for 4.2 Paul E. McKenney
2015-06-02  6:31 ` Ingo Molnar [this message]
2015-06-02 12:36   ` Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150602063153.GA31128@gmail.com \
    --to=mingo@kernel.org \
    --cc=alexey.kodanev@oracle.com \
    --cc=bobby.prani@gmail.com \
    --cc=hofrat@osadl.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=milos@redhat.com \
    --cc=nicolas.iooss_linux@m4x.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=pdaly@codeaurora.org \
    --cc=will.deacon@arm.com \
    --cc=ying.xue@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox