xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: JBeulich@suse.com
Cc: keir@xen.org, jun.nakajima@intel.com, andrew.cooper3@citrix.com,
	eddie.dong@intel.com, dietmar.hahn@ts.fujitsu.com,
	xen-devel@lists.xen.org, suravee.suthikulpanit@amd.com,
	boris.ostrovsky@oracle.com
Subject: [PATCH v5 02/17] VPMU: Mark context LOADED before registers are loaded
Date: Mon, 17 Feb 2014 12:55:49 -0500	[thread overview]
Message-ID: <1392659764-22183-3-git-send-email-boris.ostrovsky@oracle.com> (raw)
In-Reply-To: <1392659764-22183-1-git-send-email-boris.ostrovsky@oracle.com>

Because a PMU interrupt may be generated as soon as PMU registers are loaded (or,
more precisely, as soon as HW PMU is "armed") we don't want to delay marking
context as LOADED until after registers are loaded. Otherwise during interrupt
handling VPMU_CONTEXT_LOADED may not be set and this could be confusing.

(Technically, only SVM needs this change right now since VMX will "arm" PMU later,
during VMRUN when global control register is loaded from VMCS. However, both
AMD and Intel code will require this patch when we introduce PV VPMU).

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
---
 xen/arch/x86/hvm/svm/vpmu.c       | 2 ++
 xen/arch/x86/hvm/vmx/vpmu_core2.c | 2 ++
 xen/arch/x86/hvm/vpmu.c           | 3 +--
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/vpmu.c b/xen/arch/x86/hvm/svm/vpmu.c
index 66a3815..3ac7d53 100644
--- a/xen/arch/x86/hvm/svm/vpmu.c
+++ b/xen/arch/x86/hvm/svm/vpmu.c
@@ -203,6 +203,8 @@ static void amd_vpmu_load(struct vcpu *v)
         return;
     }
 
+    vpmu_set(vpmu, VPMU_CONTEXT_LOADED);
+
     context_load(v);
 }
 
diff --git a/xen/arch/x86/hvm/vmx/vpmu_core2.c b/xen/arch/x86/hvm/vmx/vpmu_core2.c
index ee26362..8aa7cb2 100644
--- a/xen/arch/x86/hvm/vmx/vpmu_core2.c
+++ b/xen/arch/x86/hvm/vmx/vpmu_core2.c
@@ -369,6 +369,8 @@ static void core2_vpmu_load(struct vcpu *v)
     if ( vpmu_is_set(vpmu, VPMU_CONTEXT_LOADED) )
         return;
 
+    vpmu_set(vpmu, VPMU_CONTEXT_LOADED);
+
     __core2_vpmu_load(v);
 }
 
diff --git a/xen/arch/x86/hvm/vpmu.c b/xen/arch/x86/hvm/vpmu.c
index 21fbaba..63765fa 100644
--- a/xen/arch/x86/hvm/vpmu.c
+++ b/xen/arch/x86/hvm/vpmu.c
@@ -211,10 +211,9 @@ void vpmu_load(struct vcpu *v)
     if ( vpmu->arch_vpmu_ops && vpmu->arch_vpmu_ops->arch_vpmu_load )
     {
         apic_write_around(APIC_LVTPC, vpmu->hw_lapic_lvtpc);
+        /* Arch code needs to set VPMU_CONTEXT_LOADED */
         vpmu->arch_vpmu_ops->arch_vpmu_load(v);
     }
-
-    vpmu_set(vpmu, VPMU_CONTEXT_LOADED);
 }
 
 void vpmu_initialise(struct vcpu *v)
-- 
1.8.1.4

  parent reply	other threads:[~2014-02-17 17:55 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-17 17:55 [PATCH v5 00/17] x86/PMU: Xen PMU PV(H) support Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 01/17] common/symbols: Export hypervisor symbols to privileged guest Boris Ostrovsky
2014-02-17 17:55 ` Boris Ostrovsky [this message]
2014-02-17 17:55 ` [PATCH v5 03/17] x86/VPMU: Minor VPMU cleanup Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 04/17] intel/VPMU: Clean up Intel VPMU code Boris Ostrovsky
2014-03-13 10:45   ` Dietmar Hahn
2014-02-17 17:55 ` [PATCH v5 05/17] x86/VPMU: Handle APIC_LVTPC accesses Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 06/17] intel/VPMU: MSR_CORE_PERF_GLOBAL_CTRL should be initialized to zero Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 07/17] x86/VPMU: Add public xenpmu.h Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 08/17] x86/VPMU: Make vpmu not HVM-specific Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 09/17] x86/VPMU: Interface for setting PMU mode and flags Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 10/17] x86/VPMU: Initialize PMU for PV guests Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 11/17] x86/VPMU: Add support for PMU register handling on " Boris Ostrovsky
2014-02-17 17:55 ` [PATCH v5 12/17] x86/VPMU: Handle PMU interrupts for " Boris Ostrovsky
2014-02-17 17:56 ` [PATCH v5 13/17] x86/VPMU: Add privileged PMU mode Boris Ostrovsky
2014-02-17 17:56 ` [PATCH v5 14/17] x86/VPMU: Save VPMU state for PV guests during context switch Boris Ostrovsky
2014-02-17 17:56 ` [PATCH v5 15/17] x86/VPMU: NMI-based VPMU support Boris Ostrovsky
2014-02-17 17:56 ` [PATCH v5 16/17] x86/VPMU: Suport for PVH guests Boris Ostrovsky
2014-02-17 17:56 ` [PATCH v5 17/17] x86/VPMU: Move VPMU files up from hvm/ directory Boris Ostrovsky
2014-03-06 16:20 ` [PATCH v5 00/17] x86/PMU: Xen PMU PV(H) support Jan Beulich
2014-03-06 16:46   ` Boris Ostrovsky
2014-03-10  7:40     ` Dietmar Hahn
2014-03-13 10:47 ` Dietmar Hahn
2014-03-19 16:43   ` Boris Ostrovsky
2014-04-21 14:37 ` Konrad Rzeszutek Wilk
2014-04-22 23:48   ` Tian, Kevin
2014-04-23 12:50     ` Konrad Rzeszutek Wilk
2014-04-23  8:09   ` Tian, Kevin

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=1392659764-22183-3-git-send-email-boris.ostrovsky@oracle.com \
    --to=boris.ostrovsky@oracle.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=dietmar.hahn@ts.fujitsu.com \
    --cc=eddie.dong@intel.com \
    --cc=jun.nakajima@intel.com \
    --cc=keir@xen.org \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=xen-devel@lists.xen.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).