Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Dec 2000 10:41:24 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        =?ISO-8859-1?Q?G=E9rard_Roudier?= <groudier@club-internet.fr>
Cc:        Bernd Walter <ticso@cicely5.cicely.de>, freebsd-alpha@FreeBSD.org
Subject:   RE: mb and wmb in atomic_
Message-ID:  <XFMail.001216104124.jhb@FreeBSD.org>
In-Reply-To: <Pine.LNX.4.10.10012160938330.918-100000@linux.local>

next in thread | previous in thread | raw e-mail | index | archive | help

>> Also, note that in FreeBSD,
>> we have specific variants of atomic operations that include memory barriers
>> (see the atomic(9) manpage in -current).  If the actual atomicity of the
>> operation doesn't need the mb, they should be removed.
> 
> Atomicity seems here for both Alpha and i386.
>  
> About Alpha, I doubt that using wmb() is a good idea, given that its does
> not guarantee ordering of memory-like with respect to non memory-like and
> this may lead to incorrect assumption from programmer when the both kinds 
> of memory are used (device drivers for example).

From src/sys/alpha/include/alpha_cpu.h:

static __inline void
alpha_wmb(void)
{
        /*
         * XXX dfr: NetBSD originally had mb instead of wmb for
         * alpha_wmb(). I'm not sure why so I'm leaving it alone. I
         * think it should be safe to use wmb though.
         */
        __asm__ __volatile__ ("mb");
}
 
> About i386 I donnot seem to see the promised read barrier for the
> atomic_load_acq_X() primitives. Note that I also donnot see where such
> primitive might be useful. :-)
> Anyway, they seems wrong to me given that Pentia II and above may reorder
> LOADs and LOADs against STOREs. We are only guaranteed STOREs to be
> carried out to system BUS in processor order when cachable is involved,
> and hitting non-cachable to insert implicit barriers.

I'll have to look at this next week.  So far only atomic_store_rel() has been
used for the mutex operations.  It could be that I need to change those to use
lock'd cmpxchgl's in order to enforce ordering.

>   Gérard.

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.Baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.001216104124.jhb>