Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jul 1999 09:14:17 +1000
From:      Peter Jeremy <jeremyp@gsmx07.alcatel.com.au>
To:        mike@ducky.net
Cc:        freebsd-current@FreeBSD.ORG
Subject:   Re: "objtrm" problem probably found (was Re: Stuck in "objtrm")
Message-ID:  <99Jul12.085624est.40350@border.alcanet.com.au>
In-Reply-To: <199907112249.PAA16398@ducky.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike Haertel <mike@ducky.net> wrote:
>Um.  FYI on x86, even if the compiler generates the RMW
>form "addl $1, foo", it's not atomic.  If you want it to
>be atomic you have to precede the opcode with a LOCK
>prefix 0xF0.

I'd noticed that point as well.  The top of sys/i386/include/atomic.h
_does_ make is clear that they aren't SMP safe:

/*
 * Various simple arithmetic on memory which is atomic in the presence
 * of interrupts.
 *
 * Note: these versions are not SMP safe.
 */

That said, it should be fairly simple to change Matt's new in-line
assembler versions to insert LOCK prefixes when building an SMP
kernel.  (Although I don't know that this is necessary yet, given
the `Big Giant Lock').

There remains the problem of locating all the operations in the kernel
that _should_ be atomic but aren't marked as such.  Doug Rabson and
the rest of the Alpha porting crew will have found a lot of these, but
locating race conditions by waiting for them to occur is not the best
solution.

Peter


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?99Jul12.085624est.40350>