On 14/11/19 01:17, Oliver Upton wrote: > [v1] https://lore.kernel.org/r/20190828234134.132704-1-oupton@xxxxxxxxxx > [v2] https://lore.kernel.org/r/20190903213044.168494-1-oupton@xxxxxxxxxx > [v3] https://lore.kernel.org/r/20190903215801.183193-1-oupton@xxxxxxxxxx > [v4] https://lore.kernel.org/r/20190906210313.128316-1-oupton@xxxxxxxxxx > > v1 => v2: > - Add Krish's Co-developed-by and Signed-off-by tags. > - Fix minor nit to kvm-unit-tests to use 'host' local variable > throughout test_load_pgc() > - Teach guest_state_test_main() to check guest state from within nested > VM > - Update proposed tests to use guest/host state checks, wherein the > value is checked from MSR_CORE_PERF_GLOBAL_CTRL. > - Changelog line wrapping > > v2 => v3: > - Remove the value unchanged condition from > kvm_is_valid_perf_global_ctrl > - Add line to changelog for patch 3/8 > > v3 => v4: > - Allow tests to set the guest func multiple times > - Style fixes throughout kvm-unit-tests patches, per Krish's review > > v4 => v5: > - Rebased kernel and kvm-unit-tests patches > - Reordered and reworked patches to now WARN on a failed > kvm_set_msr() > - Dropped patch to alow resetting guest in kvm-unit-tests, as the > functionality is no longer needed. > > This patchset exposes the "load IA32_PERF_GLOBAL_CTRL" to guests for nested > VM-entry and VM-exit. There already was some existing code that supported > the VM-exit ctrl, though it had an issue and was not exposed to the guest > anyway. These patches are based on the original set that Krish Sadhukhan > sent out earlier this year. > > Oliver Upton (6): > KVM: nVMX: Expose load IA32_PERF_GLOBAL_CTRL VM-{Entry,Exit} control > KVM: nVMX: Load GUEST_IA32_PERF_GLOBAL_CTRL MSR on VM-Entry > KVM: nVMX: Use kvm_set_msr to load IA32_PERF_GLOBAL_CTRL on VM-Exit > KVM: nVMX: Check HOST_IA32_PERF_GLOBAL_CTRL on VM-Entry > KVM: nVMX: Check GUEST_IA32_PERF_GLOBAL_CTRL on VM-Entry > KVM: VMX: Add helper to check reserved bits in IA32_PERF_GLOBAL_CTRL > > arch/x86/kvm/pmu.h | 6 ++++++ > arch/x86/kvm/vmx/nested.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- > arch/x86/kvm/vmx/nested.h | 1 + > arch/x86/kvm/vmx/pmu_intel.c | 5 ++++- > Queued, thanks. But I had to squash this in patch 8: diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c index 3129385..b6233ae 100644 --- a/x86/vmx_tests.c +++ b/x86/vmx_tests.c @@ -7161,6 +7161,7 @@ static void test_perf_global_ctrl(u32 nr, const char *name, u32 ctrl_nr, report_prefix_pop(); } + data->enabled = false; report_prefix_pop(); vmcs_write(ctrl_nr, ctrl_saved); vmcs_write(nr, pgc_saved); and I'm not sure about how this could have worked for you. Paolo