Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1554898
| From | Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v2] locking/pvqspinlock: Wait early if vCPU is preempted |
| Date | 2017-01-10 04:10 +0100 |
| Message-ID | <sXUYV-4ej-11@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
If prev node is not in runnig state or its vCPU is preempted, we can give
up our vCPU slices ASAP in pv_wait_node. After commit d9345c65eb79
("sched/core: Introduce the vcpu_is_preempted(cpu) interface") kernel
has knowledge of one vCPU is running or not.
Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>
---
v2:
rewrite the commit message as Ingo pointed out the mistake.
---
kernel/locking/qspinlock_paravirt.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/locking/qspinlock_paravirt.h b/kernel/locking/qspinlock_paravirt.h
index e3b5520..48648dc 100644
--- a/kernel/locking/qspinlock_paravirt.h
+++ b/kernel/locking/qspinlock_paravirt.h
@@ -263,7 +263,8 @@ pv_wait_early(struct pv_node *prev, int loop)
if ((loop & PV_PREV_CHECK_MASK) != 0)
return false;
- return READ_ONCE(prev->state) != vcpu_running;
+ return READ_ONCE(prev->state) != vcpu_running ||
+ vcpu_is_preempted(prev->cpu);
}
/*
--
2.4.11
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH v2] locking/pvqspinlock: Wait early if vCPU is preempted Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> - 2017-01-10 04:10 +0100 [tip:locking/core] locking/pvqspinlock: Don't wait if vCPU is preempted tip-bot for Pan Xinhui <tipbot@zytor.com> - 2017-01-12 11:10 +0100
csiph-web