On Mon, Feb 10, 2014 at 8:40 AM, Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote: > On Fri, 2014-02-07 at 17:58 +0100, Torsten Duwe wrote: >> typedef struct { >> - volatile unsigned int slock; >> -} arch_spinlock_t; >> + union { >> + __ticketpair_t head_tail; >> + struct __raw_tickets { >> +#ifdef __BIG_ENDIAN__ /* The "tail" part should be in the MSBs */ >> + __ticket_t tail, head; >> +#else >> + __ticket_t head, tail; >> +#endif >> + } tickets; >> + }; >> +#if defined(CONFIG_PPC_SPLPAR) >> + u32 holder; >> +#endif >> +} arch_spinlock_t __aligned(4); > > That's still broken with lockref (which we just merged). > > We must have the arch_spinlock_t and the ref in the same 64-bit word > otherwise it will break. > > We can make it work in theory since the holder doesn't have to be > accessed atomically, but the practicals are a complete mess ... > lockref would essentially have to re-implement the holder handling > of the spinlocks and use lower level ticket stuff. >
Probably very basic and stupid question from me. How much important to have holder information for PPC? From my previous experiment on x86, it was lock-waiter preemption which is problematic rather than lock-holder preemption. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/