Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp5051004rwb; Tue, 6 Sep 2022 17:51:42 -0700 (PDT) X-Google-Smtp-Source: AA6agR6mX+tZkaL/aPdZOEyaR3vR30TpwMW0rjVbfSYJu9Ajs8zcKlEdFIi2y/aTYx3ukfmIHg+C X-Received: by 2002:aa7:c610:0:b0:44e:9a0f:753a with SMTP id h16-20020aa7c610000000b0044e9a0f753amr961705edq.140.1662511902005; Tue, 06 Sep 2022 17:51:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662511901; cv=none; d=google.com; s=arc-20160816; b=RlHODDjWRZHBrQsLragDXMZ6eS0lrnzU0SmTrmBFvbcYD6h1tZYUxk94AtOjRijB2o yGIOtPrLs3ZRRdWPCnGFt/5t4Ec7sOG7+v5Gu6VsoBwSS+A1FnXHMHYYPqhn5RfLDhB5 pCHHNGmMMRMvhgPNE31xLYZ7Bit7KQvBg+KYNm7KI1/XkvgvMR9L0/A/GrwihPAYIKnH uNSzrDsKGrI7hEn7VAek8NsJ4EmRqJwa0BqAV/sQz5HpEi0LIEX+zEysB4gJIV97y1Uz 2HgJHkIpOLZExc29Mb0wbEGRRIbdWUaBf+Vvf1S9u2GTQDswGnoiI7QCbFbqWVSuUsPi K1sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=uGgfGldOff2mVxZyVVSAqWj/XJ4BgayJCyvmb6JurzI=; b=f06L07uDQEJyBwU9bdb1xPoWh35tMZwMzTWZI+ggdXZtHbvHA9RynkRktoAVIUIOgX k72OHx7iNLMi5iFJsrLdAJFnTaAGfCUyuOUMvvPPCy3LKtldp2/8aFfXEiLoEWWrnp43 wBCMqDy379zZ8u/ezdQMtS40Hlj/ArhkjdQbCky/18sHn8FWmPqc0IKQfV5rMJ746eOl shAbxeoop1TBPFVwPJbMkZhl3kR7oWP5kY/AS81FbbpJGxsnbRryxfu1XnIaR3nNJWhH f2l2/t6rvBhmHtpz2/8nte1icL3+JWEkUBDTb3rq6JXhCLFSrq4VYIvw97k3vdZ3qBTM VqWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="WGZd1/dO"; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kt27-20020a170906aadb00b00730659d28f9si1084917ejb.828.2022.09.06.17.51.16; Tue, 06 Sep 2022 17:51:41 -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=20210112 header.b="WGZd1/dO"; 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 S229569AbiIGAhs (ORCPT + 99 others); Tue, 6 Sep 2022 20:37:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229551AbiIGAhr (ORCPT ); Tue, 6 Sep 2022 20:37:47 -0400 Received: from mail-oa1-x34.google.com (mail-oa1-x34.google.com [IPv6:2001:4860:4864:20::34]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C91F885F86 for ; Tue, 6 Sep 2022 17:37:45 -0700 (PDT) Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-1279948d93dso12521603fac.10 for ; Tue, 06 Sep 2022 17:37:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=uGgfGldOff2mVxZyVVSAqWj/XJ4BgayJCyvmb6JurzI=; b=WGZd1/dO/NI+78DXs3vJRpCy11kM7V+gJDTstBI+Thu6ifPTHExhi2rTWsoOHYblbT zGXquzL+PXM7xtXU0jPtq8foZxAbhe/j1ekopE4vncQlBSkLtLCgKyD6ozoU7wwCIs8n fvfMD9xxMiRGiT6QHKHKngdjO2OdhhzkQi74qOjnz09uZZ1j+bwZTjzV4YnoeWknY/DK 8/kGb+EcL4tPc6K0O8lNPTfvsqX2NycCkBtKzAgjNVGR8B+Ln12ljO4gUZVu3w7UN/4w 9DPCtD8Oxfzw/hH8jNPeM4k02i6BToKFbv/ndYyBbPq7PioMzEreXUfqYY+RIpqtHBGR 7rlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=uGgfGldOff2mVxZyVVSAqWj/XJ4BgayJCyvmb6JurzI=; b=mgKfnE2nrPua3FGMkf/1rhWBoMBlHnDYstoEiAceLB4I8Z7x5T0LLvH7KYi0mKHlD8 mSEApcjB8ZLP4rg5BvqNO6huvWGzYtd0VanYvjRCkRmnUBT3xKKjouBxJyp57iOf97Ie A62h/6BYXfkdQgxpkOQ6GJT4Ro4B8AN3T+sc5hyHamfDK7eHVTnI5vp1feSdNqrbielX KoE27efn4yX2YzszLpaUx2f5JienVwWPXReJphDRfqJ6ofrtO7QV3mocxO2aDol501ks PFMmWC1W/HXA5veur1KuV7qN0A/Pl9Kxu38pk8LkKdfWehvzAPtMDbALohQlTwLGPLcx Jt0g== X-Gm-Message-State: ACgBeo3J2yOlysN46isv9uqGDLJ9ykY9KQ7RNYxDJuLBlCxU77qq7qUi ohw/OOo3GZr+lzV6YquJk3oq/0xc90hnaesjrMKEqQ== X-Received: by 2002:a05:6870:c596:b0:101:6409:ae62 with SMTP id ba22-20020a056870c59600b001016409ae62mr12916953oab.112.1662511064988; Tue, 06 Sep 2022 17:37:44 -0700 (PDT) MIME-Version: 1.0 References: <20220906081604.24035-1-likexu@tencent.com> In-Reply-To: <20220906081604.24035-1-likexu@tencent.com> From: Jim Mattson Date: Tue, 6 Sep 2022 17:37:33 -0700 Message-ID: Subject: Re: [PATCH] KVM: x86/pmu: omit "impossible" Intel counter MSRs from MSR list To: Like Xu Cc: Sean Christopherson , Paolo Bonzini , Jim Mattson , Kan Liang , Vitaly Kuznetsov , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_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 On Tue, Sep 6, 2022 at 1:16 AM Like Xu wrote: > > From: Like Xu > > According to Intel April 2022 SDM - Table 2-2. IA-32 Architectural MSRs, > combined with the address reservation ranges of PERFCTRx, EVENTSELy, and > MSR_IA32_PMCz, the theoretical effective maximum value of the Intel GP > counters is 14, instead of 18: > > 14 = 0xE = min ( > 0xE = IA32_CORE_CAPABILITIES (0xCF) - IA32_PMC0 (0xC1), > 0xF = IA32_OVERCLOCKING_STATUS (0x195) - IA32_PERFEVTSEL0 (0x186), > 0xF = IA32_MCG_EXT_CTL (0x4D0) - IA32_A_PMC0 (0x4C1) > ) > > the source of the incorrect number may be: > 18 = 0x12 = IA32_PERF_STATUS (0x198) - IA32_PERFEVTSEL0 (0x186) > but the range covers IA32_OVERCLOCKING_STATUS, which is also architectural. > Cut the list to 14 entries to avoid false positives. > > Cc: Kan Liang > Cc: Jim Mattson That should be 'jmattson.' > Cc: Vitaly Kuznetsov > Fixes: cf05a67b68b8 ("KVM: x86: omit "impossible" pmu MSRs from MSR list") I'm not sure I completely agree with the "Fixes," since IA32_OVERCLOCKING_STATUS didn't exist back then. However, Paolo did make the incorrect assumption that Intel wouldn't cut the range even further with the introduction of new MSRs. To that point, aren't you setting yourself up for a future "Fixes" referencing this change? We should probably stop at the maximum number of GP PMCs supported today (8, I think). If Intel doubles the number of PMCs to remain competitive with AMD, they'll probably put PMCs 8-15 in a completely different range of MSR indices. > Signed-off-by: Like Xu > --- > arch/x86/kvm/x86.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 43a6a7efc6ec..98cdd4221447 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -1431,8 +1431,6 @@ static const u32 msrs_to_save_all[] = { > MSR_ARCH_PERFMON_PERFCTR0 + 8, MSR_ARCH_PERFMON_PERFCTR0 + 9, > MSR_ARCH_PERFMON_PERFCTR0 + 10, MSR_ARCH_PERFMON_PERFCTR0 + 11, > MSR_ARCH_PERFMON_PERFCTR0 + 12, MSR_ARCH_PERFMON_PERFCTR0 + 13, > - MSR_ARCH_PERFMON_PERFCTR0 + 14, MSR_ARCH_PERFMON_PERFCTR0 + 15, > - MSR_ARCH_PERFMON_PERFCTR0 + 16, MSR_ARCH_PERFMON_PERFCTR0 + 17, > MSR_ARCH_PERFMON_EVENTSEL0, MSR_ARCH_PERFMON_EVENTSEL1, > MSR_ARCH_PERFMON_EVENTSEL0 + 2, MSR_ARCH_PERFMON_EVENTSEL0 + 3, > MSR_ARCH_PERFMON_EVENTSEL0 + 4, MSR_ARCH_PERFMON_EVENTSEL0 + 5, > @@ -1440,8 +1438,6 @@ static const u32 msrs_to_save_all[] = { > MSR_ARCH_PERFMON_EVENTSEL0 + 8, MSR_ARCH_PERFMON_EVENTSEL0 + 9, > MSR_ARCH_PERFMON_EVENTSEL0 + 10, MSR_ARCH_PERFMON_EVENTSEL0 + 11, > MSR_ARCH_PERFMON_EVENTSEL0 + 12, MSR_ARCH_PERFMON_EVENTSEL0 + 13, > - MSR_ARCH_PERFMON_EVENTSEL0 + 14, MSR_ARCH_PERFMON_EVENTSEL0 + 15, > - MSR_ARCH_PERFMON_EVENTSEL0 + 16, MSR_ARCH_PERFMON_EVENTSEL0 + 17, > MSR_IA32_PEBS_ENABLE, MSR_IA32_DS_AREA, MSR_PEBS_DATA_CFG, > > MSR_K7_EVNTSEL0, MSR_K7_EVNTSEL1, MSR_K7_EVNTSEL2, MSR_K7_EVNTSEL3, > @@ -6943,12 +6939,12 @@ static void kvm_init_msr_list(void) > intel_pt_validate_hw_cap(PT_CAP_num_address_ranges) * 2) > continue; > break; > - case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR0 + 17: > + case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR0 + 13: > if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_PERFCTR0 >= > min(INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp)) > continue; > break; > - case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL0 + 17: > + case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL0 + 13: > if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_EVENTSEL0 >= > min(INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp)) > continue; > -- > 2.37.3 >