Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp4423017pxb; Mon, 21 Feb 2022 21:08:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJxyL9LgUltsWHhWvFnG4T3jGd3Yqjg5V+Iuyvyo1Y/qEtbWbOYi5xxSvv5czQNoPFmdcND2 X-Received: by 2002:a05:6a00:acf:b0:4e1:9222:1ef3 with SMTP id c15-20020a056a000acf00b004e192221ef3mr4184654pfl.18.1645506493499; Mon, 21 Feb 2022 21:08:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645506493; cv=none; d=google.com; s=arc-20160816; b=czFr7A5VlmooHvBLmlyYbczlVxI1dhqZwUXv0xLF/R5l9Xd8Rvbsh/gAK39EYsHSmW qTlC+SRbtsjiRgirJfoR5wbIu1N8eyZUtHYnIaGtExKEcVOTLjMZFWjwkhmQexaYEj1p WX/nqNggju+noOxmqri/Vx92UKMm6tqCrSBUKMtc0hyhz7a6yb+rv/P023mOxbowccXV 9VMQhGck0ftj/8TGR0OJKygzE/fvpBVzRYSTTQwCpbAt99xdS+J3FaSZn92XdLndJNsr SVvUdneU6nFXl31VVPaVuIzMe6tKqrc5N8VerW7Z1zf4wbfla2XU3kQKd6Om5hWQHJmr mrgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Q9EVapK/pPTWvrGkIuS0gkdfg4WRi8A2dJLpE97G/j0=; b=Pgi/DcwMZxLS+yRcFMZun6Sbkv4oICcg6ZF9KqVToIxcDoBCAHcoFbEgJWwy1eDgzB tkkwqhJrAcHxF/2+iPJ/9hMbGOAg79/vtXsGT89Uj8kbuKm5RG9WtzK8Trbcb08qw7YU KONnjrHThBDyl28H5QqW3RLJyz1w3k7Fxi9935K8ifFmCbPGwjTgh1f+IdTkkHc7kt5N 56R+sJQmqVj7DuPwO2PAqV9b1oWwG1Va99Lr2Kuhgs1Fq+fr1s8jqeGO1O7CsJDscWh5 9FX8W0a7JYn1uvHc+hIgHJ77GQENPCWY/t2NUlwX3GrGv7zcLmltYnlJ6pt+PZVAaFQN wW+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=c15fHKyo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id d9si11010256pfl.73.2022.02.21.21.08.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Feb 2022 21:08:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=c15fHKyo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B8427A418E; Mon, 21 Feb 2022 20:41:16 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356829AbiBULwj (ORCPT + 99 others); Mon, 21 Feb 2022 06:52:39 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:49628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356845AbiBULwg (ORCPT ); Mon, 21 Feb 2022 06:52:36 -0500 Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E5A31FA42; Mon, 21 Feb 2022 03:52:13 -0800 (PST) Received: by mail-pl1-x62e.google.com with SMTP id m11so9144563pls.5; Mon, 21 Feb 2022 03:52:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Q9EVapK/pPTWvrGkIuS0gkdfg4WRi8A2dJLpE97G/j0=; b=c15fHKyorTTeBgbqVh4Saep5MTSKXM0Wpe+4pl01EVerXlX8i2TOvQ54kAJYb9tQ/H 5Ul7FDxOv675f2fXPh+7k9Q/RU02OSTWpNHaFN/97Rrq1N8kRTHx65H4+5qj7VidNcSX K862UhDRMAbhxuwimfhfGhzd5hb3JtHNqg1KXO+hudB7gwasY7Gzgz/3MNU5ZElsudss SyqwgPQPff9iSjZjxJIeV/8dKW0gaOhRNvHPAwOYElMeOLtyd4KYUJAozWOdwo5h7j6Z 0ye5DoTT5y9rDL3jN8o1gOGsngTXHwTwmFohoA3qDSD9fqPdRFNP+joNUBW00YKoy1cP BAoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Q9EVapK/pPTWvrGkIuS0gkdfg4WRi8A2dJLpE97G/j0=; b=MH2aNsM4bqqz2ibxrUjDFSIJAA5W2CjTemNoC6zuLKxy7DqcXDMD+aQJnnTH62nG8b OstPOOzSeQEwCs9GjDLupKpTPwnnVYG6cQiLkR7rhCGf8iZjjtWGr77r2bMRycLQx76K 4mvlWcybjRbtTszQ9m88PyviFXXg3Tb6zPj87aPFkYJ6LCNgOn50DAoX9hFdEB3Tf5uC 09F2PRmgNTNCaVmu4BMcdCqbwYi09X19QEx/3kSkN3BKfOgrdFSmaeap2mU0WtS726Sn BVpzd0zaalA2Zj1E0enAnUy5bktJ9/cgV1z/zsOC9spk/WEKV1dnkIcisOZvyhlZrS78 TPSg== X-Gm-Message-State: AOAM530x7pozj6g8+FWo5uRoLJlxAyjCX5jG1TaeQJXDOeswpg41/sEU 3tt6wJzMJ2KUAWJp/rb2p4s= X-Received: by 2002:a17:90a:480e:b0:1bc:1d88:8d4e with SMTP id a14-20020a17090a480e00b001bc1d888d4emr7801756pjh.157.1645444332617; Mon, 21 Feb 2022 03:52:12 -0800 (PST) Received: from localhost.localdomain ([103.7.29.32]) by smtp.gmail.com with ESMTPSA id z14sm13055011pfe.30.2022.02.21.03.52.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Feb 2022 03:52:12 -0800 (PST) From: Like Xu X-Google-Original-From: Like Xu To: Paolo Bonzini , Jim Mattson Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Like Xu Subject: [PATCH 00/11] KVM: x86/pmu: Get rid of PERF_TYPE_HARDWAR and other minor fixes Date: Mon, 21 Feb 2022 19:51:50 +0800 Message-Id: <20220221115201.22208-1-likexu@tencent.com> X-Mailer: git-send-email 2.35.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 Hi, This is a follow up to [0]. By keeping the same semantics of eventsel for gp and fixed counters, the reprogram code could be made more symmetrical, simpler and even faster [1], and it also fixes the obsolescence amd_event_mapping issue [2]. One of the notable changes is that we ended up removing the reprogram_{gp, fixed}_counter() functions and replacing it with the merged reprogram_counter(), where KVM programs pmc->perf_event with only the PERF_TYPE_RAW type for any type of counter (suggested by Jim as well). PeterZ confirmed the idea, "think so; the HARDWARE is just a convenience wrapper over RAW IIRC". Practically, this change drops the guest pmu support on the hosts without X86_FEATURE_ARCH_PERFMON (the oldest Pentium 4), where the PERF_TYPE_HARDWAR is intentionally introduced so that hosts can map the architectural guest PMU events to their own. Some code refactoring helps to review key changes more easily. Patches are based on top of kvm/master (ec756e40e271). The last patch removes the call trace in the commit message while we still think that kvm->arch.pmu_event_filter requires SRCU protection in terms of pmu_event_filter functionality, similar to "kvm->arch.msr_filter". Please check more details in each commit and feel free to comment. [0] https://lore.kernel.org/kvm/20211116122030.4698-1-likexu@tencent.com/ [1] https://lore.kernel.org/kvm/ebfac3c7-fbc6-78a5-50c5-005ea11cc6ca@gmail.com/ [2] https://lore.kernel.org/kvm/20220117085307.93030-1-likexu@tencent.com/ Like Xu (11): KVM: x86/pmu: Update comments for AMD gp counters KVM: x86/pmu: Extract check_pmu_event_filter() from the same semantics KVM: x86/pmu: Pass only "struct kvm_pmc *pmc" to reprogram_counter() KVM: x86/pmu: Drop "u64 eventsel" for reprogram_gp_counter() KVM: x86/pmu: Drop "u8 ctrl, int idx" for reprogram_fixed_counter() KVM: x86/pmu: Use only the uniformly exported interface reprogram_counter() KVM: x86/pmu: Use PERF_TYPE_RAW to merge reprogram_{gp, fixed}counter() perf: x86/core: Add interface to query perfmon_event_map[] directly KVM: x86/pmu: Replace pmc_perf_hw_id() with perf_get_hw_event_config() KVM: x86/pmu: Drop amd_event_mapping[] in the KVM context KVM: x86/pmu: Protect kvm->arch.pmu_event_filter with SRCU arch/x86/events/core.c | 11 ++ arch/x86/include/asm/perf_event.h | 6 + arch/x86/kvm/pmu.c | 188 ++++++++++++------------------ arch/x86/kvm/pmu.h | 6 +- arch/x86/kvm/svm/pmu.c | 37 +----- arch/x86/kvm/vmx/pmu_intel.c | 62 +++++----- 6 files changed, 130 insertions(+), 180 deletions(-) -- 2.35.0