• Vitaly Kuznetsov's avatar
    KVM: selftests: nVMX: Add enlightened MSR-Bitmap selftest · 70e477d9
    Vitaly Kuznetsov authored
    Introduce a test for enlightened MSR-Bitmap feature (Hyper-V on KVM):
    - Intercept access to MSR_FS_BASE in L1 and check that this works
     with enlightened MSR-Bitmap disabled.
    - Enabled enlightened MSR-Bitmap and check that the intercept still works
    as expected.
    - Intercept access to MSR_GS_BASE but don't clear the corresponding bit
    from 'hv_clean_fields', KVM is supposed to skip updating MSR-Bitmap02 and
    thus the consequent access to the MSR from L2 will not get intercepted.
    - Finally, clear the corresponding bit from 'hv_clean_fields' and check
    that access to MSR_GS_BASE is now intercepted.
    
    The test works with the assumption, that access to MSR_FS_BASE/MSR_GS_BASE
    is not intercepted for L1. If this ever becomes not true the test will
    fail as nested_vmx_exit_handled_msr() always checks L1's MSR-Bitmap for
    L2 irrespective of 'hv_clean_fields'. The behavior is correct as
    enlightened MSR-Bitmap feature is just an optimization, KVM is not obliged
    to ignore updates when the corresponding bit in 'hv_clean_fields' stays
    clear.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20220203104620.277031-4-vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    70e477d9
evmcs_test.c 7.34 KB