search for: isqhead

Displaying 7 results from an estimated 7 matches for "isqhead".

2015 Apr 08
2
[PATCH v15 16/16] unfair qspinlock: a queue based unfair lock
...ue if lock stolen, false if becoming queue head + */ +static inline bool unfair_wait_node(struct qspinlock *lock, + struct mcs_spinlock *node, + struct mcs_spinlock *prev, + u32 my_tail, u32 prev_tail) +{ + struct uf_node *next, *pn = (struct uf_node *)node; + int loop; + bool isqhead; + + pn->prev = (struct uf_node *)prev; + pn->prev_tail = prev_tail; + /* + * Make sure that the other nodes see the prev & prev_tail value + * before proceeding. + */ + smp_wmb(); + + for (;;) { + /* + * This node will spin double the number of times of the + * previous node...
2015 Apr 08
2
[PATCH v15 16/16] unfair qspinlock: a queue based unfair lock
...ue if lock stolen, false if becoming queue head + */ +static inline bool unfair_wait_node(struct qspinlock *lock, + struct mcs_spinlock *node, + struct mcs_spinlock *prev, + u32 my_tail, u32 prev_tail) +{ + struct uf_node *next, *pn = (struct uf_node *)node; + int loop; + bool isqhead; + + pn->prev = (struct uf_node *)prev; + pn->prev_tail = prev_tail; + /* + * Make sure that the other nodes see the prev & prev_tail value + * before proceeding. + */ + smp_wmb(); + + for (;;) { + /* + * This node will spin double the number of times of the + * previous node...
2014 May 07
0
[PATCH v10 12/19] unfair qspinlock: Variable frequency lock stealing mechanism
...e value is returned, the caller will have to notify the next + * node only if the qhead flag is set and the next pointer in the queue + * node is not NULL. + */ +static noinline int +unfair_get_lock(struct qspinlock *lock, struct qnode *node, u32 tail, int count) +{ + u32 prev_tail; + int isqhead; + struct qnode *next; + + if (!static_key_false(&paravirt_unfairlocks_enabled) || + ((count & node->lsteal_mask) != node->lsteal_mask)) + return false; + + if (!queue_spin_trylock_unfair(lock)) { + /* + * Lock stealing fails, re-adjust the lsteal mask so that + * it is about...
2014 Apr 17
33
[PATCH v9 00/19] qspinlock: a 4-byte queue spinlock with PV support
v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex patches into smaller ones to ease review effort. - Fix a racing condition in the PV qspinlock code. v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving
2014 Apr 17
33
[PATCH v9 00/19] qspinlock: a 4-byte queue spinlock with PV support
v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex patches into smaller ones to ease review effort. - Fix a racing condition in the PV qspinlock code. v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving
2014 May 07
32
[PATCH v10 00/19] qspinlock: a 4-byte queue spinlock with PV support
v9->v10: - Make some minor changes to qspinlock.c to accommodate review feedback. - Change author to PeterZ for 2 of the patches. - Include Raghavendra KT's test results in patch 18. v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex
2014 May 07
32
[PATCH v10 00/19] qspinlock: a 4-byte queue spinlock with PV support
v9->v10: - Make some minor changes to qspinlock.c to accommodate review feedback. - Change author to PeterZ for 2 of the patches. - Include Raghavendra KT's test results in patch 18. v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex