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
prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox