aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Ostrovsky <boris.ostrovsky@oracle.com>2013-05-31 10:06:11 +0200
committerJan Beulich <jbeulich@suse.com>2013-05-31 10:06:11 +0200
commit75a92f551ade530ebab73a0c3d4934dfb28149b5 (patch)
treec0d89aca42f80dccd35e8bc3846b0dc70b11dfcc
parent71fc4da1306cec55a42787310b01a1cb52489abc (diff)
downloadxen-75a92f551ade530ebab73a0c3d4934dfb28149b5.tar.gz
xen-75a92f551ade530ebab73a0c3d4934dfb28149b5.tar.bz2
xen-75a92f551ade530ebab73a0c3d4934dfb28149b5.zip
Currently only a few Intel models have VPMU workaround turned on. It
appears, however, that this issue exists on more models than what is covered by check_pmc_quirk(). Since we don't know exactly which cpus are affected we should turn this workaround on for all family 6 processors. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Sort-of-Acked-by: "Auld, Will" <will.auld@intel.com>
-rw-r--r--xen/arch/x86/hvm/vmx/vpmu_core2.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/xen/arch/x86/hvm/vmx/vpmu_core2.c b/xen/arch/x86/hvm/vmx/vpmu_core2.c
index 9f152b48c2..15b2036c8d 100644
--- a/xen/arch/x86/hvm/vmx/vpmu_core2.c
+++ b/xen/arch/x86/hvm/vmx/vpmu_core2.c
@@ -65,8 +65,7 @@
#define PMU_FIXED_WIDTH_MASK (((1 << PMU_FIXED_WIDTH_BITS) -1) << PMU_FIXED_WIDTH_SHIFT)
/*
- * QUIRK to workaround an issue on Nehalem processors currently seen
- * on family 6 cpus E5520 (model 26) and X7542 (model 46).
+ * QUIRK to workaround an issue on various family 6 cpus.
* The issue leads to endless PMC interrupt loops on the processor.
* If the interrupt handler is running and a pmc reaches the value 0, this
* value remains forever and it triggers immediately a new interrupt after
@@ -79,15 +78,10 @@ bool_t __read_mostly is_pmc_quirk;
static void check_pmc_quirk(void)
{
- u8 family = current_cpu_data.x86;
- u8 cpu_model = current_cpu_data.x86_model;
- is_pmc_quirk = 0;
- if ( family == 6 )
- {
- if ( cpu_model == 47 || cpu_model == 46 || cpu_model == 42 ||
- cpu_model == 26 )
- is_pmc_quirk = 1;
- }
+ if ( current_cpu_data.x86 == 6 )
+ is_pmc_quirk = 1;
+ else
+ is_pmc_quirk = 0;
}
static int core2_get_pmc_count(void);