Message ID | 20240109230250.424295-1-seanjc@google.com |
---|---|
Headers |
Return-Path: <linux-kernel+bounces-21489-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2411:b0:101:2151:f287 with SMTP id m17csp458018dyi; Tue, 9 Jan 2024 15:03:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IHCa/tqcnd6/Wma0Kw5OPsgYXKaiRZ5i7/XuSjodAtLfQuaEGTVbcra0BVHkOz5eTXh07X+ X-Received: by 2002:a05:600c:4c94:b0:40e:482d:505b with SMTP id g20-20020a05600c4c9400b0040e482d505bmr16288wmp.270.1704841413043; Tue, 09 Jan 2024 15:03:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704841413; cv=none; d=google.com; s=arc-20160816; b=DqPGnSDiHunl0sgfkcTf8HKlCddJR5eA9nA1DQZvcFV7NdoP3HESXHbyvokkh5MSY2 U3Kzw5LHnXPkUfkU4KWm6VlMC1/bBoLOOPx53X7VW7+KkuIatja4r+6ZU0XyiVQ5DTtH IEMFCYHG7BrYGAZNg5YehYMh/Ibhg9Mp57tADMc4oQ6osjBlkK+n3gMFCEXCojAUlu6/ HfE9Uh5v2T0wva69HYQJ+0TLbROCUHryimd/kkXUD5rUYFOK7XoB9LNSBBxas8u6ShJO /OtnLmMWqIfJorQd2A9vWPDeUnWfN/xMsMMipPsmEWQzCAjzmJMtsi6cgTOwLlD9fCka o6sQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:message-id:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:reply-to:dkim-signature; bh=+/WTC5urPvjKbLxaXGg2R7t+1+DYebe0qdlFCKKJSgE=; fh=gm96CM+cG0KJxn7vnhn0c1c98ILNP1HHUrKfrGecw3M=; b=qDVWO7zbzGfyohLCubfmdC7XHaNdczJMmqmhVAHYc2XvJs+ZiCJGWXKLHcKlAdtLxw XjrJsGaIpQG7iAMNDZ0Uj0kAoPYmrpNJyDXiXMUQxszIbFHeM3zrIaTi3Qa4PbksAAt7 ct6OYV1MYRhfZcMa1SWewe2NJnQZQg4hiPEP84F6uW8dMTezWna5qGdAHss58ivx9n94 dmNh4PsbLJ11ulJfHh+5FDnx1Sg3lH5cKLgiH/O9JyD8wCAfb3ZqIsqLslbXhK6dCsr8 0J0ZRiaDfGK1rdQ1nUcvV5rnYiP46dfPQ7mR2F3Mse5lqqMozuPO+t0a8YHeuAmIL2Si u6iw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=WaCeRluF; spf=pass (google.com: domain of linux-kernel+bounces-21489-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21489-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id c17-20020a17090603d100b00a2af7e3f74bsi1160690eja.172.2024.01.09.15.03.32 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 15:03:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-21489-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=WaCeRluF; spf=pass (google.com: domain of linux-kernel+bounces-21489-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21489-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 7A7591F2609D for <ouuuleilei@gmail.com>; Tue, 9 Jan 2024 23:03:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CC2B63EA7B; Tue, 9 Jan 2024 23:02:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="WaCeRluF" Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE3CC3E469 for <linux-kernel@vger.kernel.org>; Tue, 9 Jan 2024 23:02:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-db402e6f61dso4483627276.3 for <linux-kernel@vger.kernel.org>; Tue, 09 Jan 2024 15:02:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1704841373; x=1705446173; 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=+/WTC5urPvjKbLxaXGg2R7t+1+DYebe0qdlFCKKJSgE=; b=WaCeRluFbpL/0ux/AR9r8PSuCGI0X59auNyPOJEtMmImz6mmZPhcKxMDSs3XploSIB 6WhgAJjaqj95nv89urXhPp9x98MBo5jR5MO4QMVfAMS+JsH72ZFdeJqxtxOFxaXIdpP5 m33j1heZbuWih6PQTHNMUgzG0Gy2V598Rd/HvagPklA88ojkAD7yvBFA6vNYN2lumL8d ZQk58uaj9E+IIxC1D7O4IquzlYh+HADpKEaC5OCyL0+XGyZo3BsTTtGARGMeC0pXukgN /5o9aGWZBFguOIkoE+8FuKRBSse2tsXYEKNkB0VzxS1c3IZUWONg05B0Lu1iEfoknPvn MMgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704841373; x=1705446173; 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=+/WTC5urPvjKbLxaXGg2R7t+1+DYebe0qdlFCKKJSgE=; b=ZiEh5PzZD+kywbGpf2z77dKV8J+0neyVoLpbPt3edm0cg8ACbCkEtFDTtXuU/vaH8C wZYuGIBYMHBzAPtMCAapm9phG0NRqeuh21s6jgZtRY0WSh7WYqRU2yWa8DX02rch7QP/ 0YiSXPp8E5iJe0El06LpxSI8vA9PuWmnRHQo5FrP9LVdN5YV6nimGKqAtxoc6QvEhVpW ZJR5J1/g8R2xQw+dyQgeXiRjgYGWO1xtXAOGpZX3oKRKhVGnVYkbMJE5wvoOzYIW7/9a dUMZoDdBhxBNohc0cKNFKs04o86OgwI1tT8CM2e56hIsyKIrMpN0nEi8bSYsprEAojzH MvDw== X-Gm-Message-State: AOJu0Yx+qckdY6RvHm9PPCOP/74r8T+wzdZMCwX+iJQMSnFFZI2MUnvj XLubE8HHb7fb6xEveEwjocEjL3NQc95NGooWHw== X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:565:b0:dbd:99af:daba with SMTP id a5-20020a056902056500b00dbd99afdabamr34474ybt.5.1704841372925; Tue, 09 Jan 2024 15:02:52 -0800 (PST) Reply-To: Sean Christopherson <seanjc@google.com> Date: Tue, 9 Jan 2024 15:02:20 -0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> Mime-Version: 1.0 X-Mailer: git-send-email 2.43.0.472.g3155946c3a-goog Message-ID: <20240109230250.424295-1-seanjc@google.com> Subject: [PATCH v10 00/29] KVM: x86/pmu: selftests: Fixes and new tests From: Sean Christopherson <seanjc@google.com> To: Sean Christopherson <seanjc@google.com>, Paolo Bonzini <pbonzini@redhat.com> Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kan Liang <kan.liang@linux.intel.com>, Dapeng Mi <dapeng1.mi@linux.intel.com>, Jim Mattson <jmattson@google.com>, Jinrong Liang <cloudliang@tencent.com>, Aaron Lewis <aaronlewis@google.com>, Like Xu <likexu@tencent.com> Content-Type: text/plain; charset="UTF-8" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787655789422724648 X-GMAIL-MSGID: 1787655789422724648 |
Series |
KVM: x86/pmu: selftests: Fixes and new tests
|
|
Message
Sean Christopherson
Jan. 9, 2024, 11:02 p.m. UTC
Knock wood, _this_ is the final of fixes and tests for PMU counters. New in v10 is a small refactor to treat FIXED as a value, not a flag, when emulating RDPMC. Everything else is the same as v9 (although rebased, but there were no conflicts). v10: - Collect review. [Dapeng] - Treat the FIXED type in RDPMC's ECX as a value, not a flag. [Jim] v9: - https://lore.kernel.org/all/20231202000417.922113-1-seanjc@google.com - Collect reviews. [Dapeng, Kan] - Fix a 63:31 => 63:32 typo in a changelog. [Dapeng] - Actually check that forced emulation is enabled before trying to force emulation on RDPMC. [Jinrong] - Fix the aformentioned priority inversion issue. - Completely drop "support" for fast RDPMC, in quotes because KVM doesn't actually support RDPMC for non-architectural PMUs. I had left the code in v8 because I didn't fully grok what the early emulator check was doing, i.e. wasn't 100% confident it was dead code. v8: - https://lore.kernel.org/all/20231110021306.1269082-1-seanjc@google.com - Collect reviews. [Jim, Dapeng, Kan] - Tweak names for the RDPMC flags in the selftests #defines. - Get the event selectors used to virtualize fixed straight from perf instead of hardcoding the (wrong) selectors in KVM. [Kan] - Rename an "eventsel" field to "event" for a patch that gets blasted away in the end anyways. [Jim] - Add patches to fix RDPMC emulation and to test the behavior on Intel. I spot tested on AMD and spent ~30 minutes trying to squeeze in the bare minimum AMD support, but the PMU implementations between Intel and AMD are juuuust different enough to make adding AMD support non- trivial, and this series is already way too big. v7: - https://lore.kernel.org/all/20231108003135.546002-1-seanjc@google.com - 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 (22): 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: x86/pmu: Get eventsel for fixed counters from perf KVM: x86/pmu: Don't ignore bits 31:30 for RDPMC index on AMD KVM: x86/pmu: Prioritize VMX interception over #GP on RDPMC due to bad index KVM: x86/pmu: Apply "fast" RDPMC only to Intel PMUs KVM: x86/pmu: Disallow "fast" RDPMC for architectural Intel PMUs KVM: x86/pmu: Treat "fixed" PMU type in RDPMC as index as a value, not flag KVM: x86/pmu: Explicitly check for RDPMC of unsupported Intel PMC types 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 KVM: selftests: Add a forced emulation variation of KVM_ASM_SAFE() KVM: selftests: Add helpers for safe and safe+forced RDMSR, RDPMC, and XGETBV KVM: selftests: Extend PMU counters test to validate RDPMC after WRMSR arch/x86/include/asm/kvm-x86-pmu-ops.h | 3 +- arch/x86/kvm/emulate.c | 2 +- arch/x86/kvm/kvm_emulate.h | 2 +- arch/x86/kvm/pmu.c | 20 +- arch/x86/kvm/pmu.h | 5 +- arch/x86/kvm/svm/pmu.c | 17 +- arch/x86/kvm/vmx/pmu_intel.c | 178 +++-- arch/x86/kvm/x86.c | 9 +- tools/testing/selftests/kvm/Makefile | 2 + .../selftests/kvm/include/kvm_util_base.h | 4 + tools/testing/selftests/kvm/include/pmu.h | 97 +++ .../selftests/kvm/include/x86_64/processor.h | 148 ++++- 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 | 617 ++++++++++++++++++ .../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 +- 20 files changed, 1097 insertions(+), 291 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: 1c6d984f523f67ecfad1083bb04c55d91977bb15
Comments
On 1/10/2024 7:02 AM, Sean Christopherson wrote: > Knock wood, _this_ is the final of fixes and tests for PMU counters. New > in v10 is a small refactor to treat FIXED as a value, not a flag, when > emulating RDPMC. Everything else is the same as v9 (although rebased, but > there were no conflicts). > > v10: > - Collect review. [Dapeng] > - Treat the FIXED type in RDPMC's ECX as a value, not a flag. [Jim] > > v9: > - https://lore.kernel.org/all/20231202000417.922113-1-seanjc@google.com > - Collect reviews. [Dapeng, Kan] > - Fix a 63:31 => 63:32 typo in a changelog. [Dapeng] > - Actually check that forced emulation is enabled before trying to force > emulation on RDPMC. [Jinrong] > - Fix the aformentioned priority inversion issue. > - Completely drop "support" for fast RDPMC, in quotes because KVM doesn't > actually support RDPMC for non-architectural PMUs. I had left the code > in v8 because I didn't fully grok what the early emulator check was > doing, i.e. wasn't 100% confident it was dead code. > > v8: > - https://lore.kernel.org/all/20231110021306.1269082-1-seanjc@google.com > - Collect reviews. [Jim, Dapeng, Kan] > - Tweak names for the RDPMC flags in the selftests #defines. > - Get the event selectors used to virtualize fixed straight from perf > instead of hardcoding the (wrong) selectors in KVM. [Kan] > - Rename an "eventsel" field to "event" for a patch that gets blasted > away in the end anyways. [Jim] > - Add patches to fix RDPMC emulation and to test the behavior on Intel. > I spot tested on AMD and spent ~30 minutes trying to squeeze in the > bare minimum AMD support, but the PMU implementations between Intel > and AMD are juuuust different enough to make adding AMD support non- > trivial, and this series is already way too big. > > v7: > - https://lore.kernel.org/all/20231108003135.546002-1-seanjc@google.com > - 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 (22): > 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: x86/pmu: Get eventsel for fixed counters from perf > KVM: x86/pmu: Don't ignore bits 31:30 for RDPMC index on AMD > KVM: x86/pmu: Prioritize VMX interception over #GP on RDPMC due to bad > index > KVM: x86/pmu: Apply "fast" RDPMC only to Intel PMUs > KVM: x86/pmu: Disallow "fast" RDPMC for architectural Intel PMUs > KVM: x86/pmu: Treat "fixed" PMU type in RDPMC as index as a value, not > flag > KVM: x86/pmu: Explicitly check for RDPMC of unsupported Intel PMC > types > 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 > KVM: selftests: Add a forced emulation variation of KVM_ASM_SAFE() > KVM: selftests: Add helpers for safe and safe+forced RDMSR, RDPMC, and > XGETBV > KVM: selftests: Extend PMU counters test to validate RDPMC after WRMSR > > arch/x86/include/asm/kvm-x86-pmu-ops.h | 3 +- > arch/x86/kvm/emulate.c | 2 +- > arch/x86/kvm/kvm_emulate.h | 2 +- > arch/x86/kvm/pmu.c | 20 +- > arch/x86/kvm/pmu.h | 5 +- > arch/x86/kvm/svm/pmu.c | 17 +- > arch/x86/kvm/vmx/pmu_intel.c | 178 +++-- > arch/x86/kvm/x86.c | 9 +- > tools/testing/selftests/kvm/Makefile | 2 + > .../selftests/kvm/include/kvm_util_base.h | 4 + > tools/testing/selftests/kvm/include/pmu.h | 97 +++ > .../selftests/kvm/include/x86_64/processor.h | 148 ++++- > 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 | 617 ++++++++++++++++++ > .../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 +- > 20 files changed, 1097 insertions(+), 291 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: 1c6d984f523f67ecfad1083bb04c55d91977bb15 pmu_counters_test passes on Intel Sapphire Rapids platform. Tested-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
On Tue, 09 Jan 2024 15:02:20 -0800, Sean Christopherson wrote: > Knock wood, _this_ is the final of fixes and tests for PMU counters. New > in v10 is a small refactor to treat FIXED as a value, not a flag, when > emulating RDPMC. Everything else is the same as v9 (although rebased, but > there were no conflicts). > > v10: > - Collect review. [Dapeng] > - Treat the FIXED type in RDPMC's ECX as a value, not a flag. [Jim] > > [...] Applied to kvm-x86 pmu, with the fix for the file goof Andrew pointed out. [01/29] KVM: x86/pmu: Always treat Fixed counters as available when supported https://github.com/kvm-x86/linux/commit/5eb7fcbdea63 [02/29] KVM: x86/pmu: Allow programming events that match unsupported arch events https://github.com/kvm-x86/linux/commit/cbbd1aa89139 [03/29] KVM: x86/pmu: Remove KVM's enumeration of Intel's architectural encodings https://github.com/kvm-x86/linux/commit/db9e008a0f37 [04/29] KVM: x86/pmu: Setup fixed counters' eventsel during PMU initialization https://github.com/kvm-x86/linux/commit/61bb2ad795a7 [05/29] KVM: x86/pmu: Get eventsel for fixed counters from perf https://github.com/kvm-x86/linux/commit/7a277c22412c [06/29] KVM: x86/pmu: Don't ignore bits 31:30 for RDPMC index on AMD https://github.com/kvm-x86/linux/commit/ecb490770ad4 [07/29] KVM: x86/pmu: Prioritize VMX interception over #GP on RDPMC due to bad index https://github.com/kvm-x86/linux/commit/7bb7fce13601 [08/29] KVM: x86/pmu: Apply "fast" RDPMC only to Intel PMUs https://github.com/kvm-x86/linux/commit/d652981db08f [09/29] KVM: x86/pmu: Disallow "fast" RDPMC for architectural Intel PMUs https://github.com/kvm-x86/linux/commit/5728a4a0ea79 [10/29] KVM: x86/pmu: Treat "fixed" PMU type in RDPMC as index as a value, not flag https://github.com/kvm-x86/linux/commit/7a0fc734c20d [11/29] KVM: x86/pmu: Explicitly check for RDPMC of unsupported Intel PMC types https://github.com/kvm-x86/linux/commit/a634c76b2c1a [12/29] KVM: selftests: Add vcpu_set_cpuid_property() to set properties https://github.com/kvm-x86/linux/commit/d7e68738e1aa [13/29] KVM: selftests: Drop the "name" param from KVM_X86_PMU_FEATURE() https://github.com/kvm-x86/linux/commit/ff76d7712510 [14/29] KVM: selftests: Extend {kvm,this}_pmu_has() to support fixed counters https://github.com/kvm-x86/linux/commit/370d53632289 [15/29] KVM: selftests: Add pmu.h and lib/pmu.c for common PMU assets https://github.com/kvm-x86/linux/commit/e6faa0497057 [16/29] KVM: selftests: Test Intel PMU architectural events on gp counters https://github.com/kvm-x86/linux/commit/4f1bd6b16074 [17/29] KVM: selftests: Test Intel PMU architectural events on fixed counters https://github.com/kvm-x86/linux/commit/3e26b825f87d [18/29] KVM: selftests: Test consistency of CPUID with num of gp counters https://github.com/kvm-x86/linux/commit/7137cf751b9b [19/29] KVM: selftests: Test consistency of CPUID with num of fixed counters https://github.com/kvm-x86/linux/commit/c7d7c76ecf78 [20/29] KVM: selftests: Add functional test for Intel's fixed PMU counters https://github.com/kvm-x86/linux/commit/787071fd0262 [21/29] KVM: selftests: Expand PMU counters test to verify LLC events https://github.com/kvm-x86/linux/commit/b55e7adf633a [22/29] KVM: selftests: Add a helper to query if the PMU module param is enabled https://github.com/kvm-x86/linux/commit/c85e986716b0 [23/29] KVM: selftests: Add helpers to read integer module params https://github.com/kvm-x86/linux/commit/45e4755c39fc [24/29] KVM: selftests: Query module param to detect FEP in MSR filtering test https://github.com/kvm-x86/linux/commit/0326cc6b02c8 [25/29] KVM: selftests: Move KVM_FEP macro into common library header https://github.com/kvm-x86/linux/commit/00856e17da73 [26/29] KVM: selftests: Test PMC virtualization with forced emulation https://github.com/kvm-x86/linux/commit/cd34fd8c758e [27/29] KVM: selftests: Add a forced emulation variation of KVM_ASM_SAFE() https://github.com/kvm-x86/linux/commit/ab3b6a7de8df [28/29] KVM: selftests: Add helpers for safe and safe+forced RDMSR, RDPMC, and XGETBV https://github.com/kvm-x86/linux/commit/b5e66df34cb0 [29/29] KVM: selftests: Extend PMU counters test to validate RDPMC after WRMSR https://github.com/kvm-x86/linux/commit/a8a37f555684 -- https://github.com/kvm-x86/linux/tree/next