Re: [PATCH v2] KVM: nVMX: Add support for rdtscp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux