lkml.org 
[lkml]   [2009]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[PATCH tip/core/rcu 0/3] rcu: clean up locking for ->completed and ->gpnum fields
Hello!

This patch series imposes a clear locking model on accesses to the
->completed and ->gpnum fields, significantly increasing the reliability
of RCU. To be fair, in order to induce failures in current -tip,
you have to run long rcutorture tests on particular hardware with
particular kernel configuration parameters, while having modified the RCU
implementation itself to invoke force_quiescent_state() several times as
often as normal. By "particular hardware", I do mean specific machines
that appear otherwise identical to other machines with much lower (and
sometimes even nonexistent) failure rates. After all, these are race
conditions, and as such can be affected by very subtle factors.

That said, RCU really needs to stand up to whatever abuse shows up,
hence these patches.

1. The first patch puts non-NO_HZ accesses to the ->completed field
under a well-defined locking design, eliminating the
unsynchronized accesses to rsp->completed from the
dyntick_recall_completed() function.

2. The second patch puts the rcu_process_gp_end() function's use
of the ->completed field under a well-defined locking design,
eliminating its previously unsynchronized accesses to
rsp->completed.

3. The third and final patch puts accesses to the ->gpnum field
under a well-defined locking design, eliminating the
unsynchronized accesses to rsp->gpnum from the note_new_gpnum()
function.

A number of unsynchronized accesses remain, but these are of the form
of an unsynchronized check followed by a lock acquisition followed by
a repeat of the check.

Thanx, Paul


\
 
 \ /
  Last update: 2009-10-31 03:45    [from the cache]
©2003-2011 Jasper Spaans