On Wed, Nov 03, 2010 at 10:59:44AM -0400, Jeremy Fitzhardinge wrote: > * On PPro SMP or if we are using OOSTORE, we use a locked operation to unlock > * (PPro errata 66, 92) > */ >-# define UNLOCK_LOCK_PREFIX LOCK_PREFIX >+static __always_inline void __ticket_unlock_release(struct arch_spinlock *lock) >+{ >+ if (sizeof(lock->tickets.head) == sizeof(u8)) >+ asm (LOCK_PREFIX "incb %0" >+ : "+m" (lock->tickets.head) : : "memory"); >+ else >+ asm (LOCK_PREFIX "incw %0" >+ : "+m" (lock->tickets.head) : : "memory"); This 'if/else' really should be done with #ifdef, even though the compiler may be smart enough to remove it. >+ >+} > #else >-# define UNLOCK_LOCK_PREFIX >+static __always_inline void __ticket_unlock_release(struct arch_spinlock *lock) >+{ >+ barrier(); >+ lock->tickets.head++; >+ barrier(); The second barrier() is not needed. Thanks. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization