]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/cpum_cf: Deny all sampling events by counter PMU
authorThomas Richter <tmricht@linux.ibm.com>
Fri, 22 Aug 2025 12:05:57 +0000 (14:05 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Sep 2025 14:35:44 +0000 (16:35 +0200)
[ Upstream commit ce971233242b5391d99442271f3ca096fb49818d ]

Deny all sampling event by the CPUMF counter facility device driver
and return -ENOENT. This return value is used to try other PMUs.
Up to now events for type PERF_TYPE_HARDWARE were not tested for
sampling and returned later on -EOPNOTSUPP. This ends the search
for alternative PMUs. Change that behavior and try other PMUs
instead.

Fixes: 613a41b0d16e ("s390/cpum_cf: Reject request for sampling in event initialization")
Acked-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/perf_cpum_cf.c

index 6d6b057b562fda9061ee7714bfe6a9f7ab6ced1b..b017db3344cb52a547bd1f270446a8c2c5910d71 100644 (file)
@@ -761,8 +761,6 @@ static int __hw_perf_event_init(struct perf_event *event, unsigned int type)
                break;
 
        case PERF_TYPE_HARDWARE:
-               if (is_sampling_event(event))   /* No sampling support */
-                       return -ENOENT;
                ev = attr->config;
                if (!attr->exclude_user && attr->exclude_kernel) {
                        /*
@@ -860,6 +858,8 @@ static int cpumf_pmu_event_init(struct perf_event *event)
        unsigned int type = event->attr.type;
        int err = -ENOENT;
 
+       if (is_sampling_event(event))   /* No sampling support */
+               return err;
        if (type == PERF_TYPE_HARDWARE || type == PERF_TYPE_RAW)
                err = __hw_perf_event_init(event, type);
        else if (event->pmu->type == type)