Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5461962rwl; Tue, 11 Apr 2023 06:00:09 -0700 (PDT) X-Google-Smtp-Source: AKy350ZvsG1BjFs2tbcIxsw8/rAmDdnia3KfcoYhoWZHbtrEknXE4SvyIrK4x8fhvvwaLYlSww4t X-Received: by 2002:a17:907:76cc:b0:94e:3eb:dfc3 with SMTP id kf12-20020a17090776cc00b0094e03ebdfc3mr2938231ejc.36.1681218008868; Tue, 11 Apr 2023 06:00:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681218008; cv=none; d=google.com; s=arc-20160816; b=N32mt3El4fEpfFwvRFaY0tB6hEICE7xlZX5hXeODNrOLC4EM0bc9LIi3ZjaHs8dj+c iVUh5dPl0oIizjYu0Rbboo0CYhbkORvozkCvagL3zlKY+xjdLFW7jYDwIvgfrrOpmYq7 w0KJIIqDXMPPlnYCAhWP0LK15gKTI+XkHIjWH9qQPEDzuUnT+hm4tUGIC1bRm6fuPjSo yH1FebOkvfJq8D2o/M/7DL1UFzpcmHUboNuavNM/xP1O97NvOaD+2B2mG0MA9JFMSfgm 0x8amJAymYmNX9JsYIwyHvb2p1uiAck6/Qn7PKYYqXCi/T6MtEIJ3zsq2rALeWW5c12T 9/Ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=oxCP1A0+vJC6rGQA6qVogYfyo3XWYkt2ipQ4u9C+9Vo=; b=fgDZMjJzU3m0m2JuQoEm7L3r6761ftiUIhxWO1UdfPESyZuuFTnfHoHOxOvM8RbUXN Qiw5Mw0KT6pdhXp0n2JSGZYJV0OTCWMJm4gT77oAjvU4bQKJnpt5yMO4tEZ6cZHDppS7 XKoCA6Ykf+9kvEjkNd1fVyTdBsZ674yCSq8GuCbqiEyBvAOVW6zRhS+8N6a9TE8edfmj ZNCXoF3DcIxYt2EjAOlV37CCfWXJ8uVW6T5YTNMZaLzSNfgEjPuLDJG1A/XpzGI8m1/d BslOS8Qyu+KA4bOqANQPOzd6alw58ohBv5a37Du5u6st+tU1waF3NBfDvq1hw0feGSKe vpvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=gghZTbYW; 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 nc13-20020a1709071c0d00b0094a9138d5d1si2430658ejc.196.2023.04.11.05.59.44; Tue, 11 Apr 2023 06:00:08 -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=gghZTbYW; 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 S229564AbjDKM7V (ORCPT + 99 others); Tue, 11 Apr 2023 08:59:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229978AbjDKM7T (ORCPT ); Tue, 11 Apr 2023 08:59:19 -0400 Received: from mail-oi1-x233.google.com (mail-oi1-x233.google.com [IPv6:2607:f8b0:4864:20::233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D770E4694 for ; Tue, 11 Apr 2023 05:59:09 -0700 (PDT) Received: by mail-oi1-x233.google.com with SMTP id bh10so5410852oib.1 for ; Tue, 11 Apr 2023 05:59:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1681217949; x=1683809949; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=oxCP1A0+vJC6rGQA6qVogYfyo3XWYkt2ipQ4u9C+9Vo=; b=gghZTbYWLEKhTXXH+mFPU2gDRnLmMwf5Fl9ypn03IS+Y+H8057BjEVr5ykex3eyuFO swk6sjSdyBXaZhedLClbY7ok86tiHw0zr4LkjOhr3QIMY36ua4MQ5i13dkHKt7uioI3w 2Vxm3ZuJi9lVAa5L8jWkLuLTi2AZ1HbyGJhC7Ii0swcGz/5eSWJudCF8F88qtvqzx2oH fKJXL1Bvk3e4BSoVl4EeR98gqE5muWY4U1l7et4NehOeTy3J81V+uxJcgB+co+ZsGeFk 5Y8QlvbbUZIFcJX8UQgixmgsO6i4D/0NxcL/SThL8sx9aWFnJ1NRZUB4DKhT30VtDUt/ XQqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681217949; x=1683809949; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oxCP1A0+vJC6rGQA6qVogYfyo3XWYkt2ipQ4u9C+9Vo=; b=OWAeMlfGaUhsRdvUe5ZBwC7OYsrvWMnAJnMtUkcXbOP+IQV5icr1i8VyNhFjxNmoat lmGTs5SHJhLjq6j2N4Jzxv68MbxnP6Pmeu4pjmNMHl5bd82v6cy7C4nFzdqB63uBqUB3 0osL3F+CNT7agMJpjwQZWWHjWWXYmkej01PiUNJBl2pawmqT9MYjNUjqydZOWz036O1Y jq+UEggH0tEotJxpzegII2RqEwF54r9nr8+IF14ZRvZ8xg74PkQh4NXYN1D3Wgn6Gezg 88LZfvUUHuc1zEnRToTO9D+7mdVHPxRpYvVa6/JNKGP4SIt2ldTzPwgDzeXG+1vxIokF fvnw== X-Gm-Message-State: AAQBX9dl5p6itE0QhiSejWuoEPzMOpY+athtMq+lepu6xxscL4tBkhsF 3XkWWHOC61GzzQSHMQe+4fyhQzegp5ScRngnbVCdKw== X-Received: by 2002:a05:6808:3307:b0:383:fef9:6cac with SMTP id ca7-20020a056808330700b00383fef96cacmr3751840oib.9.1681217948915; Tue, 11 Apr 2023 05:59:08 -0700 (PDT) MIME-Version: 1.0 References: <20230410105056.60973-1-likexu@tencent.com> <20230410105056.60973-6-likexu@tencent.com> <9a7d5814-9eb1-d7af-7968-a6e3ebb90248@gmail.com> In-Reply-To: <9a7d5814-9eb1-d7af-7968-a6e3ebb90248@gmail.com> From: Jim Mattson Date: Tue, 11 Apr 2023 05:58:57 -0700 Message-ID: Subject: Re: [PATCH V5 05/10] KVM: x86/pmu: Disable vPMU if the minimum num of counters isn't met To: Like Xu Cc: Sean Christopherson , Paolo Bonzini , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-15.7 required=5.0 tests=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,USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_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 On Mon, Apr 10, 2023 at 11:17=E2=80=AFPM Like Xu = wrote: > > On 11/4/2023 1:36 pm, Jim Mattson wrote: > > On Mon, Apr 10, 2023 at 3:51=E2=80=AFAM Like Xu wrote: > >> > >> From: Like Xu > >> > >> Disable PMU support when running on AMD and perf reports fewer than fo= ur > >> general purpose counters. All AMD PMUs must define at least four count= ers > >> due to AMD's legacy architecture hardcoding the number of counters > >> without providing a way to enumerate the number of counters to softwar= e, > >> e.g. from AMD's APM: > >> > >> The legacy architecture defines four performance counters (PerfCtrn) > >> and corresponding event-select registers (PerfEvtSeln). > >> > >> Virtualizing fewer than four counters can lead to guest instability as > >> software expects four counters to be available. > > > > I'm confused. Isn't zero less than four? > > As I understand it, you are saying that virtualization of zero counter is= also > reasonable. > If so, the above statement could be refined as: > > Virtualizing fewer than four counters when vPMU is enabled may le= ad to guest > instability > as software expects at least four counters to be available, thus = the vPMU is > disabled if the > minimum number of KVM supported counters is not reached during in= itialization. > > Jim, does this help you or could you explain more about your confusion ? You say that "fewer than four counters can lead to guest instability as software expects four counters to be available." Your solution is to disable the PMU, which leaves zero counters available. Zero is less than four. Hence, by your claim, disabling the PMU can lead to guest instability. I don't see how this is an improvement over one, two, or three counters. > > > >> Suggested-by: Sean Christopherson > >> Signed-off-by: Like Xu > >> --- > >> arch/x86/kvm/pmu.h | 3 +++ > >> 1 file changed, 3 insertions(+) > >> > >> diff --git a/arch/x86/kvm/pmu.h b/arch/x86/kvm/pmu.h > >> index dd7c7d4ffe3b..002b527360f4 100644 > >> --- a/arch/x86/kvm/pmu.h > >> +++ b/arch/x86/kvm/pmu.h > >> @@ -182,6 +182,9 @@ static inline void kvm_init_pmu_capability(const s= truct kvm_pmu_ops *pmu_ops) > >> enable_pmu =3D false; > >> } > >> > >> + if (!is_intel && kvm_pmu_cap.num_counters_gp < AMD64_NUM_COUNT= ERS) > >> + enable_pmu =3D false; > >> + > >> if (!enable_pmu) { > >> memset(&kvm_pmu_cap, 0, sizeof(kvm_pmu_cap)); > >> return; > >> -- > >> 2.40.0 > >>