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>
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;
}