aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2013-06-25 15:57:44 +0200
committerJan Beulich <jbeulich@suse.com>2013-06-25 15:57:44 +0200
commit7f2e992b824ec62a2818e64390ac2ccfbd74e6b7 (patch)
treebf3c525ba824282cd00ae49e78e168407ea10504
parent28d386fc4341683af86f6c3fde544e1651715ffd (diff)
downloadxen-7f2e992b824ec62a2818e64390ac2ccfbd74e6b7.tar.gz
xen-7f2e992b824ec62a2818e64390ac2ccfbd74e6b7.tar.bz2
xen-7f2e992b824ec62a2818e64390ac2ccfbd74e6b7.zip
VMX/Viridian: suppress MSR-based APIC suggestion when having APIC-V
When the CPU has the necessary capabilities, having Windows use synthetic MSR reads/writes is bogus, as this still requires emulation (which is pretty much guaranteed to be slower than having the hardware carry out the operation). Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Paul Durrant <paul.durrant@citrix.com> Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
-rw-r--r--xen/arch/x86/hvm/viridian.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/xen/arch/x86/hvm/viridian.c b/xen/arch/x86/hvm/viridian.c
index 1ee0f7fec8..46492cbb32 100644
--- a/xen/arch/x86/hvm/viridian.c
+++ b/xen/arch/x86/hvm/viridian.c
@@ -87,8 +87,9 @@ int cpuid_viridian_leaves(unsigned int leaf, unsigned int *eax,
if ( (d->arch.hvm_domain.viridian.guest_os_id.raw == 0) ||
(d->arch.hvm_domain.viridian.guest_os_id.fields.os < 4) )
break;
- *eax = (CPUID4A_MSR_BASED_APIC |
- CPUID4A_RELAX_TIMER_INT);
+ *eax = CPUID4A_RELAX_TIMER_INT;
+ if ( !cpu_has_vmx_apic_reg_virt )
+ *eax |= CPUID4A_MSR_BASED_APIC;
*ebx = 2047; /* long spin count */
break;
}