On Tue, Mar 14, 2023 at 11:19:51AM +0200, Alexandru Matei wrote: > From: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > > commit 250552b925ce400c17d166422fde9bb215958481 upstream. > > When KVM runs as a nested hypervisor on top of Hyper-V it uses Enlightened > VMCS and enables Enlightened MSR Bitmap feature for its L1s and L2s (which > are actually L2s and L3s from Hyper-V's perspective). When MSR bitmap is > updated, KVM has to reset HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP from > clean fields to make Hyper-V aware of the change. For KVM's L1s, this is > done in vmx_disable_intercept_for_msr()/vmx_enable_intercept_for_msr(). > MSR bitmap for L2 is build in nested_vmx_prepare_msr_bitmap() by blending > MSR bitmap for L1 and L1's idea of MSR bitmap for L2. KVM, however, doesn't > check if the resulting bitmap is different and never cleans > HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP in eVMCS02. This is incorrect and > may result in Hyper-V missing the update. > > The issue could've been solved by calling evmcs_touch_msr_bitmap() for > eVMCS02 from nested_vmx_prepare_msr_bitmap() unconditionally but doing so > would not give any performance benefits (compared to not using Enlightened > MSR Bitmap at all). 3-level nesting is also not a very common setup > nowadays. > > Don't enable 'Enlightened MSR Bitmap' feature for KVM's L2s (real L3s) for > now. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > Message-Id: <20211129094704.326635-2-vkuznets@xxxxxxxxxx> > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- You did not sign off on this backport (or any of the backports), so I can't take them sorry. greg k-h