diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h index ddfd46a..becd7a6 100644 --- a/include/linux/list_bl.h +++ b/include/linux/list_bl.h @@ -131,8 +131,10 @@ static inline void hlist_bl_lock(struct hlist_bl_head *b) bit_spin_lock(0, (unsigned long *)b); #else raw_spin_lock(&b->lock); +#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) __set_bit(0, (unsigned long *)b); #endif +#endif } static inline void hlist_bl_unlock(struct hlist_bl_head *b) @@ -140,7 +142,9 @@ static inline void hlist_bl_unlock(struct hlist_bl_head *b) #ifndef CONFIG_PREEMPT_RT_BASE __bit_spin_unlock(0, (unsigned long *)b); #else +#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) __clear_bit(0, (unsigned long *)b); +#endif raw_spin_unlock(&b->lock); #endif } diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 0d49ddf..99855b3 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "workqueue_sched.h" @@ -1157,7 +1158,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, local_unlock_irqrestore(pendingb_lock, *flags); if (work_is_canceling(work)) return -ENOENT; - cpu_relax(); + cpu_chill(); return -EAGAIN; } diff --git a/localversion-rt b/localversion-rt index 9f7d0bd..08b3e75 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt13 +-rt14