All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Bader <stefan.bader@canonical.com>
To: Avi Kivity <avi@redhat.com>
Cc: <nyh@math.technion.ac.il>,
	Stefan Bader <stefan.bader@canonical.com>,
	Gleb Natapov <gleb@redhat.com>,
	Andy Whitcroft <apw@canonical.com>,
	kvm@vger.kernel.org
Subject: [PATCH 7/7] KVM: VMX: Intercept RDPMC
Date: Thu,  2 Aug 2012 17:19:16 +0200	[thread overview]
Message-ID: <1343920756-32362-8-git-send-email-stefan.bader@canonical.com> (raw)
In-Reply-To: <1343920756-32362-1-git-send-email-stefan.bader@canonical.com>

From: Avi Kivity <avi@redhat.com>

commit fee84b079d5ddee2247b5c1f53162c330c622902 upstream

Intercept RDPMC and forward it to the PMU emulation code.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>

BugLink: http://bugs.launchpad.net/bugs/1031090
(cherry-picked from fee84b079d5ddee2247b5c1f53162c330c622902 upstream)
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
---
 arch/x86/kvm/vmx.c |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 114fe29..bcd59a9 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1957,6 +1957,7 @@ static __init void nested_vmx_setup_ctls_msrs(void)
 #endif
 		CPU_BASED_MOV_DR_EXITING | CPU_BASED_UNCOND_IO_EXITING |
 		CPU_BASED_USE_IO_BITMAPS | CPU_BASED_MONITOR_EXITING |
+		CPU_BASED_RDPMC_EXITING |
 		CPU_BASED_ACTIVATE_SECONDARY_CONTROLS;
 	/*
 	 * We can allow some features even when not supported by the
@@ -2415,7 +2416,8 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf)
 	      CPU_BASED_USE_TSC_OFFSETING |
 	      CPU_BASED_MWAIT_EXITING |
 	      CPU_BASED_MONITOR_EXITING |
-	      CPU_BASED_INVLPG_EXITING;
+	      CPU_BASED_INVLPG_EXITING |
+	      CPU_BASED_RDPMC_EXITING;
 
 	if (yield_on_hlt)
 		min |= CPU_BASED_HLT_EXITING;
@@ -4614,6 +4616,16 @@ static int handle_invlpg(struct kvm_vcpu *vcpu)
 	return 1;
 }
 
+static int handle_rdpmc(struct kvm_vcpu *vcpu)
+{
+	int err;
+
+	err = kvm_rdpmc(vcpu);
+	kvm_complete_insn_gp(vcpu, err);
+
+	return 1;
+}
+
 static int handle_wbinvd(struct kvm_vcpu *vcpu)
 {
 	skip_emulated_instruction(vcpu);
@@ -5564,6 +5576,7 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu) = {
 	[EXIT_REASON_HLT]                     = handle_halt,
 	[EXIT_REASON_INVD]		      = handle_invd,
 	[EXIT_REASON_INVLPG]		      = handle_invlpg,
+	[EXIT_REASON_RDPMC]                   = handle_rdpmc,
 	[EXIT_REASON_VMCALL]                  = handle_vmcall,
 	[EXIT_REASON_VMCLEAR]	              = handle_vmclear,
 	[EXIT_REASON_VMLAUNCH]                = handle_vmlaunch,
-- 
1.7.9.5


  parent reply	other threads:[~2012-08-02 15:19 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-01 11:29 Nested kvm_intel broken on pre 3.3 hosts Stefan Bader
2012-08-01 13:39 ` Gleb Natapov
2012-08-01 14:08   ` Avi Kivity
2012-08-01 14:26     ` Stefan Bader
2012-08-01 14:29       ` Avi Kivity
2012-08-01 15:07         ` Nadav Har'El
2012-08-01 15:10           ` Gleb Natapov
2012-08-01 15:11           ` Avi Kivity
2012-08-02 15:19             ` Stefan Bader
2012-08-02 15:19               ` [PATCH 1/7] KVM: Move cpuid code to new file Stefan Bader
2012-08-02 15:19               ` [PATCH 2/7] KVM: expose latest Intel cpu new features (BMI1/BMI2/FMA/AVX2) to guest Stefan Bader
2012-08-02 15:19               ` [PATCH 3/7] KVM: Expose kvm_lapic_local_deliver() Stefan Bader
2012-08-02 15:19               ` [PATCH 4/7] KVM: Expose a version 2 architectural PMU to a guests Stefan Bader
2012-08-02 15:19               ` [PATCH 5/7] KVM: Add generic RDPMC support Stefan Bader
2012-08-02 15:19               ` [PATCH 6/7] KVM: SVM: Intercept RDPMC Stefan Bader
2012-08-02 15:19               ` Stefan Bader [this message]
2012-08-02 15:26               ` Nested kvm_intel broken on pre 3.3 hosts Avi Kivity
2012-08-03 10:55                 ` (unknown), Stefan Bader
2012-08-03 10:57                 ` Nested kvm_intel broken on pre 3.3 hosts Stefan Bader
2012-08-05  9:18                   ` Avi Kivity
2012-08-06 14:40                     ` Stefan Bader
2012-08-09  7:13                       ` Stefan Bader
2012-08-09  9:34                         ` Avi Kivity

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=1343920756-32362-8-git-send-email-stefan.bader@canonical.com \
    --to=stefan.bader@canonical.com \
    --cc=apw@canonical.com \
    --cc=avi@redhat.com \
    --cc=gleb@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=nyh@math.technion.ac.il \
    /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.