Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1316527pxm; Thu, 3 Mar 2022 15:04:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJzhYEO7NdDxCcUeNAtz4s0U9aCVrHZptphu5/cR+tRi9aX3k+fK1cpblOsv3uSMwdeCb/r8 X-Received: by 2002:a17:906:f87:b0:6d6:dd04:147b with SMTP id q7-20020a1709060f8700b006d6dd04147bmr14481321ejj.80.1646348675136; Thu, 03 Mar 2022 15:04:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646348675; cv=none; d=google.com; s=arc-20160816; b=rvNXrsB6irz9leToSpE+dHdk7cef69YPNQiPdqAEIoINfXDkbElvOKMPr6CSCL6sSQ 397/n9z1Dq3hx/FJeUz4rgqoJBvRVGM6QrkwJqUjoY0FRSgTt7BjXKOot1kX8qg95hEg f1mJID1t67/rhYB6c6+kUM3ALdf97AX1ngmED7zFxnStzGIGSfHK3V60MED4thQhit0t dpgrAm1H2ERcLOv5VGjabup1guPEgWCUwFctO5PItuerzLl8/xJcDk+5Had0HQlDkCDY E2uwflPgKg5f7NzVXmP70/8FfqD1/i1fZ3Nh7i+dZ1feKG35uVIuP5QpiQgHlu8lBDUJ dRZg== 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=/ovabB264TUfiikvyHgOc2D5zXM9RNGNE3+8hMb4K1Q=; b=Qd4M5lBzmBYdJXM4goDO0Zf72sPseNJwJ5MiUHzhvj9bvNg0sz4r5FFJ393+o5MBPL ZIz66HnHIPATpNkD4ZxASD3DvjE8mZuBueXlyWq3ptEpmO/d7gqUUiqAxJcNgZDfUh+C CQiZVAB66H2UWPhVbYUmzX0l9tdIQMhy/P04783bdT+28msTzsP4m1zSK2FqlpZx+IC9 /DSu06uJ6tFB8FAq3eALSISuJ7hHK6fCMTdHVlCj4cEmLyjS4Omd+OeeUK56VsxM5dng VQo3GAGW6V+gZcRTvcvOFTVLVglwWa/9kv8uK8l4lUjDqveDVNyipZDuiylrW1pgkW6f MJlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=VLtZb6YU; 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 f20-20020a17090660d400b006d0fbdd284dsi1966968ejk.414.2022.03.03.15.04.12; Thu, 03 Mar 2022 15:04:35 -0800 (PST) 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=VLtZb6YU; 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 S233324AbiCCSGM (ORCPT + 99 others); Thu, 3 Mar 2022 13:06:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230342AbiCCSGJ (ORCPT ); Thu, 3 Mar 2022 13:06:09 -0500 Received: from mail-oo1-xc2b.google.com (mail-oo1-xc2b.google.com [IPv6:2607:f8b0:4864:20::c2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16AA51A3609 for ; Thu, 3 Mar 2022 10:05:24 -0800 (PST) Received: by mail-oo1-xc2b.google.com with SMTP id o7-20020a056820040700b003205d5eae6eso6145827oou.5 for ; Thu, 03 Mar 2022 10:05:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/ovabB264TUfiikvyHgOc2D5zXM9RNGNE3+8hMb4K1Q=; b=VLtZb6YUqbdwpT+ckMqn9vj4WkFREB8maD+Pl0b4g6ayGbk0l60ornYMsL1GkfMmFS pK6r4jMMd25Z4cqUgONEiBJJsmVAKyUXz/msVSwF3nzEfIkxmrMIWYZnlVYk/e3m29oO OIQpS9yQOSVwBnrrWps+64QmebwvSkKcqa2Q1LeKxvV4gRu0/YgrkDExNi63MGeHEh8G jv5hZ3tC0rbIj8yZjWuiUTic3ZqcSlkJjzOj1SAfbysCQV/7re5e/rw4hdVrJ/qy/lnQ VWB49C0AFbvAf/qex/F/cywZfLKg9yyXGekNo2PI5lvBu09KqyuZZa7fSEaQMcpSAO7y /Ayw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/ovabB264TUfiikvyHgOc2D5zXM9RNGNE3+8hMb4K1Q=; b=i+E4CnYGL5EFzuOi92xSTRN0DJfYNDcHeUGdiVX0J3xS/sIzLUdnbY1Fc8KBXFXZr+ 7qNnFJjYzCmnviG6vwNrPB5Clazq93DDqeeQ2GK5FkSJGlMln2fUsKEzmFi8Dr2wglo7 HmPlJfsR0zz0PP0LBVcLG4tnDBDvK4VP7ZJJ7b+5oE3Rg3x9SEzmlSjYmyugm1+fDEIC gbEFiY3xy1V6k54KBdj6DzbZGSDUqYbtExkXNRjoIARLKTe7KoHHviWLiadT3QegadBm sRTZFLgekv0UqNfJPjnl6XkJHcuqjD5ap1lvexupobrDuzp+L0bdv7VT9G04+KzPU9gG 5quA== X-Gm-Message-State: AOAM532nGQPX5/0Uf1+xeROZVCt1X6ZHkCgSCpii/my8hLNi/qCaVI9H 3zlX7J+EBX2NQ9nbZ3uKPW1NwuG9iyCB9aKKP7ndrg== X-Received: by 2002:a4a:5596:0:b0:2dd:bb93:8800 with SMTP id e144-20020a4a5596000000b002ddbb938800mr18965773oob.85.1646330722922; Thu, 03 Mar 2022 10:05:22 -0800 (PST) MIME-Version: 1.0 References: <20220221073140.10618-1-ravi.bangoria@amd.com> <20220221073140.10618-4-ravi.bangoria@amd.com> <1e0fc70a-1135-1845-b534-79f409e0c29d@gmail.com> <80fce7df-d387-773d-ad7d-3540c2d411d1@amd.com> <54d94539-a14f-49d7-e4f3-092f76045b33@amd.com> In-Reply-To: <54d94539-a14f-49d7-e4f3-092f76045b33@amd.com> From: Jim Mattson Date: Thu, 3 Mar 2022 10:05:11 -0800 Message-ID: Subject: Re: [PATCH 3/3] KVM: x86/pmu: Segregate Intel and AMD specific logic To: Ravi Bangoria Cc: Like Xu , seanjc@google.com, dave.hansen@linux.intel.com, peterz@infradead.org, alexander.shishkin@linux.intel.com, eranian@google.com, daviddunn@google.com, ak@linux.intel.com, kan.liang@linux.intel.com, x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, kim.phillips@amd.com, santosh.shukla@amd.com, "Paolo Bonzini - Distinguished Engineer (kernel-recipes.org) (KVM HoF)" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-18.1 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=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 Thu, Mar 3, 2022 at 8:25 AM Ravi Bangoria wrote: > > > > On 03-Mar-22 10:08 AM, Jim Mattson wrote: > > On Mon, Feb 21, 2022 at 2:02 AM Ravi Bangoria wrote: > >> > >> > >> > >> On 21-Feb-22 1:27 PM, Like Xu wrote: > >>> On 21/2/2022 3:31 pm, Ravi Bangoria wrote: > >>>> void reprogram_counter(struct kvm_pmu *pmu, int pmc_idx) > >>>> { > >>>> struct kvm_pmc *pmc = kvm_x86_ops.pmu_ops->pmc_idx_to_pmc(pmu, pmc_idx); > >>>> + bool is_intel = !strncmp(kvm_x86_ops.name, "kvm_intel", 9); > >>> > >>> How about using guest_cpuid_is_intel(vcpu) > >> > >> Yeah, that's better then strncmp(). > >> > >>> directly in the reprogram_gp_counter() ? > >> > >> We need this flag in reprogram_fixed_counter() as well. > > > > Explicit "is_intel" checks in any form seem clumsy, > > Indeed. However introducing arch specific callback for such tiny > logic seemed overkill to me. So thought to just do it this way. I agree that arch-specific callbacks are ridiculous for these distinctions. > > since we have > > already put some effort into abstracting away the implementation > > differences in struct kvm_pmu. It seems like these differences could > > be handled by adding three masks to that structure: the "raw event > > mask" (i.e. event selector and unit mask), the hsw_in_tx mask, and the > > hsw_in_tx_checkpointed mask. > > struct kvm_pmu is arch independent. You mean struct kvm_pmu_ops? No; I meant exactly what I said. See, for example, how the reserved_bits field is used. It is initialized in the vendor-specific pmu_refresh functions, and from then on, it facilitates vendor-specific behaviors without explicit checks or vendor-specific callbacks. An eventsel_mask field would be a natural addition to this structure, to deal with the vendor-specific event selector widths. The hsw_in_tx_mask and hsw_in_tx_checkpointed_mask fields are less natural, since they will be 0 on AMD, but they would make it simple to write the corresponding code in a vendor-neutral fashion. BTW, am I the only one who finds the HSW_ prefixes a bit absurd here, since TSX was never functional on Haswell? > > > > These changes should also be coordinated with Like's series that > > eliminates all of the PERF_TYPE_HARDWARE nonsense. > > I'll rebase this on Like's patch series. That's not exactly what I meant, but okay.