On Wed, Nov 03, 2010 at 10:59:42AM -0400, Jeremy Fitzhardinge wrote: ... > static __always_inline void __ticket_spin_lock(arch_spinlock_t *lock) > { >- int inc = 0x00010000; >- int tmp; >+ unsigned inc = 1 << TICKET_SHIFT; >+ unsigned tmp; Please don't use old implicit-int. > >- return (((tmp >> TICKET_SHIFT) - tmp) & ((1 << TICKET_SHIFT) - 1)) > 1; >+ return ((tmp.tail - tmp.head) & TICKET_MASK) > 1; There is a type promotion here. > } > > #ifndef CONFIG_PARAVIRT_SPINLOCKS >diff --git a/arch/x86/include/asm/spinlock_types.h b/arch/x86/include/asm/spinlock_types.h >index dcb48b2..4582640 100644 >--- a/arch/x86/include/asm/spinlock_types.h >+++ b/arch/x86/include/asm/spinlock_types.h >@@ -5,11 +5,27 @@ > # error "please don't include this file directly" > #endif > >+#include <linux/types.h> >+ >+#if (CONFIG_NR_CPUS < 256) >+typedef u8 __ticket_t; >+#else >+typedef u16 __ticket_t; >+#endif >+ >+#define TICKET_SHIFT (sizeof(__ticket_t) * 8) >+#define TICKET_MASK ((1 << TICKET_SHIFT) - 1) So here you may need to cast the result to __ticket_t. Thanks. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization