Re: [PATCH 1/2] X86/KVM: Properly update 'tsc_offset' to represent the running guest

From: Paolo Bonzini
Date: Fri Apr 13 2018 - 12:04:38 EST


On 13/04/2018 18:02, Jim Mattson wrote:
> On Fri, Apr 13, 2018 at 4:23 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote:
>> From: KarimAllah Ahmed <karahmed@xxxxxxxxx>
>>
>> Update 'tsc_offset' on vmenty/vmexit of L2 guests to ensure that it always
>> captures the TSC_OFFSET of the running guest whether it is the L1 or L2
>> guest.
>>
>> Cc: Jim Mattson <jmattson@xxxxxxxxxx>
>> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
>> Cc: Radim KrÄmÃÅ <rkrcmar@xxxxxxxxxx>
>> Cc: kvm@xxxxxxxxxxxxxxx
>> Cc: linux-kernel@xxxxxxxxxxxxxxx
>> Suggested-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
>> Signed-off-by: KarimAllah Ahmed <karahmed@xxxxxxxxx>
>> [AMD changes, fix update_ia32_tsc_adjust_msr. - Paolo]
>> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
>
>> @@ -11489,6 +11497,9 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
>> if (enable_shadow_vmcs)
>> copy_shadow_to_vmcs12(vmx);
>>
>> + if (vmcs12->cpu_based_vm_exec_control & CPU_BASED_USE_TSC_OFFSETING)
>> + vcpu->arch.tsc_offset += vmcs12->tsc_offset;
>> +
>
> This seems a little early, since we don't restore the L1 TSC offset on
> the nested_vmx_failValid path.
>

Now this can be a nice one to introduce the VMX API tests. :) I'll try
to do it on Monday as punishment for not noticing the bug. In the
meanwhile, Karim, can you post a fixed fixed version?

Paolo