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 07AB6CA0EE0 for ; Wed, 13 Aug 2025 19:43:47 +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:References:In-Reply-To: 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: List-Owner; bh=UbRuVqBh0nv6dzeuyoYTkrfqhK3U0//eSStZ3wXSXO8=; b=lLixVKVqHAJOhF 1yZepmnraA4OsGIFQFhCPO+QsPVsoP3IQfcPzYW4Wgdn1SojKTgphNWeXflQbyFaBIoqSfmaqDlwe WNz4XQfbfRZGhO19ZqKOws0IrXOFyJJKkcxnKpGlXbiCgZ5aOMoBQSgJ3BVKSubwx/MyRiHz4TGJS Q/jSIh1Pu3WwdcdGMfRXtLEBpK2F72Cb3a7TVXJ1nh3W4GtBdxT3S1tWYvvubN+0OfWzWP3nnrXlp XHZSdbeFomwzyeFruepAvHTRfQ//S3IifAa1yfpLjNfjc8bpRL0PTo2PjVazi+tN6MzME4YfWwqgm d0uK+7fP/szKbqJA0d3A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umHNu-0000000EoJk-38Kr; Wed, 13 Aug 2025 19:43:42 +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 1umErE-0000000EVXt-1XCU; Wed, 13 Aug 2025 17:01:49 +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 93BEC1C00; Wed, 13 Aug 2025 10:01:39 -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 7CB223F738; Wed, 13 Aug 2025 10:01:43 -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 05/19] iommu/vt-d: Fix perfmon group validation Date: Wed, 13 Aug 2025 18:00:57 +0100 Message-Id: X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_100148_461847_1629FC94 X-CRM114-Status: GOOD ( 13.28 ) 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 The group validation here has a few issues to fix: firstly, failing to count the group leader or the event being opened itself. Secondly it appears wrong not to count disabled sibling events given that they could be enabled later. Finally there's the subtlety that we should avoid racy access to the sibling list when the event is its own group leader. Signed-off-by: Robin Murphy --- drivers/iommu/intel/perfmon.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/intel/perfmon.c b/drivers/iommu/intel/perfmon.c index 75f493bcb353..c3a1ac14cb2b 100644 --- a/drivers/iommu/intel/perfmon.c +++ b/drivers/iommu/intel/perfmon.c @@ -258,21 +258,25 @@ static int iommu_pmu_validate_group(struct perf_event *event) { struct iommu_pmu *iommu_pmu = iommu_event_to_pmu(event); struct perf_event *sibling; - int nr = 0; + int nr = 1; + if (event == event->group_leader) + return 0; /* * All events in a group must be scheduled simultaneously. * Check whether there is enough counters for all the events. */ - for_each_sibling_event(sibling, event->group_leader) { - if (!is_iommu_pmu_event(iommu_pmu, sibling) || - sibling->state <= PERF_EVENT_STATE_OFF) - continue; + if (is_iommu_pmu_event(iommu_pmu, event->group_leader)) + ++nr; - if (++nr > iommu_pmu->num_cntr) - return -EINVAL; + for_each_sibling_event(sibling, event->group_leader) { + if (is_iommu_pmu_event(iommu_pmu, sibling)) + ++nr; } + if (nr > iommu_pmu->num_cntr) + return -EINVAL; + return 0; } -- 2.39.2.101.g768bb238c484.dirty _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip