Skip to contentSkip to conversation

perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy

PATCH New Adrian Hunter 2 participants 2 messages Aug 20, 2015 – Aug 22, 2015 perf events

lore
Share & tools
lore

Adrian Hunter

author reviewer
#0 lore raw

PATCH 1/1 perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy

The "/proc/kcore requires CAP_SYS_RAWIO" message comes up all the time for 'perf script' if vmlinux is not found and the user isn't root, even when the kernel is not being traced and even though the message is only really relevant for annotation.

Change it to pr_debug and instead put a note in the message displayed if annotation is not possible.

Also, the file being accessed might not be /proc/kcore. Tools can be directed to a different location using the --kallsyms option in which case kcore is expected to be in the same directory. Adjust the message so it is not misleading in that case.

---
 tools/perf/util/annotate.c | 1 +
 tools/perf/util/symbol.c   | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)
tools/perf/util/annotate.c +1 -0
index 8a18347709e1..d1eece70b84d 100644
@@ -1126,6 +1126,7 @@ fallback:
 		dso->annotate_warned = 1;
 		pr_err("Can't annotate %s:\n\n"
 		       "No vmlinux file%s\nwas found in the path.\n\n"
+		       "Note that annotation using /proc/kcore requires CAP_SYS_RAWIO capability.\n\n"
 		       "Please use:\n\n"
 		       "  perf buildid-cache -vu vmlinux\n\n"
 		       "or:\n\n"
tools/perf/util/symbol.c +2 -2
index 725640fd7cd8..42e98ab5a9bb 100644
@@ -1138,8 +1138,8 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
 
 	fd = open(kcore_filename, O_RDONLY);
 	if (fd < 0) {
-		pr_err("%s requires CAP_SYS_RAWIO capability to access.\n",
-			kcore_filename);
+		pr_debug("Failed to open %s. Note /proc/kcore requires CAP_SYS_RAWIO capability to access.\n",
+			 kcore_filename);
 		return -EINVAL;
 	}
 
Signature · 1 line
1.9.1
#1 lore raw

[tip:perf/core] perf tools: /proc/ kcore requires CAP_SYS_RAWIO message too noisy

perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy
Commit-ID:  133de940435493266acd4100b0dae8ba7eaa7c71
Gitweb:     http://git.kernel.org/tip/133de940435493266acd4100b0dae8ba7eaa7c71
Author:     Adrian Hunter <[email protected]>
AuthorDate: Thu, 20 Aug 2015 13:07:40 +0300
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Fri, 21 Aug 2015 10:29:23 -0300

perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy

The "/proc/kcore requires CAP_SYS_RAWIO" message comes up all the time for 'perf script' if vmlinux is not found and the user isn't root, even when the kernel is not being traced and even though the message is only really relevant for annotation.

Change it to pr_debug and instead put a note in the message displayed if annotation is not possible.

Also, the file being accessed might not be /proc/kcore. Tools can be directed to a different location using the --kallsyms option in which case kcore is expected to be in the same directory. Adjust the message so it is not misleading in that case.

---
 tools/perf/util/annotate.c | 1 +
 tools/perf/util/symbol.c   | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)
tools/perf/util/annotate.c +1 -0
index 8a18347..d1eece7 100644
@@ -1126,6 +1126,7 @@ fallback:
 		dso->annotate_warned = 1;
 		pr_err("Can't annotate %s:\n\n"
 		       "No vmlinux file%s\nwas found in the path.\n\n"
+		       "Note that annotation using /proc/kcore requires CAP_SYS_RAWIO capability.\n\n"
 		       "Please use:\n\n"
 		       "  perf buildid-cache -vu vmlinux\n\n"
 		       "or:\n\n"
tools/perf/util/symbol.c +2 -2
index 725640f..42e98ab 100644
@@ -1138,8 +1138,8 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
 
 	fd = open(kcore_filename, O_RDONLY);
 	if (fd < 0) {
-		pr_err("%s requires CAP_SYS_RAWIO capability to access.\n",
-			kcore_filename);
+		pr_debug("Failed to open %s. Note /proc/kcore requires CAP_SYS_RAWIO capability to access.\n",
+			 kcore_filename);
 		return -EINVAL;
 	}