locking/rwsem: Remove RWSEM_OWNER_UNKNOWN
Remove the now unused RWSEM_OWNER_UNKNOWN hack. This hack breaks PREEMPT_RT and getting rid of it was the entire motivation for re-writing the percpu rwsem. The biggest problem is that it is fundamentally incompatible with any form of Priority Inheritance, any exclusively held lock must have a distinct owner. Requested-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Reviewed-by: Davidlohr Bueso <dbueso@suse.de> Acked-by: Will Deacon <will@kernel.org> Acked-by: Waiman Long <longman@redhat.com> Tested-by: Juri Lelli <juri.lelli@redhat.com> Link: https://lkml.kernel.org/r/20200204092228.GP14946@hirez.programming.kicks-ass.net
This commit is contained in:
parent
7f26482a87
commit
bcba67cd80
|
@ -53,12 +53,6 @@ struct rw_semaphore {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Setting all bits of the owner field except bit 0 will indicate
|
|
||||||
* that the rwsem is writer-owned with an unknown owner.
|
|
||||||
*/
|
|
||||||
#define RWSEM_OWNER_UNKNOWN (-2L)
|
|
||||||
|
|
||||||
/* In all implementations count != 0 means locked */
|
/* In all implementations count != 0 means locked */
|
||||||
static inline int rwsem_is_locked(struct rw_semaphore *sem)
|
static inline int rwsem_is_locked(struct rw_semaphore *sem)
|
||||||
{
|
{
|
||||||
|
|
|
@ -659,8 +659,6 @@ static inline bool rwsem_can_spin_on_owner(struct rw_semaphore *sem,
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
BUILD_BUG_ON(!(RWSEM_OWNER_UNKNOWN & RWSEM_NONSPINNABLE));
|
|
||||||
|
|
||||||
if (need_resched()) {
|
if (need_resched()) {
|
||||||
lockevent_inc(rwsem_opt_fail);
|
lockevent_inc(rwsem_opt_fail);
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue