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>