Messages in this thread | | | Date | Wed, 30 Sep 2009 22:38:18 +0200 | From | Ingo Molnar <> | Subject | Re: Linux 2.6.32-rc1 |
| |
* Ingo Molnar <mingo@elte.hu> wrote:
> * Linus Torvalds <torvalds@linux-foundation.org> wrote: > > > On Wed, 30 Sep 2009, Eric Dumazet wrote: > > > > +#define cmpxchg64(ptr, o, n) \ > > > > +({ \ > > > > + __typeof__(*(ptr)) __ret; \ > > > > + __typeof__(*(ptr)) __old = (o); \ > > > > + __typeof__(*(ptr)) __new = (n); \ > > > > + alternative_io("call cmpxchg8b_emu", \ > > > > + "lock; cmpxchg8b (%%esi)" , \ > > > > + X86_FEATURE_CX8, \ > > > > + "=A" (__ret), \ > > > > + "S" ((ptr)), "0" (__old), \ > > > > + "b" ((unsigned int)__new), \ > > > > + "c" ((unsigned int)(__new>>32))); \ > > > > > > probably a "memory" clobber is needed, alternative_io() doesnt provide it. > > > > Yeah, good catch. > > Yeah - i'm testing this right now, it looks like something that could > explain the hang.
Yeah - that was the cause of the hang.
I've pushed out the updated patches - they should show up in this thread soon. I also updated the emulation implementation to your simpler variant. (will test that too)
Ingo
| |