All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.