From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00A50C433EF for ; Tue, 12 Jul 2022 11:55:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232960AbiGLLzB (ORCPT ); Tue, 12 Jul 2022 07:55:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232916AbiGLLyl (ORCPT ); Tue, 12 Jul 2022 07:54:41 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EF4B5B521D for ; Tue, 12 Jul 2022 04:54:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1657626857; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=K/Y45MWLvtRZQAQMme1NWCA15wADRq0pOspGW9SWYbc=; b=JvlkMhTpI6Qo8JKmSPvk/lfydowUSFpIrCwzd9TglBkMAf9Myr0G3h+Cq4uCEACrB1pIC3 ewRra4sOz9aKfVECOtsy/oC+ZQbE85fMSMCr4r6IgM1bfCRIxtr1qOhDkpwrHB5t9k7wyC Lk351XqcClr59F/OLx/Ac9OGHaBtHBY= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-39-YpJng0QZM9KNts20wq2Svg-1; Tue, 12 Jul 2022 07:54:16 -0400 X-MC-Unique: YpJng0QZM9KNts20wq2Svg-1 Received: by mail-qk1-f199.google.com with SMTP id t203-20020a3746d4000000b006af1d3e8068so7611363qka.0 for ; Tue, 12 Jul 2022 04:54:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=K/Y45MWLvtRZQAQMme1NWCA15wADRq0pOspGW9SWYbc=; b=vI3TpfySB1JZ0Q88ITytnpmmcxEv/gd4IzdvVOFj/J0XxYQU7kUckheND3SFH/ei6g kI3eGsrrnh0gPyrtcbawV4Y1Z/n55pkVICUI0aucszlMil1Ep/T6chrmkxcR1zFiDsri j9GbVivjPcS7w0B2jGlNkqg7sz8rdbrCD5ZvsFzqn1l21iEoEATsT/b/uqvPCu4V9SOy lcOnmLOOtWdphKXkZP0uVQEFM9tWY85PPYMBG6s3ZrSIhTsXxdv1CxRJTXfffOnqUxiC Lhlh5XiHBblIqDheLDWkqyR3JvHr/WRQ2cIAN6ZYbHCf231/LLZxnj6vC5ouhuSS/4dw ir+g== X-Gm-Message-State: AJIora+wNbvUwTke5Eto6vc7tDHtA9nw3FepBQWEbzs+FlfVZnIHUr77 8SpMQ8syQ7zyVyuf26JhGcTVRzxsddw2ON0wUfFPfB5XedmEuOQF/BjT+HrqwyTH2paLpP2sqa2 WQUBgf35iKCbtrmNirzdgYdwJ X-Received: by 2002:a05:620a:2991:b0:6b5:9921:6bb6 with SMTP id r17-20020a05620a299100b006b599216bb6mr3861379qkp.553.1657626856318; Tue, 12 Jul 2022 04:54:16 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uttgtgZ9z3Hy3T6ZIJ02RXN1KbaDIKXQ51OXBaCi+NRy80KGVyzDnRNPyv/kz+rtPXo5jpVw== X-Received: by 2002:a05:620a:2991:b0:6b5:9921:6bb6 with SMTP id r17-20020a05620a299100b006b599216bb6mr3861367qkp.553.1657626856113; Tue, 12 Jul 2022 04:54:16 -0700 (PDT) Received: from [10.35.4.238] (bzq-82-81-161-50.red.bezeqint.net. [82.81.161.50]) by smtp.gmail.com with ESMTPSA id v24-20020a05622a189800b0031e99798d70sm7529905qtc.29.2022.07.12.04.54.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jul 2022 04:54:15 -0700 (PDT) Message-ID: Subject: Re: [PATCH v3 10/25] KVM: selftests: Enable TSC scaling in evmcs selftest From: Maxim Levitsky To: Vitaly Kuznetsov , kvm@vger.kernel.org, Paolo Bonzini , Sean Christopherson Cc: Anirudh Rayabharam , Wanpeng Li , Jim Mattson , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org Date: Tue, 12 Jul 2022 14:54:11 +0300 In-Reply-To: <20220708144223.610080-11-vkuznets@redhat.com> References: <20220708144223.610080-1-vkuznets@redhat.com> <20220708144223.610080-11-vkuznets@redhat.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.40.4 (3.40.4-5.fc34) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2022-07-08 at 16:42 +0200, Vitaly Kuznetsov wrote: > The updated Enlightened VMCS v1 definition enables TSC scaling, test > that SECONDARY_EXEC_TSC_SCALING can now be enabled. > > Signed-off-by: Vitaly Kuznetsov > --- >  .../testing/selftests/kvm/x86_64/evmcs_test.c | 31 +++++++++++++++++-- >  1 file changed, 29 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/kvm/x86_64/evmcs_test.c b/tools/testing/selftests/kvm/x86_64/evmcs_test.c > index 8dda527cc080..80135b98dc3b 100644 > --- a/tools/testing/selftests/kvm/x86_64/evmcs_test.c > +++ b/tools/testing/selftests/kvm/x86_64/evmcs_test.c > @@ -18,6 +18,9 @@ >   >  #include "vmx.h" >   > +/* Test flags */ > +#define HOST_HAS_TSC_SCALING BIT(0) > + >  static int ud_count; >   >  static void guest_ud_handler(struct ex_regs *regs) > @@ -64,11 +67,14 @@ void l2_guest_code(void) >         vmcall(); >         rdmsr_gs_base(); /* intercepted */ >   > +       /* TSC scaling */ > +       vmcall(); > + >         /* Done, exit to L1 and never come back.  */ >         vmcall(); >  } >   > -void guest_code(struct vmx_pages *vmx_pages) > +void guest_code(struct vmx_pages *vmx_pages, u64 test_flags) >  { >  #define L2_GUEST_STACK_SIZE 64 >         unsigned long l2_guest_stack[L2_GUEST_STACK_SIZE]; > @@ -150,6 +156,18 @@ void guest_code(struct vmx_pages *vmx_pages) >         GUEST_ASSERT(vmreadz(VM_EXIT_REASON) == EXIT_REASON_VMCALL); >         GUEST_SYNC(11); >   > +       if (test_flags & HOST_HAS_TSC_SCALING) { > +               GUEST_ASSERT((rdmsr(MSR_IA32_VMX_PROCBASED_CTLS2) >> 32) & > +                            SECONDARY_EXEC_TSC_SCALING); > +               /* Try enabling TSC scaling */ > +               vmwrite(SECONDARY_VM_EXEC_CONTROL, vmreadz(SECONDARY_VM_EXEC_CONTROL) | > +                       SECONDARY_EXEC_TSC_SCALING); > +               vmwrite(TSC_MULTIPLIER, 1); > +       } > +       GUEST_ASSERT(!vmresume()); > +       GUEST_ASSERT(vmreadz(VM_EXIT_REASON) == EXIT_REASON_VMCALL); > +       GUEST_SYNC(12); > + >         /* Try enlightened vmptrld with an incorrect GPA */ >         evmcs_vmptrld(0xdeadbeef, vmx_pages->enlightened_vmcs); >         GUEST_ASSERT(vmlaunch()); > @@ -204,6 +222,7 @@ int main(int argc, char *argv[]) >         struct kvm_vm *vm; >         struct kvm_run *run; >         struct ucall uc; > +       u64 test_flags = 0; >         int stage; >   >         vm = vm_create_with_one_vcpu(&vcpu, guest_code); > @@ -212,11 +231,19 @@ int main(int argc, char *argv[]) >         TEST_REQUIRE(kvm_has_cap(KVM_CAP_NESTED_STATE)); >         TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS)); >   > +       if ((kvm_get_feature_msr(MSR_IA32_VMX_PROCBASED_CTLS2) >> 32) & > +           SECONDARY_EXEC_TSC_SCALING) { > +               test_flags |= HOST_HAS_TSC_SCALING; > +               pr_info("TSC scaling is supported, adding to test\n"); > +       } else { > +               pr_info("TSC scaling is not supported\n"); > +       } > + >         vcpu_set_hv_cpuid(vcpu); >         vcpu_enable_evmcs(vcpu); >   >         vcpu_alloc_vmx(vm, &vmx_pages_gva); > -       vcpu_args_set(vcpu, 1, vmx_pages_gva); > +       vcpu_args_set(vcpu, 2, vmx_pages_gva, test_flags); >   >         vm_init_descriptor_tables(vm); >         vcpu_init_descriptor_tables(vcpu); Reviewed-by: Maxim Levitsky Best regards, Maxim Levitsky