36 lines
1002 B
Diff
36 lines
1002 B
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||
|
Date: Sun, 18 Feb 2018 23:35:41 +0000
|
||
|
Subject: [PATCH] locking: rwsem: spin faster
|
||
|
|
||
|
tweak rwsem owner spinning a bit
|
||
|
---
|
||
|
kernel/locking/rwsem.c | 4 +++-
|
||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
|
||
|
index eef04551eae7..1ec5ab4c8ff7 100644
|
||
|
--- a/kernel/locking/rwsem.c
|
||
|
+++ b/kernel/locking/rwsem.c
|
||
|
@@ -720,6 +720,7 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
||
|
struct task_struct *new, *owner;
|
||
|
unsigned long flags, new_flags;
|
||
|
enum owner_state state;
|
||
|
+ int i = 0;
|
||
|
|
||
|
owner = rwsem_owner_flags(sem, &flags);
|
||
|
state = rwsem_owner_state(owner, flags, nonspinnable);
|
||
|
@@ -753,7 +754,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
- cpu_relax();
|
||
|
+ if (i++ > 1000)
|
||
|
+ cpu_relax();
|
||
|
}
|
||
|
rcu_read_unlock();
|
||
|
|
||
|
--
|
||
|
https://clearlinux.org
|
||
|
|