From: Anton Blanchard <anton@samba.org>
To: David Howells <dhowells@cambridge.redhat.com>
Cc: Linus Torvalds <torvalds@transmeta.com>,
Andrew Morton <andrewm@uow.edu.au>, Ben LaHaise <bcrl@redhat.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] 3rd try: i386 rw_semaphores fix
Date: Wed, 11 Apr 2001 16:00:43 -0700 [thread overview]
Message-ID: <20010411160043.A4304@va.samba.org> (raw)
In-Reply-To: <16590.986993861@warthog.cambridge.redhat.com> <17213.987007030@warthog.cambridge.redhat.com>
In-Reply-To: <17213.987007030@warthog.cambridge.redhat.com>; from dhowells@cambridge.redhat.com on Wed, Apr 11, 2001 at 05:37:10PM +0100
Hi,
> Here's the RW semaphore patch #3. This time with more asm constraints added.
Personally I care about sparc and ppc64 and as such would like to see the
slow paths end up in lib/rwsem.c protected by #ifndef __HAVE_ARCH_RWSEM
or something like that. If we couldn't get rwsems to work on x86, what
hope have we on other archs? :)
I have a few questions:
In arch/i386/kernel/semaphore.c:
static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
static inline __u16 rwsem_cmpxchgw(struct rw_semaphore *sem, __u16 old, __u16 new)
Can these end up in include/asm/rwsem*? The rest could then go into
lib/rwsem.c.
/* try to grab an 'activity' marker
* - need to make sure two copies of rwsem_wake() don't do this for two separate processes
* simultaneously
* - be horribly naughty, and only deal with the LSW of the atomic counter
*/
if (rwsem_cmpxchgw(sem,0,RWSEM_ACTIVE_BIAS)!=0)
Many archs dont have cmpxchg on 16 bit quantities. We can implement it
but it will be extra instructions. Anyway on 64 bit archs, count will be
64 bit so we will have two 32 bit quantities to cmpxchg on.
Now that I look at it, can you just do a cmpxchg on the complete sem->count
and retry if it failed because the high order bits have changed?
Anton
next prev parent reply other threads:[~2001-04-11 23:03 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <3AD0FD0F.9B0C47FD@uow.edu.au>
2001-04-09 3:08 ` rw_semaphores Linus Torvalds
2001-04-09 4:18 ` rw_semaphores Linus Torvalds
2001-04-09 13:55 ` rw_semaphores Ben LaHaise
2001-04-10 2:41 ` rw_semaphores Tachino Nobuhiro
2001-04-10 5:43 ` rw_semaphores Linus Torvalds
2001-04-10 6:33 ` rw_semaphores Tachino Nobuhiro
2001-04-10 7:47 ` rw_semaphores David Howells
2001-04-10 18:02 ` [PATCH] i386 rw_semaphores fix David Howells
2001-04-10 19:42 ` Linus Torvalds
2001-04-10 19:56 ` x86 cpu configuration (was: Re: [PATCH] i386 rw_semaphores fix) Jeff Garzik
2001-04-10 21:58 ` Alan Cox
2001-04-10 20:05 ` [PATCH] i386 rw_semaphores fix Andi Kleen
2001-04-10 20:16 ` Linus Torvalds
2001-04-10 22:00 ` Alan Cox
2001-04-11 0:00 ` Andi Kleen
2001-04-11 0:13 ` David Weinehall
2001-04-11 0:20 ` Andi Kleen
2001-04-11 0:56 ` David Weinehall
2001-04-11 1:04 ` Andi Kleen
2001-04-11 12:32 ` Alan Cox
2001-04-11 0:55 ` Linus Torvalds
2001-04-11 1:07 ` Andi Kleen
2001-04-11 1:12 ` Linus Torvalds
2001-04-11 1:23 ` Andi Kleen
2001-04-11 12:36 ` Alan Cox
2001-04-11 18:05 ` H. Peter Anvin
2001-04-11 12:28 ` Alan Cox
2001-04-11 18:06 ` H. Peter Anvin
2001-04-11 22:06 ` Alan Cox
2001-04-11 22:42 ` H. Peter Anvin
2001-04-11 22:55 ` Alan Cox
2001-04-10 21:57 ` Alan Cox
2001-04-11 0:40 ` Tim Wright
2001-04-11 7:38 ` David Howells
2001-04-11 12:24 ` Maciej W. Rozycki
2001-04-11 12:57 ` [PATCH] 2nd try: " David Howells
2001-04-11 16:37 ` [PATCH] 3rd " David Howells
2001-04-11 21:41 ` [PATCH] 4th " David Howells
2001-04-12 18:16 ` Andrew Morton
2001-04-11 23:00 ` Anton Blanchard [this message]
2001-04-12 15:06 ` [PATCH] i386 rw_semaphores, general abstraction patch David Howells
2001-04-11 16:56 ` [PATCH] i386 rw_semaphores fix Andrew Morton
2001-04-11 17:36 ` David Howells
2001-04-11 18:41 ` Linus Torvalds
2001-04-11 21:27 ` David Howells
2001-04-16 14:39 ` rw_semaphores yodaiken
2001-04-16 14:56 ` rw_semaphores Alan Cox
2001-04-16 17:05 ` rw_semaphores Linus Torvalds
2001-04-16 17:34 ` rw_semaphores yodaiken
2001-04-16 17:26 ` rw_semaphores Andrew Morton
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=20010411160043.A4304@va.samba.org \
--to=anton@samba.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=andrewm@uow.edu.au \
--cc=bcrl@redhat.com \
--cc=dhowells@cambridge.redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.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