Re: [PATCH v2] powerpc ticket locks

From: Raghavendra KT
Date: Tue Feb 11 2014 - 04:54:01 EST


On Mon, Feb 10, 2014 at 8:40 AM, Benjamin Herrenschmidt
<benh@xxxxxxxxxxxxxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/