Jan Kiszka <jan.kiszka@xxxxxx> writes: ... > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -2467,6 +2467,7 @@ static void nested_vmx_setup_ctls_msrs(struct vcpu_vmx *vmx) > vmx->nested.nested_vmx_secondary_ctls_low = 0; > vmx->nested.nested_vmx_secondary_ctls_high &= > SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | > + SECONDARY_EXEC_RDTSCP | > SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE | > SECONDARY_EXEC_APIC_REGISTER_VIRT | > SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY | > @@ -7510,7 +7511,7 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu) > return nested_cpu_has(vmcs12, CPU_BASED_INVLPG_EXITING); > case EXIT_REASON_RDPMC: > return nested_cpu_has(vmcs12, CPU_BASED_RDPMC_EXITING); > - case EXIT_REASON_RDTSC: > + case EXIT_REASON_RDTSC: case EXIT_REASON_RDTSCP: > return nested_cpu_has(vmcs12, CPU_BASED_RDTSC_EXITING); > case EXIT_REASON_VMCALL: case EXIT_REASON_VMCLEAR: > case EXIT_REASON_VMLAUNCH: case EXIT_REASON_VMPTRLD: > @@ -8517,6 +8518,9 @@ static void vmx_cpuid_update(struct kvm_vcpu *vcpu) > exec_control); > } > } > + if (!vmx->rdtscp_enabled) > + vmx->nested.nested_vmx_secondary_ctls_high &= > + ~SECONDARY_EXEC_RDTSCP; No need to do this if nested is not enabled ? Or just a "if (nested)" in the prior if else loop should be enough I think. Bandan > } > > /* Exposing INVPCID only when PCID is exposed */ > @@ -9146,8 +9150,9 @@ static void prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12) > exec_control &= ~SECONDARY_EXEC_RDTSCP; > /* Take the following fields only from vmcs12 */ > exec_control &= ~(SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | > + SECONDARY_EXEC_RDTSCP | > SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY | > - SECONDARY_EXEC_APIC_REGISTER_VIRT); > + SECONDARY_EXEC_APIC_REGISTER_VIRT); > if (nested_cpu_has(vmcs12, > CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)) > exec_control |= vmcs12->secondary_vm_exec_control; -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html