From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EAC52CA0EE9 for ; Thu, 14 Aug 2025 07:27:39 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4930210E812; Thu, 14 Aug 2025 07:27:38 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by gabe.freedesktop.org (Postfix) with ESMTP id D2F6510E777; Wed, 13 Aug 2025 17:01:25 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0CD3A12FC; Wed, 13 Aug 2025 10:01:17 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E4DF23F738; Wed, 13 Aug 2025 10:01:20 -0700 (PDT) From: Robin Murphy To: peterz@infradead.org, mingo@redhat.com, will@kernel.org, mark.rutland@arm.com, acme@kernel.org, namhyung@kernel.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-csky@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-pm@vger.kernel.org, linux-rockchip@lists.infradead.org, dmaengine@vger.kernel.org, linux-fpga@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, coresight@lists.linaro.org, iommu@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-cxl@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 00/19] perf: Rework event_init checks Date: Wed, 13 Aug 2025 18:00:52 +0100 Message-Id: X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Thu, 14 Aug 2025 07:27:30 +0000 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Hi all, [ Note I'm only CC'ing lists for now to avoid spamming nearly 100 individual maintainers/reviewers while we work out the basics ] Reviving my idea from a few years back, the aim here is to minimise the amount of event_init boilerplate that most new drivers have to implement (and so many get wrong), while also trying to establish some more consistent and easy-to-follow patterns for the things that drivers should still care about (mostly group validation). It's ended up somewhat big and ugly, so to start with I've tried to optimise for ease of review - based on the typical "fixes, cleanup, new development" order the split of the current patches is like so: * Group validation rework (patches #1-#15) - Specific drivers with functional issues by inspection (#1-#7) - Specific drivers where cleanup changes were non-trivial (#8-#11) - Common patterns across remaining drivers (#12-#15) * Capabilities rework (patches #16-#18) * Giant bonfire of remaining boilerplate! (patch #19) If the overall idea is acceptable then a more relaxed merge strategy might be to look at landing the common parts first (#16-#18 and maybe #13), then rearrange the rest into per-driver patches, but I'm sure nobody wants a ~70-patch series out of the gate :) Thanks, Robin. Robin Murphy (19): perf/arm-cmn: Fix event validation perf/hisilicon: Fix group validation perf/imx8_ddr: Fix group validation perf/starfive: Fix group validation iommu/vt-d: Fix perfmon group validation ARM: l2x0: Fix group validation ARM: imx: Fix MMDC PMU group validation perf/arm_smmu_v3: Improve group validation perf/qcom: Improve group validation perf/arm-ni: Improve event validation perf/arm-cci: Tidy up event validation perf: Ignore event state for group validation perf: Add helper for checking grouped events perf: Clean up redundant group validation perf: Simplify group validation perf: Introduce positive capability for sampling perf: Retire PERF_PMU_CAP_NO_INTERRUPT perf: Introduce positive capability for raw events perf: Garbage-collect event_init checks arch/alpha/kernel/perf_event.c | 5 +- arch/arc/kernel/perf_event.c | 4 +- arch/arm/mach-imx/mmdc.c | 29 ++---- arch/arm/mm/cache-l2x0-pmu.c | 19 +--- arch/csky/kernel/perf_event.c | 3 +- arch/loongarch/kernel/perf_event.c | 1 + arch/mips/kernel/perf_event_mipsxx.c | 1 + arch/powerpc/perf/8xx-pmu.c | 3 +- arch/powerpc/perf/core-book3s.c | 4 +- arch/powerpc/perf/core-fsl-emb.c | 4 +- arch/powerpc/perf/hv-24x7.c | 11 --- arch/powerpc/perf/hv-gpci.c | 11 --- arch/powerpc/perf/imc-pmu.c | 31 +----- arch/powerpc/perf/kvm-hv-pmu.c | 5 +- arch/powerpc/perf/vpa-pmu.c | 13 +-- arch/powerpc/platforms/pseries/papr_scm.c | 18 +--- arch/s390/kernel/perf_cpum_cf.c | 8 +- arch/s390/kernel/perf_cpum_sf.c | 2 + arch/s390/kernel/perf_pai_crypto.c | 1 + arch/s390/kernel/perf_pai_ext.c | 1 + arch/sh/kernel/perf_event.c | 1 - arch/sparc/kernel/perf_event.c | 4 +- arch/x86/events/amd/ibs.c | 32 ++----- arch/x86/events/amd/iommu.c | 15 --- arch/x86/events/amd/power.c | 7 -- arch/x86/events/amd/uncore.c | 12 +-- arch/x86/events/core.c | 7 +- arch/x86/events/intel/bts.c | 3 - arch/x86/events/intel/cstate.c | 16 +--- arch/x86/events/intel/pt.c | 3 - arch/x86/events/intel/uncore.c | 16 +--- arch/x86/events/intel/uncore_snb.c | 18 ---- arch/x86/events/msr.c | 8 +- arch/x86/events/rapl.c | 11 --- arch/xtensa/kernel/perf_event.c | 1 + drivers/devfreq/event/rockchip-dfi.c | 13 +-- drivers/dma/idxd/perfmon.c | 17 +--- drivers/fpga/dfl-fme-perf.c | 18 +--- drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 4 - drivers/gpu/drm/i915/i915_pmu.c | 13 --- drivers/gpu/drm/xe/xe_pmu.c | 13 --- .../hwtracing/coresight/coresight-etm-perf.c | 5 - drivers/hwtracing/ptt/hisi_ptt.c | 8 -- drivers/iommu/intel/perfmon.c | 28 +++--- drivers/perf/alibaba_uncore_drw_pmu.c | 28 +----- drivers/perf/amlogic/meson_ddr_pmu_core.c | 9 -- drivers/perf/arm-cci.c | 56 +++-------- drivers/perf/arm-ccn.c | 34 ------- drivers/perf/arm-cmn.c | 15 +-- drivers/perf/arm-ni.c | 35 +++---- drivers/perf/arm_cspmu/arm_cspmu.c | 34 +------ drivers/perf/arm_dmc620_pmu.c | 28 +----- drivers/perf/arm_dsu_pmu.c | 26 +---- drivers/perf/arm_pmu.c | 19 +--- drivers/perf/arm_pmu_platform.c | 2 +- drivers/perf/arm_smmuv3_pmu.c | 35 ++----- drivers/perf/arm_spe_pmu.c | 7 +- drivers/perf/cxl_pmu.c | 6 -- drivers/perf/dwc_pcie_pmu.c | 21 +--- drivers/perf/fsl_imx8_ddr_perf.c | 32 +------ drivers/perf/fsl_imx9_ddr_perf.c | 27 ------ drivers/perf/hisilicon/hisi_pcie_pmu.c | 25 ++--- drivers/perf/hisilicon/hisi_uncore_pmu.c | 41 ++------ drivers/perf/hisilicon/hns3_pmu.c | 24 ++--- drivers/perf/marvell_cn10k_ddr_pmu.c | 18 ---- drivers/perf/marvell_cn10k_tad_pmu.c | 12 +-- drivers/perf/marvell_pem_pmu.c | 22 +---- drivers/perf/qcom_l2_pmu.c | 96 ++++++------------- drivers/perf/qcom_l3_pmu.c | 33 ++----- drivers/perf/riscv_pmu_legacy.c | 1 - drivers/perf/riscv_pmu_sbi.c | 3 +- drivers/perf/starfive_starlink_pmu.c | 32 ++----- drivers/perf/thunderx2_pmu.c | 45 ++------- drivers/perf/xgene_pmu.c | 29 ------ drivers/powercap/intel_rapl_common.c | 9 +- include/linux/perf_event.h | 10 +- kernel/events/core.c | 35 +++++-- kernel/events/hw_breakpoint.c | 1 + 78 files changed, 244 insertions(+), 1053 deletions(-) -- 2.39.2.101.g768bb238c484.dirty From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6B91CCA0EE7 for ; Wed, 13 Aug 2025 18:06:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=+d3Z0iP28/qE0q65sMSBkPALq3i4CPdbxgrEXmcHw30=; b=4508egyXkAvgR9 /Uq5UzuiljgGvjHf9bwl7bRoxx0D2AbZyfy80f7jEUMJi7kDfdDjQqziNuQdq8fra31Sfk47uAmTb MhYGaXl2JOKRT1iHtaD4HewHNBH1GX6fxG5QSRZaE33XpEpYgyXYvhrww0KLLQKyLcCGOsrc3rSKt JrjQzDvdK8adnZ0HAhXHYfsolCn7LI8E0tk6YJNslO91ZmYI+pL0/eeDNWaeEz36ARBL/CBS1lPvS bJyTA+9V9qjCMEfb+5f3EqkTmqHnwBqV/rWmxJTOSyXW0LvDEQPrFeBWb8QlmyLlto9HnfbILIbWc GYjtlhT6XPf07XMcYbdA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umFrN-0000000Eegb-37Is; Wed, 13 Aug 2025 18:06:01 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umEqu-0000000EVGt-0CiP; Wed, 13 Aug 2025 17:01:29 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0CD3A12FC; Wed, 13 Aug 2025 10:01:17 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E4DF23F738; Wed, 13 Aug 2025 10:01:20 -0700 (PDT) From: Robin Murphy To: peterz@infradead.org, mingo@redhat.com, will@kernel.org, mark.rutland@arm.com, acme@kernel.org, namhyung@kernel.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-csky@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-pm@vger.kernel.org, linux-rockchip@lists.infradead.org, dmaengine@vger.kernel.org, linux-fpga@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, coresight@lists.linaro.org, iommu@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-cxl@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 00/19] perf: Rework event_init checks Date: Wed, 13 Aug 2025 18:00:52 +0100 Message-Id: X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_100128_165970_0F557D5E X-CRM114-Status: GOOD ( 15.36 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org Hi all, [ Note I'm only CC'ing lists for now to avoid spamming nearly 100 individual maintainers/reviewers while we work out the basics ] Reviving my idea from a few years back, the aim here is to minimise the amount of event_init boilerplate that most new drivers have to implement (and so many get wrong), while also trying to establish some more consistent and easy-to-follow patterns for the things that drivers should still care about (mostly group validation). It's ended up somewhat big and ugly, so to start with I've tried to optimise for ease of review - based on the typical "fixes, cleanup, new development" order the split of the current patches is like so: * Group validation rework (patches #1-#15) - Specific drivers with functional issues by inspection (#1-#7) - Specific drivers where cleanup changes were non-trivial (#8-#11) - Common patterns across remaining drivers (#12-#15) * Capabilities rework (patches #16-#18) * Giant bonfire of remaining boilerplate! (patch #19) If the overall idea is acceptable then a more relaxed merge strategy might be to look at landing the common parts first (#16-#18 and maybe #13), then rearrange the rest into per-driver patches, but I'm sure nobody wants a ~70-patch series out of the gate :) Thanks, Robin. Robin Murphy (19): perf/arm-cmn: Fix event validation perf/hisilicon: Fix group validation perf/imx8_ddr: Fix group validation perf/starfive: Fix group validation iommu/vt-d: Fix perfmon group validation ARM: l2x0: Fix group validation ARM: imx: Fix MMDC PMU group validation perf/arm_smmu_v3: Improve group validation perf/qcom: Improve group validation perf/arm-ni: Improve event validation perf/arm-cci: Tidy up event validation perf: Ignore event state for group validation perf: Add helper for checking grouped events perf: Clean up redundant group validation perf: Simplify group validation perf: Introduce positive capability for sampling perf: Retire PERF_PMU_CAP_NO_INTERRUPT perf: Introduce positive capability for raw events perf: Garbage-collect event_init checks arch/alpha/kernel/perf_event.c | 5 +- arch/arc/kernel/perf_event.c | 4 +- arch/arm/mach-imx/mmdc.c | 29 ++---- arch/arm/mm/cache-l2x0-pmu.c | 19 +--- arch/csky/kernel/perf_event.c | 3 +- arch/loongarch/kernel/perf_event.c | 1 + arch/mips/kernel/perf_event_mipsxx.c | 1 + arch/powerpc/perf/8xx-pmu.c | 3 +- arch/powerpc/perf/core-book3s.c | 4 +- arch/powerpc/perf/core-fsl-emb.c | 4 +- arch/powerpc/perf/hv-24x7.c | 11 --- arch/powerpc/perf/hv-gpci.c | 11 --- arch/powerpc/perf/imc-pmu.c | 31 +----- arch/powerpc/perf/kvm-hv-pmu.c | 5 +- arch/powerpc/perf/vpa-pmu.c | 13 +-- arch/powerpc/platforms/pseries/papr_scm.c | 18 +--- arch/s390/kernel/perf_cpum_cf.c | 8 +- arch/s390/kernel/perf_cpum_sf.c | 2 + arch/s390/kernel/perf_pai_crypto.c | 1 + arch/s390/kernel/perf_pai_ext.c | 1 + arch/sh/kernel/perf_event.c | 1 - arch/sparc/kernel/perf_event.c | 4 +- arch/x86/events/amd/ibs.c | 32 ++----- arch/x86/events/amd/iommu.c | 15 --- arch/x86/events/amd/power.c | 7 -- arch/x86/events/amd/uncore.c | 12 +-- arch/x86/events/core.c | 7 +- arch/x86/events/intel/bts.c | 3 - arch/x86/events/intel/cstate.c | 16 +--- arch/x86/events/intel/pt.c | 3 - arch/x86/events/intel/uncore.c | 16 +--- arch/x86/events/intel/uncore_snb.c | 18 ---- arch/x86/events/msr.c | 8 +- arch/x86/events/rapl.c | 11 --- arch/xtensa/kernel/perf_event.c | 1 + drivers/devfreq/event/rockchip-dfi.c | 13 +-- drivers/dma/idxd/perfmon.c | 17 +--- drivers/fpga/dfl-fme-perf.c | 18 +--- drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 4 - drivers/gpu/drm/i915/i915_pmu.c | 13 --- drivers/gpu/drm/xe/xe_pmu.c | 13 --- .../hwtracing/coresight/coresight-etm-perf.c | 5 - drivers/hwtracing/ptt/hisi_ptt.c | 8 -- drivers/iommu/intel/perfmon.c | 28 +++--- drivers/perf/alibaba_uncore_drw_pmu.c | 28 +----- drivers/perf/amlogic/meson_ddr_pmu_core.c | 9 -- drivers/perf/arm-cci.c | 56 +++-------- drivers/perf/arm-ccn.c | 34 ------- drivers/perf/arm-cmn.c | 15 +-- drivers/perf/arm-ni.c | 35 +++---- drivers/perf/arm_cspmu/arm_cspmu.c | 34 +------ drivers/perf/arm_dmc620_pmu.c | 28 +----- drivers/perf/arm_dsu_pmu.c | 26 +---- drivers/perf/arm_pmu.c | 19 +--- drivers/perf/arm_pmu_platform.c | 2 +- drivers/perf/arm_smmuv3_pmu.c | 35 ++----- drivers/perf/arm_spe_pmu.c | 7 +- drivers/perf/cxl_pmu.c | 6 -- drivers/perf/dwc_pcie_pmu.c | 21 +--- drivers/perf/fsl_imx8_ddr_perf.c | 32 +------ drivers/perf/fsl_imx9_ddr_perf.c | 27 ------ drivers/perf/hisilicon/hisi_pcie_pmu.c | 25 ++--- drivers/perf/hisilicon/hisi_uncore_pmu.c | 41 ++------ drivers/perf/hisilicon/hns3_pmu.c | 24 ++--- drivers/perf/marvell_cn10k_ddr_pmu.c | 18 ---- drivers/perf/marvell_cn10k_tad_pmu.c | 12 +-- drivers/perf/marvell_pem_pmu.c | 22 +---- drivers/perf/qcom_l2_pmu.c | 96 ++++++------------- drivers/perf/qcom_l3_pmu.c | 33 ++----- drivers/perf/riscv_pmu_legacy.c | 1 - drivers/perf/riscv_pmu_sbi.c | 3 +- drivers/perf/starfive_starlink_pmu.c | 32 ++----- drivers/perf/thunderx2_pmu.c | 45 ++------- drivers/perf/xgene_pmu.c | 29 ------ drivers/powercap/intel_rapl_common.c | 9 +- include/linux/perf_event.h | 10 +- kernel/events/core.c | 35 +++++-- kernel/events/hw_breakpoint.c | 1 + 78 files changed, 244 insertions(+), 1053 deletions(-) -- 2.39.2.101.g768bb238c484.dirty _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 951F0CA0EE6 for ; Wed, 13 Aug 2025 18:06:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=XpnmLNOut9bX9GO0RjssJuY5+1gAy0yEmyebd7blq04=; b=gZiZrSl6a3ylOs Gryc1RXFsFf7ztPepIC9KIYOlN7LCfDR6cfwXQqWAscMEigNd7eKAmDJCIl/xRnkoRT+0DdXaxemc oBdXjQXa/Z94lW99RerJ/gUPcP+xLxkeWtolSiGkyFQ7MofWIpJbGsEQWDaiqYDNIJnnk75QQ52AB tiVhAfbXDDHbCBLi/Ay9fHRqEKzkgZpZGdcGKK1wzo/jpZJy7HrSlV2IPbKYJcl34MfVnWRT4H8RO 92XqXrKpvZcTrf4NKrofP7+qvE0PTnc4sEJoUtFyArxTIxCOXOQ3y6gTcyNPDGA4P9lnIsMaSSrwm CbuQtv8nsumqfy1ggIMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umFrQ-0000000Eekv-3ODq; Wed, 13 Aug 2025 18:06:04 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umEqu-0000000EVGt-0CiP; Wed, 13 Aug 2025 17:01:29 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0CD3A12FC; Wed, 13 Aug 2025 10:01:17 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E4DF23F738; Wed, 13 Aug 2025 10:01:20 -0700 (PDT) From: Robin Murphy To: peterz@infradead.org, mingo@redhat.com, will@kernel.org, mark.rutland@arm.com, acme@kernel.org, namhyung@kernel.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-csky@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-pm@vger.kernel.org, linux-rockchip@lists.infradead.org, dmaengine@vger.kernel.org, linux-fpga@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, coresight@lists.linaro.org, iommu@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-cxl@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 00/19] perf: Rework event_init checks Date: Wed, 13 Aug 2025 18:00:52 +0100 Message-Id: X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_100128_165970_0F557D5E X-CRM114-Status: GOOD ( 15.36 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org Hi all, [ Note I'm only CC'ing lists for now to avoid spamming nearly 100 individual maintainers/reviewers while we work out the basics ] Reviving my idea from a few years back, the aim here is to minimise the amount of event_init boilerplate that most new drivers have to implement (and so many get wrong), while also trying to establish some more consistent and easy-to-follow patterns for the things that drivers should still care about (mostly group validation). It's ended up somewhat big and ugly, so to start with I've tried to optimise for ease of review - based on the typical "fixes, cleanup, new development" order the split of the current patches is like so: * Group validation rework (patches #1-#15) - Specific drivers with functional issues by inspection (#1-#7) - Specific drivers where cleanup changes were non-trivial (#8-#11) - Common patterns across remaining drivers (#12-#15) * Capabilities rework (patches #16-#18) * Giant bonfire of remaining boilerplate! (patch #19) If the overall idea is acceptable then a more relaxed merge strategy might be to look at landing the common parts first (#16-#18 and maybe #13), then rearrange the rest into per-driver patches, but I'm sure nobody wants a ~70-patch series out of the gate :) Thanks, Robin. Robin Murphy (19): perf/arm-cmn: Fix event validation perf/hisilicon: Fix group validation perf/imx8_ddr: Fix group validation perf/starfive: Fix group validation iommu/vt-d: Fix perfmon group validation ARM: l2x0: Fix group validation ARM: imx: Fix MMDC PMU group validation perf/arm_smmu_v3: Improve group validation perf/qcom: Improve group validation perf/arm-ni: Improve event validation perf/arm-cci: Tidy up event validation perf: Ignore event state for group validation perf: Add helper for checking grouped events perf: Clean up redundant group validation perf: Simplify group validation perf: Introduce positive capability for sampling perf: Retire PERF_PMU_CAP_NO_INTERRUPT perf: Introduce positive capability for raw events perf: Garbage-collect event_init checks arch/alpha/kernel/perf_event.c | 5 +- arch/arc/kernel/perf_event.c | 4 +- arch/arm/mach-imx/mmdc.c | 29 ++---- arch/arm/mm/cache-l2x0-pmu.c | 19 +--- arch/csky/kernel/perf_event.c | 3 +- arch/loongarch/kernel/perf_event.c | 1 + arch/mips/kernel/perf_event_mipsxx.c | 1 + arch/powerpc/perf/8xx-pmu.c | 3 +- arch/powerpc/perf/core-book3s.c | 4 +- arch/powerpc/perf/core-fsl-emb.c | 4 +- arch/powerpc/perf/hv-24x7.c | 11 --- arch/powerpc/perf/hv-gpci.c | 11 --- arch/powerpc/perf/imc-pmu.c | 31 +----- arch/powerpc/perf/kvm-hv-pmu.c | 5 +- arch/powerpc/perf/vpa-pmu.c | 13 +-- arch/powerpc/platforms/pseries/papr_scm.c | 18 +--- arch/s390/kernel/perf_cpum_cf.c | 8 +- arch/s390/kernel/perf_cpum_sf.c | 2 + arch/s390/kernel/perf_pai_crypto.c | 1 + arch/s390/kernel/perf_pai_ext.c | 1 + arch/sh/kernel/perf_event.c | 1 - arch/sparc/kernel/perf_event.c | 4 +- arch/x86/events/amd/ibs.c | 32 ++----- arch/x86/events/amd/iommu.c | 15 --- arch/x86/events/amd/power.c | 7 -- arch/x86/events/amd/uncore.c | 12 +-- arch/x86/events/core.c | 7 +- arch/x86/events/intel/bts.c | 3 - arch/x86/events/intel/cstate.c | 16 +--- arch/x86/events/intel/pt.c | 3 - arch/x86/events/intel/uncore.c | 16 +--- arch/x86/events/intel/uncore_snb.c | 18 ---- arch/x86/events/msr.c | 8 +- arch/x86/events/rapl.c | 11 --- arch/xtensa/kernel/perf_event.c | 1 + drivers/devfreq/event/rockchip-dfi.c | 13 +-- drivers/dma/idxd/perfmon.c | 17 +--- drivers/fpga/dfl-fme-perf.c | 18 +--- drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 4 - drivers/gpu/drm/i915/i915_pmu.c | 13 --- drivers/gpu/drm/xe/xe_pmu.c | 13 --- .../hwtracing/coresight/coresight-etm-perf.c | 5 - drivers/hwtracing/ptt/hisi_ptt.c | 8 -- drivers/iommu/intel/perfmon.c | 28 +++--- drivers/perf/alibaba_uncore_drw_pmu.c | 28 +----- drivers/perf/amlogic/meson_ddr_pmu_core.c | 9 -- drivers/perf/arm-cci.c | 56 +++-------- drivers/perf/arm-ccn.c | 34 ------- drivers/perf/arm-cmn.c | 15 +-- drivers/perf/arm-ni.c | 35 +++---- drivers/perf/arm_cspmu/arm_cspmu.c | 34 +------ drivers/perf/arm_dmc620_pmu.c | 28 +----- drivers/perf/arm_dsu_pmu.c | 26 +---- drivers/perf/arm_pmu.c | 19 +--- drivers/perf/arm_pmu_platform.c | 2 +- drivers/perf/arm_smmuv3_pmu.c | 35 ++----- drivers/perf/arm_spe_pmu.c | 7 +- drivers/perf/cxl_pmu.c | 6 -- drivers/perf/dwc_pcie_pmu.c | 21 +--- drivers/perf/fsl_imx8_ddr_perf.c | 32 +------ drivers/perf/fsl_imx9_ddr_perf.c | 27 ------ drivers/perf/hisilicon/hisi_pcie_pmu.c | 25 ++--- drivers/perf/hisilicon/hisi_uncore_pmu.c | 41 ++------ drivers/perf/hisilicon/hns3_pmu.c | 24 ++--- drivers/perf/marvell_cn10k_ddr_pmu.c | 18 ---- drivers/perf/marvell_cn10k_tad_pmu.c | 12 +-- drivers/perf/marvell_pem_pmu.c | 22 +---- drivers/perf/qcom_l2_pmu.c | 96 ++++++------------- drivers/perf/qcom_l3_pmu.c | 33 ++----- drivers/perf/riscv_pmu_legacy.c | 1 - drivers/perf/riscv_pmu_sbi.c | 3 +- drivers/perf/starfive_starlink_pmu.c | 32 ++----- drivers/perf/thunderx2_pmu.c | 45 ++------- drivers/perf/xgene_pmu.c | 29 ------ drivers/powercap/intel_rapl_common.c | 9 +- include/linux/perf_event.h | 10 +- kernel/events/core.c | 35 +++++-- kernel/events/hw_breakpoint.c | 1 + 78 files changed, 244 insertions(+), 1053 deletions(-) -- 2.39.2.101.g768bb238c484.dirty _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1E6FDC87FCF for ; Wed, 13 Aug 2025 18:06:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=56L4I8oEc6dE/UaYI5JD3UGTMZc7fbB3zvCjL0ZVXA0=; b=DDXMA0ZIeHx0tn gKVJVUvw7EY507gFkfaItuPtz1hgMeBZW/NofK83ts7aqXfTNT2VpIyHqXue5uKIRPOOELqBM0fa+ 192SFyWMRMUMhnFPfm9BWqTpgo5Vx8VZmbpLcuaNsLcAmQTtLYJ5WgEamlwdvk1jozvgmRVK8F2iR RQqKrjjW37vz9BxwUn+SFkenaFLQ+hUv3gheqCqi8HRr8eEIQbidAE0gFAmO4z082REMKBVGjh4oX 94zJuBJTxjnprbVJ9NmR5F6jPiuSbw9GdREtzX7GdsszDH/43XQ9R+9smjtdol8igbhIYCUn/A11k 4W+DGLrvYZ2VqSeIujZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umFrP-0000000EejQ-3DOV; Wed, 13 Aug 2025 18:06:03 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umEqu-0000000EVGt-0CiP; Wed, 13 Aug 2025 17:01:29 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0CD3A12FC; Wed, 13 Aug 2025 10:01:17 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E4DF23F738; Wed, 13 Aug 2025 10:01:20 -0700 (PDT) From: Robin Murphy To: peterz@infradead.org, mingo@redhat.com, will@kernel.org, mark.rutland@arm.com, acme@kernel.org, namhyung@kernel.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-csky@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-pm@vger.kernel.org, linux-rockchip@lists.infradead.org, dmaengine@vger.kernel.org, linux-fpga@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, coresight@lists.linaro.org, iommu@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-cxl@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 00/19] perf: Rework event_init checks Date: Wed, 13 Aug 2025 18:00:52 +0100 Message-Id: X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_100128_165970_0F557D5E X-CRM114-Status: GOOD ( 15.36 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Hi all, [ Note I'm only CC'ing lists for now to avoid spamming nearly 100 individual maintainers/reviewers while we work out the basics ] Reviving my idea from a few years back, the aim here is to minimise the amount of event_init boilerplate that most new drivers have to implement (and so many get wrong), while also trying to establish some more consistent and easy-to-follow patterns for the things that drivers should still care about (mostly group validation). It's ended up somewhat big and ugly, so to start with I've tried to optimise for ease of review - based on the typical "fixes, cleanup, new development" order the split of the current patches is like so: * Group validation rework (patches #1-#15) - Specific drivers with functional issues by inspection (#1-#7) - Specific drivers where cleanup changes were non-trivial (#8-#11) - Common patterns across remaining drivers (#12-#15) * Capabilities rework (patches #16-#18) * Giant bonfire of remaining boilerplate! (patch #19) If the overall idea is acceptable then a more relaxed merge strategy might be to look at landing the common parts first (#16-#18 and maybe #13), then rearrange the rest into per-driver patches, but I'm sure nobody wants a ~70-patch series out of the gate :) Thanks, Robin. Robin Murphy (19): perf/arm-cmn: Fix event validation perf/hisilicon: Fix group validation perf/imx8_ddr: Fix group validation perf/starfive: Fix group validation iommu/vt-d: Fix perfmon group validation ARM: l2x0: Fix group validation ARM: imx: Fix MMDC PMU group validation perf/arm_smmu_v3: Improve group validation perf/qcom: Improve group validation perf/arm-ni: Improve event validation perf/arm-cci: Tidy up event validation perf: Ignore event state for group validation perf: Add helper for checking grouped events perf: Clean up redundant group validation perf: Simplify group validation perf: Introduce positive capability for sampling perf: Retire PERF_PMU_CAP_NO_INTERRUPT perf: Introduce positive capability for raw events perf: Garbage-collect event_init checks arch/alpha/kernel/perf_event.c | 5 +- arch/arc/kernel/perf_event.c | 4 +- arch/arm/mach-imx/mmdc.c | 29 ++---- arch/arm/mm/cache-l2x0-pmu.c | 19 +--- arch/csky/kernel/perf_event.c | 3 +- arch/loongarch/kernel/perf_event.c | 1 + arch/mips/kernel/perf_event_mipsxx.c | 1 + arch/powerpc/perf/8xx-pmu.c | 3 +- arch/powerpc/perf/core-book3s.c | 4 +- arch/powerpc/perf/core-fsl-emb.c | 4 +- arch/powerpc/perf/hv-24x7.c | 11 --- arch/powerpc/perf/hv-gpci.c | 11 --- arch/powerpc/perf/imc-pmu.c | 31 +----- arch/powerpc/perf/kvm-hv-pmu.c | 5 +- arch/powerpc/perf/vpa-pmu.c | 13 +-- arch/powerpc/platforms/pseries/papr_scm.c | 18 +--- arch/s390/kernel/perf_cpum_cf.c | 8 +- arch/s390/kernel/perf_cpum_sf.c | 2 + arch/s390/kernel/perf_pai_crypto.c | 1 + arch/s390/kernel/perf_pai_ext.c | 1 + arch/sh/kernel/perf_event.c | 1 - arch/sparc/kernel/perf_event.c | 4 +- arch/x86/events/amd/ibs.c | 32 ++----- arch/x86/events/amd/iommu.c | 15 --- arch/x86/events/amd/power.c | 7 -- arch/x86/events/amd/uncore.c | 12 +-- arch/x86/events/core.c | 7 +- arch/x86/events/intel/bts.c | 3 - arch/x86/events/intel/cstate.c | 16 +--- arch/x86/events/intel/pt.c | 3 - arch/x86/events/intel/uncore.c | 16 +--- arch/x86/events/intel/uncore_snb.c | 18 ---- arch/x86/events/msr.c | 8 +- arch/x86/events/rapl.c | 11 --- arch/xtensa/kernel/perf_event.c | 1 + drivers/devfreq/event/rockchip-dfi.c | 13 +-- drivers/dma/idxd/perfmon.c | 17 +--- drivers/fpga/dfl-fme-perf.c | 18 +--- drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 4 - drivers/gpu/drm/i915/i915_pmu.c | 13 --- drivers/gpu/drm/xe/xe_pmu.c | 13 --- .../hwtracing/coresight/coresight-etm-perf.c | 5 - drivers/hwtracing/ptt/hisi_ptt.c | 8 -- drivers/iommu/intel/perfmon.c | 28 +++--- drivers/perf/alibaba_uncore_drw_pmu.c | 28 +----- drivers/perf/amlogic/meson_ddr_pmu_core.c | 9 -- drivers/perf/arm-cci.c | 56 +++-------- drivers/perf/arm-ccn.c | 34 ------- drivers/perf/arm-cmn.c | 15 +-- drivers/perf/arm-ni.c | 35 +++---- drivers/perf/arm_cspmu/arm_cspmu.c | 34 +------ drivers/perf/arm_dmc620_pmu.c | 28 +----- drivers/perf/arm_dsu_pmu.c | 26 +---- drivers/perf/arm_pmu.c | 19 +--- drivers/perf/arm_pmu_platform.c | 2 +- drivers/perf/arm_smmuv3_pmu.c | 35 ++----- drivers/perf/arm_spe_pmu.c | 7 +- drivers/perf/cxl_pmu.c | 6 -- drivers/perf/dwc_pcie_pmu.c | 21 +--- drivers/perf/fsl_imx8_ddr_perf.c | 32 +------ drivers/perf/fsl_imx9_ddr_perf.c | 27 ------ drivers/perf/hisilicon/hisi_pcie_pmu.c | 25 ++--- drivers/perf/hisilicon/hisi_uncore_pmu.c | 41 ++------ drivers/perf/hisilicon/hns3_pmu.c | 24 ++--- drivers/perf/marvell_cn10k_ddr_pmu.c | 18 ---- drivers/perf/marvell_cn10k_tad_pmu.c | 12 +-- drivers/perf/marvell_pem_pmu.c | 22 +---- drivers/perf/qcom_l2_pmu.c | 96 ++++++------------- drivers/perf/qcom_l3_pmu.c | 33 ++----- drivers/perf/riscv_pmu_legacy.c | 1 - drivers/perf/riscv_pmu_sbi.c | 3 +- drivers/perf/starfive_starlink_pmu.c | 32 ++----- drivers/perf/thunderx2_pmu.c | 45 ++------- drivers/perf/xgene_pmu.c | 29 ------ drivers/powercap/intel_rapl_common.c | 9 +- include/linux/perf_event.h | 10 +- kernel/events/core.c | 35 +++++-- kernel/events/hw_breakpoint.c | 1 + 78 files changed, 244 insertions(+), 1053 deletions(-) -- 2.39.2.101.g768bb238c484.dirty _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 56FA3C87FCF for ; Wed, 13 Aug 2025 18:06:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=AzdMOBcW3Hhq6RdRoaksFA5b9Xyp9unolqcFaFhbfrg=; b=zaPf4ow4iGVYIT 887OQ0yF/IXF6P5FZKM8aNfSUKSZWxm4olPNegc7br2uC8FW+E/hKVaOrn0r6XQFOMt0SUnuOIx6H IBor8mVTOv9tkRC5ScTQoVZV5htQhXFGHe3Oqw6PWjJ21AOKCEdzgEWnqFMs7vHKp12/6IyF8ujWy CXmk5vIrkX3IUEp6V7CXxb28T9O804y9yni8j04zSYSw9AL+h6HHXSe1bwBVNGX2bB4jHdSrKu4Ex aAyZLhNI7FX38K5K9+zNKVyDyg3kJ3lLIuoNDSsmmGFmHkEO9YBXwT7500MxNZpJ2keFaE9d9XbiN WMEwmGf+h7sERNmbrZug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umFrR-0000000EemK-366u; Wed, 13 Aug 2025 18:06:05 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umEqu-0000000EVGt-0CiP; Wed, 13 Aug 2025 17:01:29 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0CD3A12FC; Wed, 13 Aug 2025 10:01:17 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E4DF23F738; Wed, 13 Aug 2025 10:01:20 -0700 (PDT) From: Robin Murphy To: peterz@infradead.org, mingo@redhat.com, will@kernel.org, mark.rutland@arm.com, acme@kernel.org, namhyung@kernel.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-csky@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-pm@vger.kernel.org, linux-rockchip@lists.infradead.org, dmaengine@vger.kernel.org, linux-fpga@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, coresight@lists.linaro.org, iommu@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-cxl@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 00/19] perf: Rework event_init checks Date: Wed, 13 Aug 2025 18:00:52 +0100 Message-Id: X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_100128_165970_0F557D5E X-CRM114-Status: GOOD ( 15.36 ) X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org Hi all, [ Note I'm only CC'ing lists for now to avoid spamming nearly 100 individual maintainers/reviewers while we work out the basics ] Reviving my idea from a few years back, the aim here is to minimise the amount of event_init boilerplate that most new drivers have to implement (and so many get wrong), while also trying to establish some more consistent and easy-to-follow patterns for the things that drivers should still care about (mostly group validation). It's ended up somewhat big and ugly, so to start with I've tried to optimise for ease of review - based on the typical "fixes, cleanup, new development" order the split of the current patches is like so: * Group validation rework (patches #1-#15) - Specific drivers with functional issues by inspection (#1-#7) - Specific drivers where cleanup changes were non-trivial (#8-#11) - Common patterns across remaining drivers (#12-#15) * Capabilities rework (patches #16-#18) * Giant bonfire of remaining boilerplate! (patch #19) If the overall idea is acceptable then a more relaxed merge strategy might be to look at landing the common parts first (#16-#18 and maybe #13), then rearrange the rest into per-driver patches, but I'm sure nobody wants a ~70-patch series out of the gate :) Thanks, Robin. Robin Murphy (19): perf/arm-cmn: Fix event validation perf/hisilicon: Fix group validation perf/imx8_ddr: Fix group validation perf/starfive: Fix group validation iommu/vt-d: Fix perfmon group validation ARM: l2x0: Fix group validation ARM: imx: Fix MMDC PMU group validation perf/arm_smmu_v3: Improve group validation perf/qcom: Improve group validation perf/arm-ni: Improve event validation perf/arm-cci: Tidy up event validation perf: Ignore event state for group validation perf: Add helper for checking grouped events perf: Clean up redundant group validation perf: Simplify group validation perf: Introduce positive capability for sampling perf: Retire PERF_PMU_CAP_NO_INTERRUPT perf: Introduce positive capability for raw events perf: Garbage-collect event_init checks arch/alpha/kernel/perf_event.c | 5 +- arch/arc/kernel/perf_event.c | 4 +- arch/arm/mach-imx/mmdc.c | 29 ++---- arch/arm/mm/cache-l2x0-pmu.c | 19 +--- arch/csky/kernel/perf_event.c | 3 +- arch/loongarch/kernel/perf_event.c | 1 + arch/mips/kernel/perf_event_mipsxx.c | 1 + arch/powerpc/perf/8xx-pmu.c | 3 +- arch/powerpc/perf/core-book3s.c | 4 +- arch/powerpc/perf/core-fsl-emb.c | 4 +- arch/powerpc/perf/hv-24x7.c | 11 --- arch/powerpc/perf/hv-gpci.c | 11 --- arch/powerpc/perf/imc-pmu.c | 31 +----- arch/powerpc/perf/kvm-hv-pmu.c | 5 +- arch/powerpc/perf/vpa-pmu.c | 13 +-- arch/powerpc/platforms/pseries/papr_scm.c | 18 +--- arch/s390/kernel/perf_cpum_cf.c | 8 +- arch/s390/kernel/perf_cpum_sf.c | 2 + arch/s390/kernel/perf_pai_crypto.c | 1 + arch/s390/kernel/perf_pai_ext.c | 1 + arch/sh/kernel/perf_event.c | 1 - arch/sparc/kernel/perf_event.c | 4 +- arch/x86/events/amd/ibs.c | 32 ++----- arch/x86/events/amd/iommu.c | 15 --- arch/x86/events/amd/power.c | 7 -- arch/x86/events/amd/uncore.c | 12 +-- arch/x86/events/core.c | 7 +- arch/x86/events/intel/bts.c | 3 - arch/x86/events/intel/cstate.c | 16 +--- arch/x86/events/intel/pt.c | 3 - arch/x86/events/intel/uncore.c | 16 +--- arch/x86/events/intel/uncore_snb.c | 18 ---- arch/x86/events/msr.c | 8 +- arch/x86/events/rapl.c | 11 --- arch/xtensa/kernel/perf_event.c | 1 + drivers/devfreq/event/rockchip-dfi.c | 13 +-- drivers/dma/idxd/perfmon.c | 17 +--- drivers/fpga/dfl-fme-perf.c | 18 +--- drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 4 - drivers/gpu/drm/i915/i915_pmu.c | 13 --- drivers/gpu/drm/xe/xe_pmu.c | 13 --- .../hwtracing/coresight/coresight-etm-perf.c | 5 - drivers/hwtracing/ptt/hisi_ptt.c | 8 -- drivers/iommu/intel/perfmon.c | 28 +++--- drivers/perf/alibaba_uncore_drw_pmu.c | 28 +----- drivers/perf/amlogic/meson_ddr_pmu_core.c | 9 -- drivers/perf/arm-cci.c | 56 +++-------- drivers/perf/arm-ccn.c | 34 ------- drivers/perf/arm-cmn.c | 15 +-- drivers/perf/arm-ni.c | 35 +++---- drivers/perf/arm_cspmu/arm_cspmu.c | 34 +------ drivers/perf/arm_dmc620_pmu.c | 28 +----- drivers/perf/arm_dsu_pmu.c | 26 +---- drivers/perf/arm_pmu.c | 19 +--- drivers/perf/arm_pmu_platform.c | 2 +- drivers/perf/arm_smmuv3_pmu.c | 35 ++----- drivers/perf/arm_spe_pmu.c | 7 +- drivers/perf/cxl_pmu.c | 6 -- drivers/perf/dwc_pcie_pmu.c | 21 +--- drivers/perf/fsl_imx8_ddr_perf.c | 32 +------ drivers/perf/fsl_imx9_ddr_perf.c | 27 ------ drivers/perf/hisilicon/hisi_pcie_pmu.c | 25 ++--- drivers/perf/hisilicon/hisi_uncore_pmu.c | 41 ++------ drivers/perf/hisilicon/hns3_pmu.c | 24 ++--- drivers/perf/marvell_cn10k_ddr_pmu.c | 18 ---- drivers/perf/marvell_cn10k_tad_pmu.c | 12 +-- drivers/perf/marvell_pem_pmu.c | 22 +---- drivers/perf/qcom_l2_pmu.c | 96 ++++++------------- drivers/perf/qcom_l3_pmu.c | 33 ++----- drivers/perf/riscv_pmu_legacy.c | 1 - drivers/perf/riscv_pmu_sbi.c | 3 +- drivers/perf/starfive_starlink_pmu.c | 32 ++----- drivers/perf/thunderx2_pmu.c | 45 ++------- drivers/perf/xgene_pmu.c | 29 ------ drivers/powercap/intel_rapl_common.c | 9 +- include/linux/perf_event.h | 10 +- kernel/events/core.c | 35 +++++-- kernel/events/hw_breakpoint.c | 1 + 78 files changed, 244 insertions(+), 1053 deletions(-) -- 2.39.2.101.g768bb238c484.dirty _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc