From patchwork Wed Nov 8 00:31:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 162836 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:aa0b:0:b0:403:3b70:6f57 with SMTP id k11csp606829vqo; Tue, 7 Nov 2023 16:32:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IHxednIvGmmZT9Jqewb5u6UOwBkiCsXH4gTB+SXxS0o0IZT9ffoIKbQDsGbaX9JrSCxLfgW X-Received: by 2002:a05:6358:4412:b0:168:e862:70d0 with SMTP id z18-20020a056358441200b00168e86270d0mr205064rwc.14.1699403566034; Tue, 07 Nov 2023 16:32:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699403565; cv=none; d=google.com; s=arc-20160816; b=kfqPyzFfG3r7sQySAeiqNCAmMqPq3O7PxhnZnEIfwfSYDth9D0u5eF5288aUMc74hR ubcOHYETUUpfa1sUuBViYu+5XRzGBcKe83ZhpYhsnSWZ8R4BAEFQ8iU6FAtv/qY0jSA2 C2BthhEaG1sJapA5KlOZ4T21QE2+6DYa8O0J0RESnuMOuzVnsXVI+6Ions/vztJBvKTj 93eeIz7nG3dt5YqDZLU+qrHVYPPlo7KoU4eF3xTKgffwT+xcHInB/0fZrokfO4XO41T/ ditDCmTEUZhiDKT/CcgP3Av7rkDO/mGHuoWFtCBfkePWT5oS+EPayBSpMQCmh9KhvflA wZvA== 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=eOsNu1hfSZJra6BKusRtLnJPQ4S9SkH0BAaz2rzZCWg=; fh=gm96CM+cG0KJxn7vnhn0c1c98ILNP1HHUrKfrGecw3M=; b=ENHW5KcYJqNEQQhAYaZjrEel6m3vVLiXdnz19lmjftsgLcOObNWJ7YQzqw3GSY2xaV g7FgB6fqlUYbjIgUcnYGeJxX+cvu5fYadnK89QFfTX7R7TestJrPb/4TBeUUIJcfa7pV OVu5CNNKOyndnmmNF3tgng9UUj3xwgR81Skf0VTkGJ+glwxQVJ3IyD7iR8sL02O+Kxgu vMJuvH89aj+btJVNZbtoC83BuGn0O4BSn8HhDCxDK8Y06Qd9b4hKHLf2L4YoksdOOJqY STro32JTwXSmff0QHqPLrW12oqZ91OlL3dc3AzOGQJjwM3hA+hBVnaDMOgCaAUs6aXPK WWgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=NoyOZ8tv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id i2-20020a639d02000000b0057cbd803b30si3305935pgd.654.2023.11.07.16.32.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Nov 2023 16:32:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=NoyOZ8tv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (Postfix) with ESMTP id BE1358183585; Tue, 7 Nov 2023 16:32:32 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343517AbjKHAb7 (ORCPT + 32 others); Tue, 7 Nov 2023 19:31:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235442AbjKHAbv (ORCPT ); Tue, 7 Nov 2023 19:31:51 -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 09A93170F for ; Tue, 7 Nov 2023 16:31:47 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id d9443c01a7336-1cc3130ba31so45055935ad.0 for ; Tue, 07 Nov 2023 16:31:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699403507; x=1700008307; darn=vger.kernel.org; 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=eOsNu1hfSZJra6BKusRtLnJPQ4S9SkH0BAaz2rzZCWg=; b=NoyOZ8tvKa10YQU8dxWgfxeaZ6ZN0SBerdImfyGt1C62VfoeysYKNCHcxeLufylL6d fsgmtPub5D1mt4DtTyfJR7Wqy5CzpdKPXEs5yYy+HKAaMCm/bsPEJ4THn4XgLl94RNP4 33qDzj0cCAZWBrQD5diUAFVY7dsFaXYjEh6Pu46zhVM8EQQGsg5SomdBA47jfuGvq2xj 4pHr8/j2HJCu+e90jD7z9wEXzwbJ1vwFbGKPAawDdJrBISMPnuSBzY4iC+5MKY6bJYVF EJF+jmbQQVgNccCAjeIhmON3YCHMFxfrEZiOVNI3lyHbs14gk+5UGCTUIEOdNo6b3OQy fCFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699403507; x=1700008307; 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=eOsNu1hfSZJra6BKusRtLnJPQ4S9SkH0BAaz2rzZCWg=; b=ZZ9HXB5QKql+KeyoyGWLB54bNIGPoOpto6i05RIXBov9urVuR0ExQCOTl1zoTaCSHZ 01lCTsvQY/IXxW6EQSa5MNBHSMeJJYQ+cUU54cFmDdf9o9j42Z4xD5W9J8T3w5MIfhXe XT9SkNAd3gESyrVLhcqIyYDRcqPGkzlCrbllUb8S8koKmvl4cuf8aDvOBPIKkVLnQiTa /pO2Hg/Mn9fiwWulRVZP7U5C4kpihfsd2s/M5+kgVRBnLexTTx6PM6zbTWmduZCIloS1 8dk/4gVBBN6UYm5zty9m7BgmNAMi4ZMmuBaYibLq/KDJUEnDsN+7GpFfRj4Lp6MDJnWy Kf0w== X-Gm-Message-State: AOJu0Yz/B+2MGXHNSqY9PWVJ2V3Ue0LLRpt0lh7OIMhHOzB8I9BE0WV4 PfldaGjfgS3kbDQCnjmThZaRvYAsdfM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:6b06:b0:1cc:2f2a:7d33 with SMTP id o6-20020a1709026b0600b001cc2f2a7d33mr10169plk.2.1699403507489; Tue, 07 Nov 2023 16:31:47 -0800 (PST) Reply-To: Sean Christopherson Date: Tue, 7 Nov 2023 16:31:20 -0800 In-Reply-To: <20231108003135.546002-1-seanjc@google.com> Mime-Version: 1.0 References: <20231108003135.546002-1-seanjc@google.com> X-Mailer: git-send-email 2.42.0.869.gea05f2083d-goog Message-ID: <20231108003135.546002-5-seanjc@google.com> Subject: [PATCH v7 04/19] KVM: x86/pmu: Setup fixed counters' eventsel during PMU initialization 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 (agentk.vger.email [0.0.0.0]); Tue, 07 Nov 2023 16:32:32 -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 agentk.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1781953793692389872 X-GMAIL-MSGID: 1781953793692389872 Set the eventsel for all fixed counters during PMU initialization, the eventsel is hardcoded and consumed if and only if the counter is supported, i.e. there is no reason to redo the setup every time the PMU is refreshed. Configuring all KVM-supported fixed counter also eliminates a potential pitfall if/when KVM supports discontiguous fixed counters, in which case configuring only nr_arch_fixed_counters will be insufficient (ignoring the fact that KVM will need many other changes to support discontiguous fixed counters). Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/pmu_intel.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c index c4f2c6a268e7..5fc5a62af428 100644 --- a/arch/x86/kvm/vmx/pmu_intel.c +++ b/arch/x86/kvm/vmx/pmu_intel.c @@ -409,7 +409,7 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) * Note, reference cycles is counted using a perf-defined "psuedo-encoding", * as there is no architectural general purpose encoding for reference cycles. */ -static void setup_fixed_pmc_eventsel(struct kvm_pmu *pmu) +static u64 intel_get_fixed_pmc_eventsel(int index) { const struct { u8 eventsel; @@ -419,17 +419,11 @@ static void setup_fixed_pmc_eventsel(struct kvm_pmu *pmu) [1] = { 0x3c, 0x00 }, /* CPU Cycles/ PERF_COUNT_HW_CPU_CYCLES. */ [2] = { 0x00, 0x03 }, /* Reference Cycles / PERF_COUNT_HW_REF_CPU_CYCLES*/ }; - int i; BUILD_BUG_ON(ARRAY_SIZE(fixed_pmc_events) != KVM_PMC_MAX_FIXED); - for (i = 0; i < pmu->nr_arch_fixed_counters; i++) { - int index = array_index_nospec(i, KVM_PMC_MAX_FIXED); - struct kvm_pmc *pmc = &pmu->fixed_counters[index]; - - pmc->eventsel = (fixed_pmc_events[index].unit_mask << 8) | - fixed_pmc_events[index].eventsel; - } + return (fixed_pmc_events[index].unit_mask << 8) | + fixed_pmc_events[index].eventsel; } static void intel_pmu_refresh(struct kvm_vcpu *vcpu) @@ -495,7 +489,6 @@ static void intel_pmu_refresh(struct kvm_vcpu *vcpu) kvm_pmu_cap.bit_width_fixed); pmu->counter_bitmask[KVM_PMC_FIXED] = ((u64)1 << edx.split.bit_width_fixed) - 1; - setup_fixed_pmc_eventsel(pmu); } for (i = 0; i < pmu->nr_arch_fixed_counters; i++) @@ -573,6 +566,7 @@ static void intel_pmu_init(struct kvm_vcpu *vcpu) pmu->fixed_counters[i].vcpu = vcpu; pmu->fixed_counters[i].idx = i + INTEL_PMC_IDX_FIXED; pmu->fixed_counters[i].current_config = 0; + pmu->fixed_counters[i].eventsel = intel_get_fixed_pmc_eventsel(i); } lbr_desc->records.nr = 0;