From nobody Fri Dec 19 21:17:21 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE50B1EB1B8; Wed, 19 Feb 2025 13:41:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739972462; cv=none; b=qXckfNpR5z8p9ICuy0ofI8Pyfd6r2rZlDge/C51ZUGkiFVBlxWYdGJtU7/kNHKA+BVJDnuuyGInkALeK24BdOSuQNgF5cZSDyXXsVaCWcettKoWuw3BZxTmYUXMtg5bZeMtExCje/mwrox0AkzYkLH7vCrxeciQArHREcLjc0Og= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739972462; c=relaxed/simple; bh=Agd8dAvug++fNqH4Fy/1e7D6Lgjyatp74gkEX5NdNps=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=FaCjCvchDsmfjTHtEH2oxJnST1OCXYbDMgL20+fIIMo4SU5nGPwYDJZqtoKaa3pdSmybEynmE6RSW2SPQPafmJeI6wyJAopdNeliZOan9+blYdM1xbymzo2UWIzZFgl8r1Syxwb1UwIPn6lfGlPu3bNzYlgnCiRpAK2IMe1HJlY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=vBdg6rzO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="vBdg6rzO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5617C4CEE7; Wed, 19 Feb 2025 13:41:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1739972461; bh=Agd8dAvug++fNqH4Fy/1e7D6Lgjyatp74gkEX5NdNps=; h=From:To:Cc:Subject:Date:From; b=vBdg6rzOtRgIpF2ExgrdPZyFzcjdO/yMw8De+F+0Uu93VrR/30dOZetNZjReJaEbp BSfQfRYf2AxPzk8a70HfoB8C53PB6gPbTPAKv0HerNwi/+C2yFs32ASVXQel/GWbul L4EnK2IGxTdFiL0Nn8DV+hkYtGlLpduOZLipucck= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , linux-perf-users@vger.kernel.org Subject: [PATCH] perf: fix up some comments and code to properly use the event_source bus Date: Wed, 19 Feb 2025 14:40:56 +0100 Message-ID: <2025021955-implant-excavator-179d@gregkh> X-Mailer: git-send-email 2.48.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5486; i=gregkh@linuxfoundation.org; h=from:subject:message-id; bh=Agd8dAvug++fNqH4Fy/1e7D6Lgjyatp74gkEX5NdNps=; b=owGbwMvMwCRo6H6F97bub03G02pJDOlb76ebbU9UnT+X4ZnUhoWH5R9O2PNTc3Pzo9v8O7ksO Hd33e2f2hHLwiDIxCArpsjyZRvP0f0VhxS9DG1Pw8xhZQIZwsDFKQAT6VrLsKD/3/tZr2bObREz Z1p6LnD1HuYCcz+G+XG2l1qW8QgKzCvoLeD43XleQlgkFQA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Arnaldo Carvalho de Melo Cc: Namhyung Kim Cc: Mark Rutland Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Ian Rogers Cc: Adrian Hunter Cc: "Liang, Kan" Cc: linux-perf-users@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Greg Kroah-Hartman Reviewed-by: Kan Liang --- tools/perf/Documentation/intel-hybrid.txt | 12 ++++++------ tools/perf/Documentation/perf-list.txt | 2 +- tools/perf/arch/x86/util/iostat.c | 2 +- tools/perf/builtin-stat.c | 2 +- tools/perf/util/mem-events.c | 2 +- tools/perf/util/pmu.c | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/perf/Documentation/intel-hybrid.txt b/tools/perf/Documen= tation/intel-hybrid.txt index e7a776ad25d7..0379903673a4 100644 --- a/tools/perf/Documentation/intel-hybrid.txt +++ b/tools/perf/Documentation/intel-hybrid.txt @@ -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. =20 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 =20 The 'cpus' files are created under the directories. For example, =20 -cat /sys/devices/cpu_core/cpus +cat /sys/bus/event_source/devices/cpu_core/cpus 0-15 =20 -cat /sys/devices/cpu_atom/cpus +cat /sys/bus/event_source/devices/cpu_atom/cpus 16-23 =20 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]. =20 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 =20 The new attr.config layout for PERF_TYPE_HARDWARE: =20 diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentat= ion/perf-list.txt index d0c65fad419a..c3ffd93f94d7 100644 --- a/tools/perf/Documentation/perf-list.txt +++ b/tools/perf/Documentation/perf-list.txt @@ -188,7 +188,7 @@ in the CPU vendor specific documentation. =20 The available PMUs and their raw parameters can be listed with =20 - ls /sys/devices/*/format + ls /sys/bus/event_source/devices/*/format =20 For example the raw event "LSD.UOPS" core pmu event above could be specified as diff --git a/tools/perf/arch/x86/util/iostat.c b/tools/perf/arch/x86/util/i= ostat.c index 00f645a0c18a..7442a2cd87ed 100644 --- a/tools/perf/arch/x86/util/iostat.c +++ b/tools/perf/arch/x86/util/iostat.c @@ -32,7 +32,7 @@ #define MAX_PATH 1024 #endif =20 -#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" =20 diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index 77e327d4a9a7..68ea7589c143 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -97,7 +97,7 @@ #include =20 #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" =20 static void print_counters(struct timespec *ts, int argc, const char **arg= v); =20 diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c index 3692e988c86e..0277d3e1505c 100644 --- a/tools/perf/util/mem-events.c +++ b/tools/perf/util/mem-events.c @@ -189,7 +189,7 @@ static bool perf_pmu__mem_events_supported(const char *= mnt, struct perf_pmu *pmu if (!e->event_name) return true; =20 - scnprintf(path, PATH_MAX, "%s/devices/%s/events/%s", mnt, pmu->name, e->e= vent_name); + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/%s/events/%s", mnt= , pmu->name, e->event_name); =20 return !stat(path, &st); } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 6206c8fe2bf9..a8193ac8f2e7 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -36,12 +36,12 @@ #define UNIT_MAX_LEN 31 /* max length for event unit name */ =20 enum event_source { - /* An event loaded from /sys/devices//events. */ + /* An event loaded from /sys/bus/event_source/devices//events. */ EVENT_SRC_SYSFS, /* An event loaded from a CPUID matched json file. */ EVENT_SRC_CPU_JSON, /* - * An event loaded from a /sys/devices//identifier matched json + * An event loaded from a /sys/bus/event_source/devices//identifier = matched json * file. */ EVENT_SRC_SYS_JSON, --=20 2.48.1