[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Atomic operations



The Linux atomic.h operations will be atomic even across domains.

 -- Keir

On 26/03/2009 00:17, "Timothy Hayes" <hayesti@xxxxxx> wrote:

I'm sure a lot of you know XenSocket (XVMSocket), if not, it's a Loadable Kernel Module with a socket interface that sends/receives to/from a shared page of memory mapped between two domains. It's quite a nice idea and brings data throughput close to UNIX sockets. I made some changes and made it compatible with Xen 3.2 and a newer Linux kernel (I'm testing it with 2.6.25.20) however I'm noticing some odd behaviour occasionally. In it, there are atomic_t variables in a descriptor inside a shared memory page. When a domain sends or receives from the socket, it will use one of the atomic_ operations to update the amount of new data available. The problem I'm noticing is that when two domains are concurrently updating this variable, the value becomes inconsistent leading me to believe that the atomic_ operations might not guarantee atomicity between domains. I haven't been able to repeat any behaviour like this when I limit the two guests to the same physical CPU and eliminate parallelism.

Would anyone be able fill me in if I'm missing something? Are the atomic_ operations 100% foolproof for this sort of thing? If not, what would be the best approach to use instead?
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.