From patchwork Sat Mar 11 00:46:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 67934 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp63109wrd; Fri, 10 Mar 2023 17:23:26 -0800 (PST) X-Google-Smtp-Source: AK7set9WM8BO9z1sUiFscbuk+8GdfuMVhUTOHRIK67CbXl+mhUr44faD3hGxn4e9GNJu0BzVGLV1 X-Received: by 2002:a17:90b:1bcd:b0:235:1fb7:393d with SMTP id oa13-20020a17090b1bcd00b002351fb7393dmr3669475pjb.17.1678497806253; Fri, 10 Mar 2023 17:23:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678497806; cv=none; d=google.com; s=arc-20160816; b=hdjCWTf7alMCmkbSp4t0aFgUm1inmEyoBHqXjWvuayB3ZBwigRJO3wzaA7Oa/owPKs 2HblXi0SH5/H8Bq8oCxvZWtjgBulK5T/CdcRKa85OGGESSKVcjxJhy3x7aa916ADrPLe rjL2D9PSwOgN0uB3z7mhlsJ/Q0LUn1D1issMbCOvp/IvECrxDIOUGtHPA2t+I+mxTXuE zQpgoH4q6Mc9vPR7QpW3nmpzdvJARHRahMKOYUrwjwD8zOag18uAUgykFTMsvxsKV6yd uBKYHwEj0DLkhSsGAuPUGv4Or6DMC18b4XCsPft/725ZWsITV9lKlqHrBT3VB6L+Hkfz bvrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=qD1jIziSrgpE9j3MUNLoJWWdusyfTlvDCPPTQgu6pW4=; b=WqzcZUgPXdnqyUdHWnRahNMJBLYmN4IkCu6nVHXvog6tpqyEITL0c9ik+8fq9bxNJ1 JCzfmXdKnxSFdboPMXJJUftn+1bEKNz+FZc/pnCSTN1zlzFIpajL7BgSDqsLi4fMUjJW 40q4k3sdlLJ5x06dNZXb26y0wnkZnOf98F3P7u4dsRNsNJKoMOz8JpBwAuEHLOsUBALX ktagPULXFN53WzU8GrVjH1Or4o4Y6UhzS4Ro91xVT1FoPdnG+1c1WHXx+bRmtnsFNj2o qgs48u51Y4Gad4lZ2QOCzf3zJXQn2O6WoPmvIjPwQhcH3By3dGjCDVAOK6ECkyZybJA+ VQlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=cRu0v4x3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j7-20020a17090a738700b0022c5a147e9fsi1089147pjg.115.2023.03.10.17.23.13; Fri, 10 Mar 2023 17:23:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=cRu0v4x3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231282AbjCKAtU (ORCPT + 99 others); Fri, 10 Mar 2023 19:49:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231279AbjCKAsb (ORCPT ); Fri, 10 Mar 2023 19:48:31 -0500 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD6B213B97D for ; Fri, 10 Mar 2023 16:47:29 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id lm13-20020a170903298d00b0019a8c8a13dfso3652997plb.16 for ; Fri, 10 Mar 2023 16:47:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1678495621; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=qD1jIziSrgpE9j3MUNLoJWWdusyfTlvDCPPTQgu6pW4=; b=cRu0v4x3nzZkysQwV7Hjv2HLzgmm+NtSGFmgLD80UubovRtPmuUIa4optzL3Fwvd/o hPF3a9cuL6DQlU5TImx1c07CESv3RjmbBkKkBKwtimUD4sqiH1YyurCPmVHrrZkVflcj nGsvH9MuFpe/HCIL+tf4oVjoBTSKR+/Q3+z+cBlb+tXlcJyuh51L5MY/qWNjb+yIHiRf FblBDwn2s8TEJ39B3Sgft0DISWOkaqz87xxdRGULPVaLzS+me/AOug2po6jpmZX7YQGo M/K/v8E+CuVP5nRs/sHyU1BI5i6e1AQNE36d+NV89sgJW/RiDrJx33tUZC4+2ML/yfPt X8AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678495621; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qD1jIziSrgpE9j3MUNLoJWWdusyfTlvDCPPTQgu6pW4=; b=qelhvm0fUl/yv2tRLXGmxkV4bIWa+4nv5+z0J5beESc+xZLz1McxBj9w3JzZYvV7mH xzeKbsxzlEgOM78N9x00CV249A1FWPfPhaPB/n1SaqMFmIHqclnBZeCL4JRnbwaZK9I6 w6ai3ph/kr6Cvs1SSPXrzY13QqrZ+8L40fGfOBa1XuPqnzAcWSZqafaTIL31S6PgdTmL x0zI2v0iSmWKtXuDVvp5XyVfBtkMl1c1nO1UmL+72hhUZxtBz1ui34HVUipQNWxQ05QQ vtxwavMpKY4E34ZUFNMsLHrGYFbhYrhkJon8Kd+itaqqjnwlhVLIuA2JGsWihNCrv5Im 07nA== X-Gm-Message-State: AO0yUKXQIc01XnKHOGfPY1Qpn8hOh/D9x8VAV1FVOo4u3A8OCNkE55ot OzlGSNt5aAQaQq7gZdNCevpoQITAT4k= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:2959:0:b0:503:7bcd:89e9 with SMTP id bu25-20020a632959000000b005037bcd89e9mr9679853pgb.1.1678495621202; Fri, 10 Mar 2023 16:47:01 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Mar 2023 16:46:18 -0800 In-Reply-To: <20230311004618.920745-1-seanjc@google.com> Mime-Version: 1.0 References: <20230311004618.920745-1-seanjc@google.com> X-Mailer: git-send-email 2.40.0.rc1.284.g88254d51c5-goog Message-ID: <20230311004618.920745-22-seanjc@google.com> Subject: [PATCH v3 21/21] KVM: selftests: Verify LBRs are disabled if vPMU is disabled From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu , Yu Zhang X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760032515659344453?= X-GMAIL-MSGID: =?utf-8?q?1760032515659344453?= Verify that disabling the guest's vPMU via CPUID also disables LBRs. KVM has had at least one bug where LBRs would remain enabled even though the intent was to disable everything PMU related. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 29aaa0419294..3009b3e5254d 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -204,6 +204,34 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) kvm_vm_free(vm); } +/* + * Test that LBR MSRs are writable when LBRs are enabled, and then verify that + * disabling the vPMU via CPUID also disables LBR support. Set bits 2:0 of + * LBR_TOS as those bits are writable across all uarch implementations (arch + * LBRs will need to poke a different MSR). + */ +static void test_lbr_perf_capabilities(union perf_capabilities host_cap) +{ + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + int r; + + if (!host_cap.lbr_format) + return; + + vm = vm_create_with_one_vcpu(&vcpu, NULL); + + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); + vcpu_set_msr(vcpu, MSR_LBR_TOS, 7); + + vcpu_clear_cpuid_entry(vcpu, X86_PROPERTY_PMU_VERSION.function); + + r = _vcpu_set_msr(vcpu, MSR_LBR_TOS, 7); + TEST_ASSERT(!r, "Writing LBR_TOS should fail after disabling vPMU"); + + kvm_vm_free(vm); +} + int main(int argc, char *argv[]) { union perf_capabilities host_cap; @@ -222,4 +250,5 @@ int main(int argc, char *argv[]) test_fungible_perf_capabilities(host_cap); test_immutable_perf_capabilities(host_cap); test_guest_wrmsr_perf_capabilities(host_cap); + test_lbr_perf_capabilities(host_cap); }