From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
To: "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>, Avi Kivity <avi@redhat.com>,
Ingo Molnar <mingo@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Rik van Riel <riel@redhat.com>
Cc: S390 <linux-s390@vger.kernel.org>,
Carsten Otte <cotte@de.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
KVM <kvm@vger.kernel.org>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
chegu vinod <chegu_vinod@hp.com>,
"Andrew M. Theurer" <habanero@linux.vnet.ibm.com>,
LKML <linux-kernel@vger.kernel.org>, X86 <x86@kernel.org>,
Gleb Natapov <gleb@redhat.com>,
linux390@de.ibm.com,
Srivatsa Vaddagiri <srivatsa.vaddagiri@gmail.com>,
Joerg Roedel <joerg.roedel@amd.com>
Subject: [PATCH RFC 1/2] kvm vcpu: Note down pause loop exit
Date: Mon, 09 Jul 2012 11:50:33 +0530 [thread overview]
Message-ID: <20120709062032.24030.10454.sendpatchset@codeblue> (raw)
In-Reply-To: <20120709062012.24030.37154.sendpatchset@codeblue>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Noting pause loop exited vcpu helps in filtering right candidate to yield.
Yielding to same vcpu may result in more wastage of cpu.
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
---
arch/x86/include/asm/kvm_host.h | 7 +++++++
arch/x86/kvm/svm.c | 1 +
arch/x86/kvm/vmx.c | 1 +
arch/x86/kvm/x86.c | 4 +++-
4 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index db7c1f2..857ca68 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -484,6 +484,13 @@ struct kvm_vcpu_arch {
u64 length;
u64 status;
} osvw;
+
+ /* Pause loop exit optimization */
+ struct {
+ bool pause_loop_exited;
+ bool dy_eligible;
+ } plo;
+
};
struct kvm_lpage_info {
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index f75af40..a492f5d 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -3264,6 +3264,7 @@ static int interrupt_window_interception(struct vcpu_svm *svm)
static int pause_interception(struct vcpu_svm *svm)
{
+ svm->vcpu.arch.plo.pause_loop_exited = true;
kvm_vcpu_on_spin(&(svm->vcpu));
return 1;
}
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 32eb588..600fb3c 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -4945,6 +4945,7 @@ out:
static int handle_pause(struct kvm_vcpu *vcpu)
{
skip_emulated_instruction(vcpu);
+ vcpu->arch.plo.pause_loop_exited = true;
kvm_vcpu_on_spin(vcpu);
return 1;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index be6d549..07dbd14 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -5331,7 +5331,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
if (req_immediate_exit)
smp_send_reschedule(vcpu->cpu);
-
+ vcpu->arch.plo.pause_loop_exited = false;
kvm_guest_enter();
if (unlikely(vcpu->arch.switch_db_regs)) {
@@ -6168,6 +6168,8 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
BUG_ON(vcpu->kvm == NULL);
kvm = vcpu->kvm;
+ vcpu->arch.plo.pause_loop_exited = false;
+ vcpu->arch.plo.dy_eligible = true;
vcpu->arch.emulate_ctxt.ops = &emulate_ops;
if (!irqchip_in_kernel(kvm) || kvm_vcpu_is_bsp(vcpu))
vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
next prev parent reply other threads:[~2012-07-09 6:20 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-09 6:20 [PATCH RFC 0/2] kvm: Improving directed yield in PLE handler Raghavendra K T
2012-07-09 6:20 ` Raghavendra K T [this message]
2012-07-09 6:33 ` [PATCH RFC 1/2] kvm vcpu: Note down pause loop exit Raghavendra K T
2012-07-09 6:33 ` Raghavendra K T
2012-07-09 22:39 ` Rik van Riel
2012-07-10 11:22 ` Raghavendra K T
2012-07-11 8:53 ` Avi Kivity
2012-07-11 10:52 ` Raghavendra K T
2012-07-11 11:18 ` Avi Kivity
2012-07-11 11:56 ` Raghavendra K T
2012-07-11 12:41 ` Andrew Jones
2012-07-12 10:58 ` Nikunj A Dadhania
2012-07-12 11:02 ` Raghavendra K T
2012-07-09 6:20 ` [PATCH RFC 2/2] kvm PLE handler: Choose better candidate for directed yield Raghavendra K T
2012-07-09 22:30 ` Rik van Riel
2012-07-10 11:46 ` Raghavendra K T
2012-07-09 7:55 ` [PATCH RFC 0/2] kvm: Improving directed yield in PLE handler Christian Borntraeger
2012-07-10 8:27 ` Raghavendra K T
2012-07-11 9:06 ` Avi Kivity
2012-07-11 10:17 ` Christian Borntraeger
2012-07-11 11:04 ` Avi Kivity
2012-07-11 11:16 ` Alexander Graf
2012-07-11 11:23 ` Avi Kivity
2012-07-11 11:52 ` Alexander Graf
2012-07-11 12:48 ` Avi Kivity
2012-07-12 2:19 ` Benjamin Herrenschmidt
2012-07-11 11:18 ` Christian Borntraeger
2012-07-11 11:39 ` Avi Kivity
2012-07-12 5:11 ` Raghavendra K T
2012-07-12 8:11 ` Avi Kivity
2012-07-12 8:32 ` Raghavendra K T
2012-07-12 2:17 ` Benjamin Herrenschmidt
2012-07-12 8:12 ` Avi Kivity
2012-07-12 11:24 ` Benjamin Herrenschmidt
2012-07-12 10:38 ` Nikunj A Dadhania
2012-07-11 11:51 ` Raghavendra K T
2012-07-11 11:55 ` Christian Borntraeger
2012-07-11 12:04 ` Raghavendra K T
2012-07-11 13:04 ` Raghavendra K T
2012-07-09 21:47 ` Andrew Theurer
2012-07-09 21:47 ` Andrew Theurer
2012-07-10 9:26 ` Raghavendra K T
2012-07-10 10:07 ` [PATCH RFC 0/2] kvm: Improving directed yield in PLE handler : detailed result Raghavendra K T
2012-07-10 11:54 ` [PATCH RFC 0/2] kvm: Improving directed yield in PLE handler Raghavendra K T
2012-07-10 13:27 ` Andrew Theurer
2012-07-11 9:00 ` Avi Kivity
2012-07-11 13:59 ` Raghavendra K T
2012-07-11 14:01 ` Raghavendra K T
2012-07-12 8:15 ` Avi Kivity
2012-07-12 8:25 ` Raghavendra K T
2012-07-12 12:31 ` Avi Kivity
2012-07-09 22:28 ` Rik van Riel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120709062032.24030.10454.sendpatchset@codeblue \
--to=raghavendra.kt@linux.vnet.ibm.com \
--cc=avi@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=chegu_vinod@hp.com \
--cc=cotte@de.ibm.com \
--cc=gleb@redhat.com \
--cc=habanero@linux.vnet.ibm.com \
--cc=hpa@zytor.com \
--cc=joerg.roedel@amd.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux390@de.ibm.com \
--cc=mingo@redhat.com \
--cc=mtosatti@redhat.com \
--cc=riel@redhat.com \
--cc=srivatsa.vaddagiri@gmail.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.