On Tue, Nov 5, 2019 at 1:58 PM Liran Alon <liran.alon@xxxxxxxxxx> wrote: > > > > > On 5 Nov 2019, at 21:19, Aaron Lewis <aaronlewis@xxxxxxxxxx> wrote: > > > > The L1 hypervisor may include the IA32_TIME_STAMP_COUNTER MSR in the > > vmcs12 MSR VM-exit MSR-store area as a way of determining the highest > > TSC value that might have been observed by L2 prior to VM-exit. The > > current implementation does not capture a very tight bound on this > > value. To tighten the bound, add the IA32_TIME_STAMP_COUNTER MSR to the > > vmcs02 VM-exit MSR-store area whenever it appears in the vmcs12 VM-exit > > MSR-store area. When L0 processes the vmcs12 VM-exit MSR-store area > > during the emulation of an L2->L1 VM-exit, special-case the > > IA32_TIME_STAMP_COUNTER MSR, using the value stored in the vmcs02 > > VM-exit MSR-store area to derive the value to be stored in the vmcs12 > > VM-exit MSR-store area. > > > > Reviewed-by: Jim Mattson <jmattson@xxxxxxxxxx> > > Signed-off-by: Aaron Lewis <aaronlewis@xxxxxxxxxx> > > The patch looks correct to me and I had only some minor style comments below. > Reviewed-by: Liran Alon <liran.alon@xxxxxxxxxx> > > I think you may also consider to separate this patch into two: > First patch add all framework code without still using it specifically for MSR_IA32_TSC > and a second patch to use the framework for MSR_IA32_TSC case. > > Just out of curiosity, may I ask which L1 hypervisor use this technique that you encountered this issue? It's a proprietary type 2 hypervisor that runs on Linux. > -Liran