From patchwork Wed Nov 8 00:31:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 16359 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:aa0b:0:b0:403:3b70:6f57 with SMTP id k11csp606673vqo; Tue, 7 Nov 2023 16:32:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IEZ00R+Ok8pfQX54O737XmcNDpC8XBi09NhojmlkQoQIdvocjcJqu2dL80jrQfrWzM8lRUN X-Received: by 2002:a05:6870:d913:b0:1ea:2ed0:2978 with SMTP id gq19-20020a056870d91300b001ea2ed02978mr441078oab.22.1699403540208; Tue, 07 Nov 2023 16:32:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699403540; cv=none; d=google.com; s=arc-20160816; b=NISsik3K+xqo0mk3XDPMVAVLiEJlFznC1FjkdSixTuxlEnf+TrjEvquzUaNWDHZWng jY5a2041d+tyEo7Q9Yb9YJbTqcT+xfMb2FdsgNliEKj+IceUa75TvTgiq8j7xRpVNpDX eHwvCsikBjBAH7oe+7nAXYKDWhZQLtq9VXcISwXUor6N6DZ5Xu/GOPH/GRAX3HYIeaQb ndrNQ+Y+lEZy8lfd+js/2JRjb/QiWyKqBnk3sOlOjy+8WGkpSyZiPMfHELsSWxA7wDaC tmiTl+67ZASG2FrzwBUqerXfuXNHfwKpaeBxMQhsfYeCFRZzXVgdOlcL4+okO1TUWCKc x3Kg== 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:mime-version:date :reply-to:dkim-signature; bh=7P2uvgy4SF2Vsxo1O1jFhHP8I0VSiu9GCBS0pSiN+9I=; fh=gm96CM+cG0KJxn7vnhn0c1c98ILNP1HHUrKfrGecw3M=; b=JvD/WnV+U+fJ7AUSlze4jXuge0NHHVJXqR4gMSYSKQLaGUcQw0RXGWIJyyOGPNHESO 5j+nw4K/FuKYVwnBYgRHQy5JwZjenBePQ71Xw+Jzf8V/1yATr63EL0WbDXJ4OqUD97Zx ZhXJgaMKktvq/FOnkXtZS2Z7YYAPxm2E2IWY3chLYBfSsltYJVxA2fSuvsmZvXrZoTgj w2cMeM3NYbC9mdkAMszgKeeHBaRwJ3Q4ng9WMGzuEQwpUdJntDZB11ur9MoGygRyVhCn PDeXhDcao68FCsVjWhkT0/T9MKoLu4YbFwmdYVjmEOcYzT5O1gwZrsM6KGyXu6Y15C9M m21g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ZPMxqx3o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id 14-20020a63194e000000b005657ba564bdsi3103355pgz.826.2023.11.07.16.32.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Nov 2023 16:32:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ZPMxqx3o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 6766C80EE79A; Tue, 7 Nov 2023 16:31:58 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231551AbjKHAbn (ORCPT + 32 others); Tue, 7 Nov 2023 19:31:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229650AbjKHAbl (ORCPT ); Tue, 7 Nov 2023 19:31:41 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A448410F8 for ; Tue, 7 Nov 2023 16:31:39 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-5b31e000e97so86533567b3.1 for ; Tue, 07 Nov 2023 16:31:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699403499; x=1700008299; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:reply-to:from:to:cc :subject:date:message-id:reply-to; bh=7P2uvgy4SF2Vsxo1O1jFhHP8I0VSiu9GCBS0pSiN+9I=; b=ZPMxqx3oMAmJWaPs4jE+4bLs3R0RgHzNJ3eWX5BpULU7LP3zbxMz2scF4oN7UIdgLq 6fOR5fqMua7hVjTghUO84EX1aH3t0oMPG5p3E7Pfn4RKWxcWrB6UOMNSLQ8z1EnC+31Y OBL2iTKk0/PcmOQyGlEmGFq8b/j+23tVzr22i4d2o+0sRZ/f3czFZ2Wt1e+w0Con3nfh Zoi3WOVtHodraoHbonVt9u/D6ap6a6ncXZ/0DRmauNpkk1ZF9Tf9qBUWtlHiOjCgALN3 ArkMMpNZmblOLUsbJ0Cn36Oy3qutNByAoWiVbjLnG8tyBhPTLosA7HFTQT2rN7MpF2rL gOrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699403499; x=1700008299; h=cc:to:from:subject:message-id:mime-version:date:reply-to :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7P2uvgy4SF2Vsxo1O1jFhHP8I0VSiu9GCBS0pSiN+9I=; b=KR5l9Gmc6QxZfy3ZSDzCYw7xgpPltsFzZ6wqvV/WFz3Kshz8QOSADU7EZZo/ni9LU5 qUpp12q4rl0BJWvcFayVUPvIy3UD3sNscLDEOpV0F7qhfcSmKQ6jakjQQFiswYVWjYj9 zSyCw6LF8Gvu3kUkRf+msPsWIou+4uMDk0K1RmJTy1n94ZsdPdyZNEqTRKXhaYGsVgfD I1swK5u9BqVNd7BKJQWUt3qeJJoSoLN+YazTtF+IgcAs8e0lvwBTUA+ZKo68HDlWdvMi RvjiUn+l6wfoBz/ObeRm7dwkPznwj8M/bMrWLvoUojOhFoRMiwX4i3VITznhRHdrPVFI Vy5w== X-Gm-Message-State: AOJu0YwJTZrs7c4zH+56dXYFnrgAOPNaRpqmRuvMH90g9cek6uY52Ade 2NWKLwiMuwnilRwYo3ymQUiTRLY29Xc= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a0d:eb4a:0:b0:5a7:be3f:159f with SMTP id u71-20020a0deb4a000000b005a7be3f159fmr4903ywe.5.1699403498941; Tue, 07 Nov 2023 16:31:38 -0800 (PST) Reply-To: Sean Christopherson Date: Tue, 7 Nov 2023 16:31:16 -0800 Mime-Version: 1.0 X-Mailer: git-send-email 2.42.0.869.gea05f2083d-goog Message-ID: <20231108003135.546002-1-seanjc@google.com> Subject: [PATCH v7 00/19] KVM: x86/pmu: selftests: Fixes and new tests From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kan Liang , Dapeng Mi , Jim Mattson , Jinrong Liang , Aaron Lewis , Like Xu Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Tue, 07 Nov 2023 16:31:58 -0800 (PST) X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1781953766582773353 X-GMAIL-MSGID: 1781953766582773353 Round 7! Fix bugs where KVM incorrectly refuses to virtualize fixed counters and events whose encodings match unsupported arch events, and add a PMU counters selftest to verify As an aside, my hope is that in the long term, we can build out the PMU selftests and deprecate the PMU tests in KUT so that we have everything in-kernel and in one spot. v7: - Drop patches that unnecessarily sanitized supported CPUID. [Jim] - Purge the array of architectural event encodings. [Jim, Dapeng] - Clean up pmu.h to remove useless macros, and make it easier to use the new macros. [Jim] - Port more of pmu_event_filter_test.c to pmu.h macros. [Jim, Jinrong] - Clean up test comments and error messages. [Jim] - Sanity check the value provided to vcpu_set_cpuid_property(). [Jim] v6: - https://lore.kernel.org/all/20231104000239.367005-1-seanjc@google.com - Test LLC references/misses with CFLUSH{OPT}. [Jim] - Make the tests play nice without PERF_CAPABILITIES. [Mingwei] - Don't squash eventsels that happen to match an unsupported arch event. [Kan] - Test PMC counters with forced emulation (don't ask how long it took me to figure out how to read integer module params). v5: https://lore.kernel.org/all/20231024002633.2540714-1-seanjc@google.com v4: https://lore.kernel.org/all/20230911114347.85882-1-cloudliang@tencent.com v3: https://lore.kernel.org/kvm/20230814115108.45741-1-cloudliang@tencent.com Jinrong Liang (7): KVM: selftests: Add vcpu_set_cpuid_property() to set properties KVM: selftests: Add pmu.h and lib/pmu.c for common PMU assets KVM: selftests: Test Intel PMU architectural events on gp counters KVM: selftests: Test Intel PMU architectural events on fixed counters KVM: selftests: Test consistency of CPUID with num of gp counters KVM: selftests: Test consistency of CPUID with num of fixed counters KVM: selftests: Add functional test for Intel's fixed PMU counters Sean Christopherson (12): KVM: x86/pmu: Always treat Fixed counters as available when supported KVM: x86/pmu: Allow programming events that match unsupported arch events KVM: x86/pmu: Remove KVM's enumeration of Intel's architectural encodings KVM: x86/pmu: Setup fixed counters' eventsel during PMU initialization KVM: selftests: Drop the "name" param from KVM_X86_PMU_FEATURE() KVM: selftests: Extend {kvm,this}_pmu_has() to support fixed counters KVM: selftests: Expand PMU counters test to verify LLC events KVM: selftests: Add a helper to query if the PMU module param is enabled KVM: selftests: Add helpers to read integer module params KVM: selftests: Query module param to detect FEP in MSR filtering test KVM: selftests: Move KVM_FEP macro into common library header KVM: selftests: Test PMC virtualization with forced emulation arch/x86/include/asm/kvm-x86-pmu-ops.h | 1 - arch/x86/kvm/pmu.c | 1 - arch/x86/kvm/pmu.h | 1 - arch/x86/kvm/svm/pmu.c | 6 - arch/x86/kvm/vmx/pmu_intel.c | 107 +--- tools/testing/selftests/kvm/Makefile | 2 + .../selftests/kvm/include/kvm_util_base.h | 4 + tools/testing/selftests/kvm/include/pmu.h | 95 +++ .../selftests/kvm/include/x86_64/processor.h | 82 ++- tools/testing/selftests/kvm/lib/kvm_util.c | 62 +- tools/testing/selftests/kvm/lib/pmu.c | 31 + .../selftests/kvm/lib/x86_64/processor.c | 15 +- .../selftests/kvm/x86_64/pmu_counters_test.c | 568 ++++++++++++++++++ .../kvm/x86_64/pmu_event_filter_test.c | 143 ++--- .../smaller_maxphyaddr_emulation_test.c | 2 +- .../kvm/x86_64/userspace_msr_exit_test.c | 29 +- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 2 +- 17 files changed, 912 insertions(+), 239 deletions(-) create mode 100644 tools/testing/selftests/kvm/include/pmu.h create mode 100644 tools/testing/selftests/kvm/lib/pmu.c create mode 100644 tools/testing/selftests/kvm/x86_64/pmu_counters_test.c base-commit: 45b890f7689eb0aba454fc5831d2d79763781677