Re: PATCH: setup_vmcs_config: disable TSC scaling on unlike processors

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

 



Subjects that touch only arch/x86/kvm/vmx.c are usually prefixed with
"[PATCH] KVM: VMX:".

2016-12-01 21:32-0500, Don Bowman:
> Add an enable_tsc_scaling parameter to kvm
> 
> Signed-off-by: Don Bowman <db@xxxxxxxxxxxx>
> ---
> 
> My system has what i thought were two identical processors (same
> stepping ID etc).
> However, bafflingly, one of them has the ability to do TSC scaling,
> and one does not (as reported in the vmcs).

Wow, the chip doesn't sound trustworthy.

> This in turn causes kvm to give up entirely.
> 
> I feel a better solution is to mask off this capability on the one processor.

I like the global toggle better -- it is less code with more uses.

> If enable_tsc_scaling is set false, the feature is ignored, and all
> processors end up matching each other, enabling acceleration.
> 
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> @@ -103,6 +103,9 @@ module_param_named(enable_shadow_vmcs,
> enable_shadow_vmcs, bool, S_IRUGO);
>  static bool __read_mostly nested = 0;
>  module_param(nested, bool, S_IRUGO);
> 
> +static bool __read_mostly enable_tsc_scaling = true;
> +module_param(enable_tsc_scaling, bool, S_IRUGO);

The "enable_" prefix is not needed, please do

  module_param_named(tsc_scaling, ...)

> +
>  static u64 __read_mostly host_xss;
> 
>  static bool __read_mostly enable_pml = 1;
> @@ -3449,6 +3452,8 @@ static __init int setup_vmcs_config(struct
> vmcs_config *vmcs_conf)
>         vmcs_conf->pin_based_exec_ctrl = _pin_based_exec_control;
>         vmcs_conf->cpu_based_exec_ctrl = _cpu_based_exec_control;
>         vmcs_conf->cpu_based_2nd_exec_ctrl = _cpu_based_2nd_exec_control;
> +        if (!enable_tsc_scaling)
> +            vmcs_conf->cpu_based_2nd_exec_ctrl &= ~SECONDARY_EXEC_TSC_SCALING;

Move this to vmx_secondary_exec_control(), where we disable all other
features.

You'll notice kvm_has_tsc_control in hardware_setup() when clearing the
flag if it isn't supported by hardware, so I think your change would
make sense as a x86 kvm module option based on kvm_has_tsc_control.

Thanks.
--
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