]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drivers/perf: hisi: Relax the event ID check in the framework
authorYicong Yang <yangyicong@hisilicon.com>
Fri, 29 Aug 2025 10:14:19 +0000 (18:14 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:08:53 +0000 (14:08 +0100)
[ Upstream commit 43de0ac332b815cf56dbdce63687de9acfd35d49 ]

Event ID is only using the attr::config bit [7, 0] but we check the
event range using the whole 64bit field. It blocks the usage of the
rest field of attr::config. Relax the check by only using the
bit [7, 0].

Acked-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Signed-off-by: Yushan Wang <wangyushan12@huawei.com>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/perf/hisilicon/hisi_uncore_pmu.c
drivers/perf/hisilicon/hisi_uncore_pmu.h

index 918cdc31de57222363d2e2665ba23e746086cd66..e37682b280db5631238c958846e482e295c0189a 100644 (file)
@@ -198,7 +198,7 @@ int hisi_uncore_pmu_event_init(struct perf_event *event)
                return -EINVAL;
 
        hisi_pmu = to_hisi_pmu(event->pmu);
-       if (event->attr.config > hisi_pmu->check_event)
+       if ((event->attr.config & HISI_EVENTID_MASK) > hisi_pmu->check_event)
                return -EINVAL;
 
        if (hisi_pmu->on_cpu == -1)
index 25b2d43b72bf91b1be7bbf12b1705e36af498e6e..ab5d54170b41689e5aaa8f85f32949b6c65692bd 100644 (file)
@@ -43,7 +43,8 @@
                return FIELD_GET(GENMASK_ULL(hi, lo), event->attr.config);  \
        }
 
-#define HISI_GET_EVENTID(ev) (ev->hw.config_base & 0xff)
+#define HISI_EVENTID_MASK              GENMASK(7, 0)
+#define HISI_GET_EVENTID(ev)           ((ev)->hw.config_base & HISI_EVENTID_MASK)
 
 #define HISI_PMU_EVTYPE_BITS           8
 #define HISI_PMU_EVTYPE_SHIFT(idx)     ((idx) % 4 * HISI_PMU_EVTYPE_BITS)