]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
perf tools: Fix up some comments and code to properly use the event_source bus
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Feb 2025 13:40:56 +0000 (14:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Apr 2025 08:08:36 +0000 (10:08 +0200)
commit 0cced76a0276610e86e8b187c09f0e9ef85b9299 upstream.

In sysfs, the perf events are all located in
/sys/bus/event_source/devices/ but some places ended up hard-coding the
location to be at the root of /sys/devices/ which could be very risky as
you do not exactly know what type of device you are accessing in sysfs
at that location.

So fix this all up by properly pointing everything at the bus device
list instead of the root of the sysfs devices/ tree.

Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
Link: https://lore.kernel.org/r/2025021955-implant-excavator-179d@gregkh
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/perf/Documentation/intel-hybrid.txt
tools/perf/Documentation/perf-list.txt
tools/perf/arch/x86/util/iostat.c
tools/perf/builtin-stat.c
tools/perf/util/mem-events.c
tools/perf/util/pmu.c

index e7a776ad25d719fa6af1115f2e75f48e8ae63948..0379903673a4acbecd6cecbc5e5e01f7325c2a8e 100644 (file)
@@ -8,15 +8,15 @@ Part of events are available on core cpu, part of events are available
 on atom cpu and even part of events are available on both.
 
 Kernel exports two new cpu pmus via sysfs:
-/sys/devices/cpu_core
-/sys/devices/cpu_atom
+/sys/bus/event_source/devices/cpu_core
+/sys/bus/event_source/devices/cpu_atom
 
 The 'cpus' files are created under the directories. For example,
 
-cat /sys/devices/cpu_core/cpus
+cat /sys/bus/event_source/devices/cpu_core/cpus
 0-15
 
-cat /sys/devices/cpu_atom/cpus
+cat /sys/bus/event_source/devices/cpu_atom/cpus
 16-23
 
 It indicates cpu0-cpu15 are core cpus and cpu16-cpu23 are atom cpus.
@@ -60,8 +60,8 @@ can't carry pmu information. So now this type is extended to be PMU aware
 type. The PMU type ID is stored at attr.config[63:32].
 
 PMU type ID is retrieved from sysfs.
-/sys/devices/cpu_atom/type
-/sys/devices/cpu_core/type
+/sys/bus/event_source/devices/cpu_atom/type
+/sys/bus/event_source/devices/cpu_core/type
 
 The new attr.config layout for PERF_TYPE_HARDWARE:
 
index dea005410ec02fed9d46599ce7c07a7467dd9ced..ee5d333e2ca964f327836c63be1ed5d58db3fc17 100644 (file)
@@ -188,7 +188,7 @@ in the CPU vendor specific documentation.
 
 The available PMUs and their raw parameters can be listed with
 
-  ls /sys/devices/*/format
+  ls /sys/bus/event_source/devices/*/format
 
 For example the raw event "LSD.UOPS" core pmu event above could
 be specified as
index df7b5dfcc26a51f30d5485992d78637b9cba1bf3..7ea882ef293a18b077d145b6af11d9db7099c359 100644 (file)
@@ -32,7 +32,7 @@
 #define MAX_PATH 1024
 #endif
 
-#define UNCORE_IIO_PMU_PATH    "devices/uncore_iio_%d"
+#define UNCORE_IIO_PMU_PATH    "bus/event_source/devices/uncore_iio_%d"
 #define SYSFS_UNCORE_PMU_PATH  "%s/"UNCORE_IIO_PMU_PATH
 #define PLATFORM_MAPPING_PATH  UNCORE_IIO_PMU_PATH"/die%d"
 
index 4933efdfee76fb23735876391d57d04db732f5c6..628c61397d2d380a9176d150fe920320f300638b 100644 (file)
@@ -96,7 +96,7 @@
 #include <internal/threadmap.h>
 
 #define DEFAULT_SEPARATOR      " "
-#define FREEZE_ON_SMI_PATH     "devices/cpu/freeze_on_smi"
+#define FREEZE_ON_SMI_PATH     "bus/event_source/devices/cpu/freeze_on_smi"
 
 static void print_counters(struct timespec *ts, int argc, const char **argv);
 
index bf5090f5220bbdc760b31cee04a97f77a9ce4469..9c4adfb45f62ba53be8e3a91bbf019f7eff123ff 100644 (file)
@@ -189,7 +189,7 @@ static bool perf_pmu__mem_events_supported(const char *mnt, struct perf_pmu *pmu
        if (!e->event_name)
                return true;
 
-       scnprintf(path, PATH_MAX, "%s/devices/%s/events/%s", mnt, pmu->name, e->event_name);
+       scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/%s/events/%s", mnt, pmu->name, e->event_name);
 
        return !stat(path, &st);
 }
index 61bdda01a05aca4aedcc06a6b23b243550b02375..ed893c3c6ad9383143a4ad5018ed7639fe26a869 100644 (file)
 #define UNIT_MAX_LEN   31 /* max length for event unit name */
 
 enum event_source {
-       /* An event loaded from /sys/devices/<pmu>/events. */
+       /* An event loaded from /sys/bus/event_source/devices/<pmu>/events. */
        EVENT_SRC_SYSFS,
        /* An event loaded from a CPUID matched json file. */
        EVENT_SRC_CPU_JSON,
        /*
-        * An event loaded from a /sys/devices/<pmu>/identifier matched json
+        * An event loaded from a /sys/bus/event_source/devices/<pmu>/identifier matched json
         * file.
         */
        EVENT_SRC_SYS_JSON,