All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <compudj@krystal.dyndns.org>
To: Pavel Machek <pavel@ucw.cz>
Cc: Pierre Habouzit <madcoder@debian.org>,
	Steven Munroe <munroesj@linux.vnet.ibm.com>,
	rp@svcs.cs.pdx.edu, linux-kernel@vger.kernel.org,
	Josh Triplett <josh@joshtriplett.org>,
	ltt-dev@lists.casi.polymtl.ca, Jon Bernard <jbernard@debian.org>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Jan Blunck <jblunck@suse.de>
Subject: Userspace RCU 0.2.4
Date: Mon, 19 Oct 2009 19:59:05 -0400	[thread overview]
Message-ID: <20091019235905.GA11980@Krystal> (raw)
In-Reply-To: <20091018225234.GA9164@elf.ucw.cz>

* Pavel Machek (pavel@ucw.cz) wrote:
> On Sun 2009-10-18 18:02:43, Mathieu Desnoyers wrote:
> > * Pavel Machek (pavel@ucw.cz) wrote:
> > > On Thu 2009-10-15 13:40:54, Pierre-Marc Fournier wrote:
> > > > Josh Triplett wrote:
> > > > > 
> > > > > Even Debian has given up on real 386 systems at this point, primarily
> > > > > because system libraries like glibc have; 486 and better represents the
> > > > > bare minimum required at this point.  I don't know of any distributions
> > > > > supporting real 386 systems at this point, and doing so would represent
> > > > > a major undertaking.
> > > > > 
> > > > 
> > > > What about embedded systems? Anyone know if some 386 chips, perhaps even
> > > > in smp configurations, are still in use in those?
> > > 
> > > smp 386: definitely not.
> > 
> > Hrm, so for UP 386, I wonder what's the best approach.
> > 
> > One would be to encapsulate all write accesses to the RCU pointers. If
> > we detect that the architecture lacks cmpxchg, _all_ update operations
> > (rcu_assign_pointer, rcu_xchg_pointer and rcu_cmpxchg_pointer) would
> > have to use the signal-disabled+mutex fall-back.
> > 
> > Does it make sense ?
> 
> Yep, but it sounds expensive. Another option is to ignore the issue
> and see how many people still have 386s :-). Few  embedded  systems
> may be affected, but...

Well.. I just enhanced liburcu to fully support 386 SMP (even if
opinions seems to vary regarding its usefulness...) ;) It adds _no_
overhead whatsoever if building for i486+ or x86 64.

What I did is a complete "compatibility mode" for all uatomic_arch_x86.h
atomic operations (it's my own user-space reimplementation of the Linux
kernel atomic.h). It's in liburcu 0.2.4 (now released).

How it works:

config x86 64 or x86 32 > i386 :

#define to map directly to atomic operations.

config i386 :

dynamically detect the cpu id, caches it in "cas_avail" variable.
If cas_avail is -1 (unset) -> dynamically check, cache result.
If cas_avail is 1 -> use atomic operations.
If cas_avail is 0 -> use compatibility mode for _all_ uatomic
  write operations involving signal disabling and a mutex. Only
  uatomic_read is exempt from locking.

So it should be safe to access RCU pointers through the
rcu_cmpxchg/xchg/set/assign_pointer() and rcu_dereference() primitives.

I tried to force using the compatibility mode by changing the condition
in compat_arch_x86.c and building for i386 compatibility. It works fine
and passes the test_uatomic test cases. Passes the rcutorture test too.

Mathieu

> 
> 									Pavel
> -- 
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
> 
> _______________________________________________
> ltt-dev mailing list
> ltt-dev@lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

      parent reply	other threads:[~2009-10-19 23:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-14 22:36 Userspace RCU 0.2.3 Mathieu Desnoyers
2009-10-15  0:02 ` Paul E. McKenney
2009-10-15  2:39   ` Mathieu Desnoyers
2009-10-15  4:34     ` Paul E. McKenney
2009-10-15  9:00     ` Josh Triplett
2009-10-15 17:40       ` Pierre-Marc Fournier
2009-10-17 17:16         ` Pavel Machek
2009-10-18 22:02           ` [rp] " Mathieu Desnoyers
2009-10-18 22:52             ` Pavel Machek
2009-10-18 23:16               ` [ltt-dev] " Mathieu Desnoyers
2009-10-19 23:59               ` Mathieu Desnoyers [this message]

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=20091019235905.GA11980@Krystal \
    --to=compudj@krystal.dyndns.org \
    --cc=jbernard@debian.org \
    --cc=jblunck@suse.de \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ltt-dev@lists.casi.polymtl.ca \
    --cc=madcoder@debian.org \
    --cc=munroesj@linux.vnet.ibm.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=pavel@ucw.cz \
    --cc=rp@svcs.cs.pdx.edu \
    /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.