diff options
author | Boris Ostrovsky <boris.ostrovsky@oracle.com> | 2013-05-31 10:06:11 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-05-31 10:06:11 +0200 |
commit | 75a92f551ade530ebab73a0c3d4934dfb28149b5 (patch) | |
tree | c0d89aca42f80dccd35e8bc3846b0dc70b11dfcc | |
parent | 71fc4da1306cec55a42787310b01a1cb52489abc (diff) | |
download | xen-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.c | 16 |
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); |