From patchwork Wed Jun 7 01:02:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 104170 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3779414vqr; Tue, 6 Jun 2023 18:24:09 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5u3+7VAE5QgDCdR54p979ExLomd1qSpXxSO2XgAUmVC3a2l+E4mMj6eC6BZ3cWy9gZL7qL X-Received: by 2002:a05:6a20:1611:b0:10b:cb77:5403 with SMTP id l17-20020a056a20161100b0010bcb775403mr1609734pzj.52.1686101049230; Tue, 06 Jun 2023 18:24:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686101049; cv=none; d=google.com; s=arc-20160816; b=mqt1tTkoDnt4JG+vMXew8i0kAXqD3S1zRsemalDVV5tdmXCJ2ck3ruubeRt4UKdyP/ WUaTrPJF7O25kwvHBFo19KSEzAOo0lxVNlSXhmER6GP3Erumj97p7hBztAgo4smZvME5 HZBl/0lVKbW3V7vKnxHj2dQ9dUfaxd466Wovu/cKikossWj+/ZxHwJFzjGKsytVUl+1E lis5bZsR+YFT+6jzLzCpNGfRHiziBNyGfbDWt7x64QtWMzUTMJjQe6tK4h4v4Jykk5zM 4CAt/aFnWtEG8fC+yvYxyKiDc4fDnF/ZBV1+eGNPuOKf+7VwQHdS62heYR2w6q6AFWV1 t9kw== 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=Ppsx8Ceq66P31QklC+vqilKr6uT5OJgGHpP85vCiA6Y=; b=XTjRcBGt9Eg1ySk09mVRO/7SEw3LqgxeKphsNYXpATp7MnNQekp1Vgxsm4remAB2/b tLwKqoeuaF0cn+o3cM6Ra+qg0p42ExAm0VZYTcnBMDJ9UMmAOGoyv4SSfg0WHmJ49B5h 6Y5ogzkiVFkJKUTDOQKALCmD0X2iGzRBlsYEbfA8BqbbV8ZY8KnP/mYBUUSsrqaFwyUw B+0hegXKwlYIkphwaxVtcAWiQavvEwDEzsHd/hOL0kcXOTUT+K4fKCKrIulnTJ1oFdig YxfvfGsY/QUbth2TVRL0p0AxA7o3KVWIoaHyGhylicgWYKqZfi944vcGD2/LJmXbxkzM driw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=60F2xJuB; 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 s191-20020a6377c8000000b005401008809bsi8148935pgc.752.2023.06.06.18.23.55; Tue, 06 Jun 2023 18:24:09 -0700 (PDT) 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=20221208 header.b=60F2xJuB; 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 S240407AbjFGBCV (ORCPT + 99 others); Tue, 6 Jun 2023 21:02:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240381AbjFGBCN (ORCPT ); Tue, 6 Jun 2023 21:02:13 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBE25124 for ; Tue, 6 Jun 2023 18:02:11 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-bad06cc7fb7so10988202276.3 for ; Tue, 06 Jun 2023 18:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1686099731; x=1688691731; 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=Ppsx8Ceq66P31QklC+vqilKr6uT5OJgGHpP85vCiA6Y=; b=60F2xJuBCyVXi/iBprpW3GuxweYIVitbrvYdm3N96FsZqqFZ2ro1VTYWQECv2oLH9T CI2gz2e+UlSu7s1pZXNnbwYXsEm+k1euxY3C6yIvCmgmIolJD6TR5bB60JPREl2ol0gP hUNdZCWVahrHPFGvnvx5lSuPCK2zZm/XEuwkEfQ9bE2FTi6Ktk2TQUq6hJD+hEK9ICD1 BpdjfAF91eQb+bXOMKDTyqAtwYsVy7brSn5oVc8QGBuG9yLErI4FpJwMLGo6GaKFT2H7 N6Vk66Ff9rcSaU4QdOi/RBaBpfvf+XkX0h5fR2BbtqVkXmcdT/v9WsRrMgsA53jGf3bp 8hDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686099731; x=1688691731; 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=Ppsx8Ceq66P31QklC+vqilKr6uT5OJgGHpP85vCiA6Y=; b=LoEg/0/WmoyI+Q7LcoG/avyj04GaMwvTEcAFjH20ZUSW6zEiMBPRsdFuOgeDBsgB+a bC35jN5SQq3F3ymJi2Na5ZR8jCxwEmM3xnUJCrSvSt1xolvofPZkJaUlafbi/U9N3FYM 7Y5wmQOCKHH1M9BJCV/798WM7lkmp45A8uexWU4rl8d8d+JZybTcGGbrxSDpQiPkdcjO XwHhs29CmOQSvTOqgeKgXoD685JmSBuf8s3PKe5HKFwr/qd1PQnxcS9AaHfMUCHNv9/q BaaHiU+KkuGh4FmR7w2mo8kQJkONGuoaa32SSf+AD3btGr4iauMygeI8tsHLp6gGY94Q PN+A== X-Gm-Message-State: AC+VfDxARgsxxhk7Zdyu2t3MoilAk0tkBgNPf4AdvJmSsC9tz0zwW3Se fDcvmzI2vDTRXNlbSlBJu6znLj7CIcM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:50d3:0:b0:bb3:c4c2:5d2a with SMTP id e202-20020a2550d3000000b00bb3c4c25d2amr1201172ybb.7.1686099731265; Tue, 06 Jun 2023 18:02:11 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 6 Jun 2023 18:02:03 -0700 In-Reply-To: <20230607010206.1425277-1-seanjc@google.com> Mime-Version: 1.0 References: <20230607010206.1425277-1-seanjc@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Message-ID: <20230607010206.1425277-2-seanjc@google.com> Subject: [PATCH 1/4] KVM: x86/pmu: Use enums instead of hardcoded magic for arch event indices From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Aaron Lewis , Like Xu 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,T_SCC_BODY_TEXT_LINE,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?1768005093605383520?= X-GMAIL-MSGID: =?utf-8?q?1768005093605383520?= Add "enum intel_pmu_architectural_events" to replace the magic numbers for the (pseudo-)architectural events, and to give a meaningful name to each event so that new readers don't need psychic powers to understand what the code is doing. Cc: Aaron Lewis Cc: Like Xu Signed-off-by: Sean Christopherson Reviewed-by: Like Xu --- arch/x86/kvm/vmx/pmu_intel.c | 55 ++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c index 84be32d9f365..0050d71c9c01 100644 --- a/arch/x86/kvm/vmx/pmu_intel.c +++ b/arch/x86/kvm/vmx/pmu_intel.c @@ -22,23 +22,51 @@ #define MSR_PMC_FULL_WIDTH_BIT (MSR_IA32_PMC0 - MSR_IA32_PERFCTR0) +enum intel_pmu_architectural_events { + /* + * The order of the architectural events matters as support for each + * event is enumerated via CPUID using the index of the event. + */ + INTEL_ARCH_CPU_CYCLES, + INTEL_ARCH_INSTRUCTIONS_RETIRED, + INTEL_ARCH_REFERENCE_CYCLES, + INTEL_ARCH_LLC_REFERENCES, + INTEL_ARCH_LLC_MISSES, + INTEL_ARCH_BRANCHES_RETIRED, + INTEL_ARCH_BRANCHES_MISPREDICTED, + + NR_REAL_INTEL_ARCH_EVENTS, + + /* + * Pseudo-architectural event used to implement IA32_FIXED_CTR2, a.k.a. + * TSC reference cycles. The architectural reference cycles event may + * or may not actually use the TSC as the reference, e.g. might use the + * core crystal clock or the bus clock (yeah, "architectural"). + */ + PSEUDO_ARCH_REFERENCE_CYCLES = NR_REAL_INTEL_ARCH_EVENTS, + NR_INTEL_ARCH_EVENTS, +}; + static struct { u8 eventsel; u8 unit_mask; } const intel_arch_events[] = { - [0] = { 0x3c, 0x00 }, - [1] = { 0xc0, 0x00 }, - [2] = { 0x3c, 0x01 }, - [3] = { 0x2e, 0x4f }, - [4] = { 0x2e, 0x41 }, - [5] = { 0xc4, 0x00 }, - [6] = { 0xc5, 0x00 }, - /* The above index must match CPUID 0x0A.EBX bit vector */ - [7] = { 0x00, 0x03 }, + [INTEL_ARCH_CPU_CYCLES] = { 0x3c, 0x00 }, + [INTEL_ARCH_INSTRUCTIONS_RETIRED] = { 0xc0, 0x00 }, + [INTEL_ARCH_REFERENCE_CYCLES] = { 0x3c, 0x01 }, + [INTEL_ARCH_LLC_REFERENCES] = { 0x2e, 0x4f }, + [INTEL_ARCH_LLC_MISSES] = { 0x2e, 0x41 }, + [INTEL_ARCH_BRANCHES_RETIRED] = { 0xc4, 0x00 }, + [INTEL_ARCH_BRANCHES_MISPREDICTED] = { 0xc5, 0x00 }, + [PSEUDO_ARCH_REFERENCE_CYCLES] = { 0x00, 0x03 }, }; /* mapping between fixed pmc index and intel_arch_events array */ -static int fixed_pmc_events[] = {1, 0, 7}; +static int fixed_pmc_events[] = { + [0] = INTEL_ARCH_INSTRUCTIONS_RETIRED, + [1] = INTEL_ARCH_CPU_CYCLES, + [2] = PSEUDO_ARCH_REFERENCE_CYCLES, +}; static void reprogram_fixed_counters(struct kvm_pmu *pmu, u64 data) { @@ -92,13 +120,16 @@ static bool intel_hw_event_available(struct kvm_pmc *pmc) u8 unit_mask = (pmc->eventsel & ARCH_PERFMON_EVENTSEL_UMASK) >> 8; int i; - for (i = 0; i < ARRAY_SIZE(intel_arch_events); i++) { + BUILD_BUG_ON(ARRAY_SIZE(intel_arch_events) != NR_INTEL_ARCH_EVENTS); + + for (i = 0; i < NR_INTEL_ARCH_EVENTS; i++) { if (intel_arch_events[i].eventsel != event_select || intel_arch_events[i].unit_mask != unit_mask) continue; /* disable event that reported as not present by cpuid */ - if ((i < 7) && !(pmu->available_event_types & (1 << i))) + if ((i < PSEUDO_ARCH_REFERENCE_CYCLES) && + !(pmu->available_event_types & (1 << i))) return false; break; From patchwork Wed Jun 7 01:02:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 104167 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3771631vqr; Tue, 6 Jun 2023 18:04:20 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5VGE8JXAHDnsv/qcUamYPJUoxKwOqw9yJoFXUfGZDj55MtefZm1JIsQy5PTIz+J249iacf X-Received: by 2002:a17:902:c411:b0:1ac:5717:fd5 with SMTP id k17-20020a170902c41100b001ac57170fd5mr5398759plk.60.1686099859835; Tue, 06 Jun 2023 18:04:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686099859; cv=none; d=google.com; s=arc-20160816; b=XHJwdShI+4Pio4qKYiZd/PFRQmX9kpi+MyV7AmC6MrfnyXpcbMfgDS3rPScQyIZy+r VS9I7NIynlyfjLQhPhf2hSGFB36ccLklPTUfERb5Z1uaAfgltGf5lWY/TRhSBjyZke/B WIVEJ27AGByX8mbnkYGxpaxVwEwOZ2Q5o7YXirBSDcf0NwYgBGSgRmKu/A+pKj1vWhli MkVnDfrU1z0Q1DEfuj/IPAUJAyLk6SOU+gR6jOUV0bcTdJ0pUwmXP4wpRKN7fAISL6I8 374ow0wDh4cxtoiaWVhJwOLHKNnstFYqJ9qUxJ73R5oQpHBFIkwkPJetTmMpKsKMec2S e3+Q== 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=GdxTpX9Spmnpfwqe75ekBKH+Ldw87KCa0RRFcAselmo=; b=fjJXXANPUeC/ETmz3JBxeOspUeDD7YsSMqzsLW5VFC8Fb++gobeERsIblZ7fGBJpvE 3uvjHc2r17Z8lHMrBNsjPlFKmrDVLazcrkzG7O/5c5Y98UIKMfdI1+sJsyr41s63L+9l m8qwTbTGvUj0KX+HKZkSX5+vmDHCdMImyyvniNSLpRgA6ilBwxf0D6dOlAkDO1Rltu/6 1lkjUs/CqFx2Z70ypzyNo2sfOM3otyOOqW5GPdow9TpKdPLNoGxNWGRZuwC/31U9+eJI k3xjDqynMR4lSXcX7yrkqhbrRv/oTtpn3C8pfCDrXhgzOsjMlXWH8LvcCJUntk8IF4Cj R6bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=f3El6h4m; 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 l8-20020a170902f68800b001ae5fe35b6dsi8434676plg.177.2023.06.06.18.04.04; Tue, 06 Jun 2023 18:04:19 -0700 (PDT) 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=20221208 header.b=f3El6h4m; 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 S240424AbjFGBCY (ORCPT + 99 others); Tue, 6 Jun 2023 21:02:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240387AbjFGBCO (ORCPT ); Tue, 6 Jun 2023 21:02:14 -0400 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53ABC10D5 for ; Tue, 6 Jun 2023 18:02:13 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id 41be03b00d2f7-5343c1d114cso6231461a12.0 for ; Tue, 06 Jun 2023 18:02:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1686099733; x=1688691733; 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=GdxTpX9Spmnpfwqe75ekBKH+Ldw87KCa0RRFcAselmo=; b=f3El6h4m5J8UNxRj4A3Eoe7PFYBiRVvCRS7XcW3t5c08Z3ub3hWjb5iqnmgk+kAqJ6 OCB9HveaWmu7txC0/3bapAUlHQAV7dnXwgqCC6ZTEpyPZEgS9yryjImgtqwNOYzHb++Q 2eX5upC9ARA+s2JKqAvyakW6S48rXgVswrhpWugfB3KHwjchSpZ4e+oKV3L1WDhfuEpn F9W82WDmGKAZg7LF1qNA2aH2i59k7UmicNdZATpGNgij8p6+t9m65K+wsLWJyveegdYP IlrmJGwMoGVPukj6ZMn9+cml7v6SBNm+ZnJ31oEyJMCF2dZHJCncUB4CpFo7Skez72MP MrQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686099733; x=1688691733; 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=GdxTpX9Spmnpfwqe75ekBKH+Ldw87KCa0RRFcAselmo=; b=aECPSGy08uS5UBjEKy0HCH6xkn4mII6U90iQCDTEetqVx8qD88caBWbIBU5ATQCQCD wThneuSC0NjqrzAes671WVEvpPzhMmQLYmggboQYti/fx8rBDZh8XN9bM1XIplV1AfAS 7xFnAe9rjxEkTKd+hNuI80Pf6XxW1xD2k8dvjfauQlv5JDby9egMXRmyci0DBinRioGV PRrqD4LEolVNspC2u4zh9RTQfH3j1qAAVLoNYQrWGvLsOsN4E3hGZrI1sBrrF+spbBB6 iSwWox0AcLOawVofv1Xeb9ihmNN8kLANaLWHR++wpHrTj4Yj32FBQvTg1lk5sFaH5PbR wfNQ== X-Gm-Message-State: AC+VfDxCgX8rJYFJoiJqiqQ6AemJM7wJ+LLYIXw7ik2X9zXJ3azxTPgq JD5mwRBML0slUwdLJPtaVp4/Z+sqjsg= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a65:68c6:0:b0:528:c2cd:9b42 with SMTP id k6-20020a6568c6000000b00528c2cd9b42mr761868pgt.3.1686099732871; Tue, 06 Jun 2023 18:02:12 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 6 Jun 2023 18:02:04 -0700 In-Reply-To: <20230607010206.1425277-1-seanjc@google.com> Mime-Version: 1.0 References: <20230607010206.1425277-1-seanjc@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Message-ID: <20230607010206.1425277-3-seanjc@google.com> Subject: [PATCH 2/4] KVM: x86/pmu: Simplify intel_hw_event_available() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Aaron Lewis , Like Xu 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,T_SCC_BODY_TEXT_LINE,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?1768003846704482145?= X-GMAIL-MSGID: =?utf-8?q?1768003846704482145?= Walk only the "real", i.e. non-pseudo, architectural events when checking if a hardware event is available, i.e. isn't disabled by guest CPUID. Skipping pseudo-arch events in the loop body is unnecessarily convoluted, especially now that KVM has enums that delineate between real and pseudo events. Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/pmu_intel.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c index 0050d71c9c01..f281e634af3c 100644 --- a/arch/x86/kvm/vmx/pmu_intel.c +++ b/arch/x86/kvm/vmx/pmu_intel.c @@ -122,17 +122,16 @@ static bool intel_hw_event_available(struct kvm_pmc *pmc) BUILD_BUG_ON(ARRAY_SIZE(intel_arch_events) != NR_INTEL_ARCH_EVENTS); - for (i = 0; i < NR_INTEL_ARCH_EVENTS; i++) { + /* + * Disallow events reported as unavailable in guest CPUID. Note, this + * doesn't apply to pseudo-architectural events. + */ + for (i = 0; i < NR_REAL_INTEL_ARCH_EVENTS; i++) { if (intel_arch_events[i].eventsel != event_select || intel_arch_events[i].unit_mask != unit_mask) continue; - /* disable event that reported as not present by cpuid */ - if ((i < PSEUDO_ARCH_REFERENCE_CYCLES) && - !(pmu->available_event_types & (1 << i))) - return false; - - break; + return pmu->available_event_types & BIT(i); } return true; From patchwork Wed Jun 7 01:02:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 104169 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3776911vqr; Tue, 6 Jun 2023 18:17:06 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6dpzQIdsDdWuNDDl5c8x+Br88DUy9589GvJrHgRfCAGCBGrAqOqKYVqqVIHVuBDj+F3su7 X-Received: by 2002:a17:90a:1c6:b0:256:675f:1d49 with SMTP id 6-20020a17090a01c600b00256675f1d49mr4552387pjd.0.1686100625841; Tue, 06 Jun 2023 18:17:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686100625; cv=none; d=google.com; s=arc-20160816; b=bsf621w67TdZdUGb+pcVmqHfjp5s1TGjbKL3TEhod2B50PTIa41kPaM6QESRmVwFHc Xj5xWtshe23asTkGEanDeicDSvGfLHuRm/QdgBlgUDdRrjlVd3dU+mSzflVWvZ0NfAgc GkVq0+LPIuqYN/D8IXqk1vyP69udJkffF9u3kdhx3tj7FyjABsLuZEbqxxoF5eTSU+A8 8h71Br5IVWPgpqsy85Sb+ro+pKVI9/TRiUWnYusJJaw/2fhB6w9Lhn8gFnHyTfzwio1l SrUov3hQxYTLK1/Aev6cm4wVzJXq8mpM8gIkBKEnIcaP7A3ZM/m+XDt/XfL/qxU0el1F 35UA== 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=/p3hE18mmnljLb7fbFnVkkn8QwKXTaT5e9jEQlBWXcU=; b=rsXi1DCiMgf6a2yNDsWzFjnmBPn3kZ+47iSOupL+O7Ev0vnnB72x7wpkPFdTuNS+yC u1iuasvmXWbQjY4M8DJPENesU+Isun1HF9Z+khc1hIqYCUCxKeTiMSx24mteDCk4NYWZ wNKX4cSqSqjo7SJsZ6C1JcWLH9zXTDadEyXNQ8gIb7BzzHNvmT0XOqswgkFSmAKVZDch LxflkGHblh3kTn7N+hSo+x3ZDItJGhsXsG7cqt8Gb1qZisDslqJMehmDib/ov4C1mlA4 RkVwaz1vdlDK0lfMDPnauv4vmWjP5UgPasa2rP8f1GFcTvqiUyEBvbtMrXV/ykrRyqCL 0tlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=6UvT6b0p; 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 14-20020a17090a19ce00b00250291be156si247171pjj.148.2023.06.06.18.16.48; Tue, 06 Jun 2023 18:17:05 -0700 (PDT) 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=20221208 header.b=6UvT6b0p; 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 S240438AbjFGBC2 (ORCPT + 99 others); Tue, 6 Jun 2023 21:02:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240401AbjFGBCR (ORCPT ); Tue, 6 Jun 2023 21:02:17 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B824F1712 for ; Tue, 6 Jun 2023 18:02:15 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-bb2fae9b286so4669091276.3 for ; Tue, 06 Jun 2023 18:02:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1686099735; x=1688691735; 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=/p3hE18mmnljLb7fbFnVkkn8QwKXTaT5e9jEQlBWXcU=; b=6UvT6b0pBC2I3ReD74BskUKqwcHxT2DPwtJz6h4dQIf0lHIvZSKhTS2z6XHo0m2YyQ dyyCZPMTIaqqpphsP6+05vRW/aDN6KreYQqGeaaZWyXjMzJUD60PPE0HtOuAuZjtOHMu Oz+BBNEuK99s7gfi6PJtXvYxpHyEpOiYFxX+/yJI+S3tLnIoesOR7gyw8m4ynEGveJzT SDnYH7M+8WW2xoCXwUP1RnvMVPRCKHzj1ZNFKfxS2wp2nz7Ui38bmNTLEX2S2iKr5L45 Wb2+GpSmRSs1WwOAyl3F0INfi5pydWmUHlJRxYt6nOm1gQqIOSFij9xPXiJ3UssrOsEz RiNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686099735; x=1688691735; 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=/p3hE18mmnljLb7fbFnVkkn8QwKXTaT5e9jEQlBWXcU=; b=TKmul+SGiTfMIUavBzh1Gw3oR5r5TehlRZcODkZf4IXQUNZ3eBecIc2n32HhBbhsKK op3+wggnvb6cuxS284euMF5cNIWiyOWm8aqWUT28AIO2o/RnvBSn+nrlRLdVzvaM3OMw dZuM8Y8Jq01JoLM2/is7W4g4Rfax2kZwlLW8cJn2XR5hn2EOIIF6WAmw0Z6q1LWWVX5I R/tNN21EbmQpAfJnAEwDV3LwuvsnP/YE33v+wa4agUyG1yJrXyt/DcLiZaDH72umCQsJ tyuSDcbHf7tomFSXqbvyV4cfoq+B6XyFpAfJXuJeht5fQVAVswZl3BUfkb4lWGXukLmA NCVg== X-Gm-Message-State: AC+VfDzRVMEXk6AuKL1Npc4R+SIYZ6MmA0PyEC602/pfSdiUO533Er1M oahioZVlsFVPUITeD2apOp1medE/5xg= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:4117:0:b0:ba8:9653:c948 with SMTP id o23-20020a254117000000b00ba89653c948mr1341420yba.3.1686099734922; Tue, 06 Jun 2023 18:02:14 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 6 Jun 2023 18:02:05 -0700 In-Reply-To: <20230607010206.1425277-1-seanjc@google.com> Mime-Version: 1.0 References: <20230607010206.1425277-1-seanjc@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Message-ID: <20230607010206.1425277-4-seanjc@google.com> Subject: [PATCH 3/4] KVM: x86/pmu: Require nr fixed_pmc_events to match nr max fixed counters From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Aaron Lewis , Like Xu 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,T_SCC_BODY_TEXT_LINE,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?1768004649531838719?= X-GMAIL-MSGID: =?utf-8?q?1768004649531838719?= Assert that the number of known fixed_pmc_events matches the max number of fixed counters supported by KVM, and clean up related code. Opportunistically extend setup_fixed_pmc_eventsel()'s use of array_index_nospec() to cover fixed_counters, as nr_arch_fixed_counters is set based on userspace input (but capped using KVM-controlled values). Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/pmu_intel.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c index f281e634af3c..c0b0a721b97f 100644 --- a/arch/x86/kvm/vmx/pmu_intel.c +++ b/arch/x86/kvm/vmx/pmu_intel.c @@ -527,16 +527,17 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) static void setup_fixed_pmc_eventsel(struct kvm_pmu *pmu) { - size_t size = ARRAY_SIZE(fixed_pmc_events); - struct kvm_pmc *pmc; - u32 event; int i; + BUILD_BUG_ON(ARRAY_SIZE(fixed_pmc_events) != KVM_PMC_MAX_FIXED); + for (i = 0; i < pmu->nr_arch_fixed_counters; i++) { - pmc = &pmu->fixed_counters[i]; - event = fixed_pmc_events[array_index_nospec(i, size)]; + int index = array_index_nospec(i, KVM_PMC_MAX_FIXED); + struct kvm_pmc *pmc = &pmu->fixed_counters[index]; + u32 event = fixed_pmc_events[index]; + pmc->eventsel = (intel_arch_events[event].unit_mask << 8) | - intel_arch_events[event].eventsel; + intel_arch_events[event].eventsel; } } @@ -597,10 +598,8 @@ static void intel_pmu_refresh(struct kvm_vcpu *vcpu) if (pmu->version == 1) { pmu->nr_arch_fixed_counters = 0; } else { - pmu->nr_arch_fixed_counters = - min3(ARRAY_SIZE(fixed_pmc_events), - (size_t) edx.split.num_counters_fixed, - (size_t)kvm_pmu_cap.num_counters_fixed); + pmu->nr_arch_fixed_counters = min_t(int, edx.split.num_counters_fixed, + kvm_pmu_cap.num_counters_fixed); edx.split.bit_width_fixed = min_t(int, edx.split.bit_width_fixed, kvm_pmu_cap.bit_width_fixed); pmu->counter_bitmask[KVM_PMC_FIXED] = From patchwork Wed Jun 7 01:02:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 104168 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3772293vqr; Tue, 6 Jun 2023 18:05:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ50JUXXuEXr+3g0Hbt2n1hRlTGbbq459C+7VUJhdVluL3MyfbaF95IxgRTWwklL+xvdgUh5 X-Received: by 2002:a17:90a:b002:b0:259:3cf1:6188 with SMTP id x2-20020a17090ab00200b002593cf16188mr3306090pjq.40.1686099933488; Tue, 06 Jun 2023 18:05:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686099933; cv=none; d=google.com; s=arc-20160816; b=nv3dYzKSvhEsS99CcdaaOqoAvOSm9AFpUukCOzud4S4InFhyyl8Kts+on2JMo/3PgG m4/Ocam1DJSrRLhexz9avEtQGeQmGkLY5uLRPwy9vsb+YQzTZxv5ZVdzzi0NKQ2SiT83 7tRUE2xZLSSVANkaUopJj9Yce4YShCgVperL4Znrco7CDiXQS+bbT5y33xbp9E324yyH u2CDwg0xtIzls776/JwKCuC4Adjpx75KCzd/Zwgc7BpkQdhJ+J13aNmHa49fRmMBFyR0 0hmb+jtQWVdxH0b93KRFe0v69uiItt9TlPK5g9IUS+tV3g7/yFnGimslXONJpSZTu88Y jUwQ== 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=JyEnJxnIYsauq/wSH1IM7vfFjE0o1hylh2ce6s6Y23k=; b=Ltnv8novwADXx3uH3pzoRsKTJPvkLSmQ6sUFMHwdC8Rf1imnG2bwelJaCZq3DP9GPJ SQ7ySHgmpc16m5bGxB6nn6CoTBOWsWjG1ZuuN3P/d7HU+g/hbUBgMNGN/tVFqmReFb3I ODR8lDOtFRh71f2KSMi11LX5uZq2ufnkCnEBbv3/775SAssb5289jd9aHJNEKyYe2yRE 6TkWlWSFEO/D+UZxtflPAwqb9LnyxxA4KSMARvogV8t0C9cpMVmU45ui5R7jEUKGPvzd 3Q/6xBwzU0YzVgFVr1qxcK9J5g2F5er7Vf1c7diZ/tmJRaY9Y/BvBZblE5oD+JAslNPt 1IRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b="C/OMltvM"; 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 200-20020a6301d1000000b0053f2803af48si8430368pgb.581.2023.06.06.18.05.18; Tue, 06 Jun 2023 18:05:33 -0700 (PDT) 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=20221208 header.b="C/OMltvM"; 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 S240449AbjFGBCd (ORCPT + 99 others); Tue, 6 Jun 2023 21:02:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53666 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240406AbjFGBCS (ORCPT ); Tue, 6 Jun 2023 21:02:18 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E23210FB for ; Tue, 6 Jun 2023 18:02:17 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bb05f0e6ef9so10181338276.1 for ; Tue, 06 Jun 2023 18:02:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1686099736; x=1688691736; 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=JyEnJxnIYsauq/wSH1IM7vfFjE0o1hylh2ce6s6Y23k=; b=C/OMltvMIzfjvYtFziX8yWQNaRTGcBJ8pVtIQ97zHN8U1eAsZnzA7+xtl1uFr6bcSa AlL4dV//ptBOZZgYGa/KVmR17MrH8C+nPizWoZsE+bs/EaM5JpuDF3oSpgQDlcpKbwd1 SGHkw+XbxcKpxnuQElcNWiiuY6b2zMNU+b5jVpILaG07IUR+wgFU6gTm/dnbSW2FwvCr stTjkNBflDFmeZz2nfMUQq4cAEIB2T3NlUC7VNqhDkC5vuLQEWo+NH6BD1BnaWrsOarJ 4OPyBlbTbvStZkPaFIkuP9E+K9D0Kflm2Vn17/PwsrbO1xC7AZhwKpwbJFqQNEVnd2c8 oIJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686099736; x=1688691736; 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=JyEnJxnIYsauq/wSH1IM7vfFjE0o1hylh2ce6s6Y23k=; b=CLHnf2wVHjW+/5VHO7IlTI+PWjCppWtedQu3rIpnIjqQ/jbavzcfRPvL+TDM8SHXDv +WUgH/IG0JirNPCl3NKlYkOLrdBfLU455GGlNaQph6qDlUXyxf4P91FHkkEUQBplsw2G lKYNBv6g9ERE2H37LSayz1CLuebFZq3uJylu+K04/nrsFIlN64uv5RqYJvIipDNpcC+L xcaFrZAoem3XfBmt28mnK+IqHndx6QySeULp9UVsbcbcWheTAW4B3nf+36z9m0x+L8wP x3xjuhNdvgdfo8cSnf+JTlzGisi3b7RJH5cgnOBAc30V5do+k65ad0F866tF7aY3kRvb V5yw== X-Gm-Message-State: AC+VfDzCOv6NoebH81KF9EYZoRAj9Wvx+7nkeaFHRtdpfjg/w9uThSDL Z3EYcGpRznoQJRstbVErnf6z0eWWcUU= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:1882:b0:ba8:95dd:3ccb with SMTP id cj2-20020a056902188200b00ba895dd3ccbmr2093612ybb.5.1686099736605; Tue, 06 Jun 2023 18:02:16 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 6 Jun 2023 18:02:06 -0700 In-Reply-To: <20230607010206.1425277-1-seanjc@google.com> Mime-Version: 1.0 References: <20230607010206.1425277-1-seanjc@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Message-ID: <20230607010206.1425277-5-seanjc@google.com> Subject: [PATCH 4/4] KVM: x86/pmu: Move .hw_event_available() check out of PMC filter helper From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Aaron Lewis , Like Xu 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,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 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?1768003923546334377?= X-GMAIL-MSGID: =?utf-8?q?1768003923546334377?= Move the call to kvm_x86_pmu.hw_event_available(), which has nothing to with the userspace PMU filter, out of check_pmu_event_filter() and into its sole caller pmc_event_is_allowed(). pmc_event_is_allowed() didn't exist when commit 7aadaa988c5e ("KVM: x86/pmu: Drop amd_event_mapping[] in the KVM context"), so presumably the motivation for invoking .hw_event_available() from check_pmu_event_filter() was to avoid having to add multiple call sites. Signed-off-by: Sean Christopherson --- arch/x86/kvm/pmu.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c index 1690d41c1830..2a32dc6aa3f7 100644 --- a/arch/x86/kvm/pmu.c +++ b/arch/x86/kvm/pmu.c @@ -387,9 +387,6 @@ static bool check_pmu_event_filter(struct kvm_pmc *pmc) struct kvm_x86_pmu_event_filter *filter; struct kvm *kvm = pmc->vcpu->kvm; - if (!static_call(kvm_x86_pmu_hw_event_available)(pmc)) - return false; - filter = srcu_dereference(kvm->arch.pmu_event_filter, &kvm->srcu); if (!filter) return true; @@ -403,6 +400,7 @@ static bool check_pmu_event_filter(struct kvm_pmc *pmc) static bool pmc_event_is_allowed(struct kvm_pmc *pmc) { return pmc_is_globally_enabled(pmc) && pmc_speculative_in_use(pmc) && + static_call(kvm_x86_pmu_hw_event_available)(pmc) && check_pmu_event_filter(pmc); }