Messages in this thread |  | | Date | Wed, 28 Sep 2011 09:47:54 -0700 | | From | Jeremy Fitzhardinge <> | | Subject | Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized ticketlocks |
| |
On 09/28/2011 09:10 AM, Linus Torvalds wrote: > On Wed, Sep 28, 2011 at 8:55 AM, Jan Beulich <JBeulich@suse.com> wrote: >>> just use "lock xaddw" there too. >> I'm afraid that's not possible, as that might carry from the low 8 bits >> into the upper 8 ones, which must be avoided. > Oh damn, you're right. So I guess the "right" way to do things is with > cmpxchg, but some nasty mfence setup could do it too.
Could do something like:
if (ticket->head >= 254) prev = xadd(&ticket->head_tail, 0xff02); else prev = xadd(&ticket->head_tail, 0x0002);
to compensate for the overflow.
J
|  |