* [patch 10/11] perf_event_open.2: 4.0 update rdpmc documentation
@ 2015-07-23 17:16 Vince Weaver
[not found] ` <alpine.DEB.2.20.1507231315230.3742-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Vince Weaver @ 2015-07-23 17:16 UTC (permalink / raw)
To: Michael Kerrisk (man-pages)
Cc: linux-man-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Peter Zijlstra, Ingo Molnar,
Arnaldo Carvalho de Melo, Stephane Eranian, Andy Lutomirski,
Kees Cook, Andrea Arcangeli, hillf.zj, Valdis Kletnieks,
Linus Torvalds, Vince Weaver
The rdpmc instruction allows reading performance counters directly
from usersapce. Prior to Linux 4.0 any process could use this
instruction when a perf event was running, even if the process itself
did not have any open. The following changesets changed the default
behavior so that only processes with active events can use rdpmc.
Note this change broke the ABI. Previously:
/sys/bus/event_source/devices/cpu/rdpmc
Set to "1" meant allow across whole system.
After the change "2" means the whole system, and "1" means per-process.
Probably a better change would have been to add "2" to mean per-process
and make that the default setting. Probably too late to fix that now.
commit a66734297f78707ce39d756b656bfae861d53f62
Author: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
perf/x86: Add /sys/devices/cpu/rdpmc=2 to allow rdpmc for all tasks
commit 7911d3f7af14a614617e38245fedf98a724e46a9
Author: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
perf/x86: Only allow rdpmc if a perf_event is mapped
Signed-off-by: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
Cc: Paul Mackerras <paulus-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
Cc: Arnaldo Carvalho de Melo <acme-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Kees Cook <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Cc: Andrea Arcangeli <aarcange-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Vince Weaver <vince-yfjdyHUqu3OsTnJN9+BGXg@public.gmane.org>
Cc: "hillf.zj" <hillf.zj-gPhfCIXyaqCqndwCJWfcng@public.gmane.org>
Cc: Valdis Kletnieks <Valdis.Kletnieks-PjAqaU27lzQ@public.gmane.org>
Cc: Linus Torvalds <torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Link: http://lkml.kernel.org/r/caac3c1c707dcca48ecbc35f4def21495856f479.1414190806.git.luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org
Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Signed-off-by: Vince Weaver <vincent.weaver-e7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index 8ef9ec6..b3cd93f 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -2595,6 +2595,16 @@ Support for this can be detected with the
.I cap_usr_rdpmc
field in the mmap page; documentation on how
to calculate event values can be found in that section.
+
+Originally, when rdpmc support was enabled, any process (not just ones
+with an active perf event) could use the rdpmc instruction to access
+the counters.
+Starting with Linux 4.0
+.\" 7911d3f7af14a614617e38245fedf98a724e46a9
+rdpmc support is only allowed if an event is currently enabled
+in a process' context.
+To restore the old behavior, write the value 2 to
+.IR /sys/devices/cpu/rdpmc .
.SS perf_event ioctl calls
.PP
Various ioctls act on
@@ -2783,11 +2793,18 @@ field of
.I perf_event_attr
to indicate that you wish to use this PMU.
.TP
-.IR /sys/bus/event_source/devices/*/rdpmc " (since Linux 3.4)"
+.IR /sys/bus/event_source/devices/cpu/rdpmc " (since Linux 3.4)"
.\" commit 0c9d42ed4cee2aa1dfc3a260b741baae8615744f
If this file is 1, then direct user-space access to the
performance counter registers is allowed via the rdpmc instruction.
This can be disabled by echoing 0 to the file.
+
+As of Linux 4.0
+.\" a66734297f78707ce39d756b656bfae861d53f62
+.\" 7911d3f7af14a614617e38245fedf98a724e46a9
+the behavior has changed, so that 1 now means only allow access
+to processes with active perf events, with 2 indicating the old
+allow-anyone-access behavior.
.TP
.IR /sys/bus/event_source/devices/*/format/ " (since Linux 3.4)"
.\" commit 641cc938815dfd09f8fa1ec72deb814f0938ac33
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [patch 10/11] perf_event_open.2: 4.0 update rdpmc documentation
[not found] ` <alpine.DEB.2.20.1507231315230.3742-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
@ 2015-10-14 6:46 ` Michael Kerrisk (man-pages)
0 siblings, 0 replies; 2+ messages in thread
From: Michael Kerrisk (man-pages) @ 2015-10-14 6:46 UTC (permalink / raw)
To: Vince Weaver
Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w,
linux-man-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Peter Zijlstra, Ingo Molnar,
Arnaldo Carvalho de Melo, Stephane Eranian, Andy Lutomirski,
Kees Cook, Andrea Arcangeli, hillf.zj, Valdis Kletnieks,
Linus Torvalds
On 07/23/2015 07:16 PM, Vince Weaver wrote:
>
> The rdpmc instruction allows reading performance counters directly
> from usersapce. Prior to Linux 4.0 any process could use this
> instruction when a perf event was running, even if the process itself
> did not have any open. The following changesets changed the default
> behavior so that only processes with active events can use rdpmc.
Thanks, Vince. Applied.
Cheers,
Michael
> Note this change broke the ABI. Previously:
> /sys/bus/event_source/devices/cpu/rdpmc
> Set to "1" meant allow across whole system.
>
> After the change "2" means the whole system, and "1" means per-process.
>
> Probably a better change would have been to add "2" to mean per-process
> and make that the default setting. Probably too late to fix that now.
>
> commit a66734297f78707ce39d756b656bfae861d53f62
> Author: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
>
> perf/x86: Add /sys/devices/cpu/rdpmc=2 to allow rdpmc for all tasks
>
> commit 7911d3f7af14a614617e38245fedf98a724e46a9
> Author: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
>
> perf/x86: Only allow rdpmc if a perf_event is mapped
>
> Signed-off-by: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
> Signed-off-by: Peter Zijlstra (Intel) <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
> Cc: Paul Mackerras <paulus-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
> Cc: Arnaldo Carvalho de Melo <acme-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Kees Cook <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
> Cc: Andrea Arcangeli <aarcange-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Cc: Vince Weaver <vince-yfjdyHUqu3OsTnJN9+BGXg@public.gmane.org>
> Cc: "hillf.zj" <hillf.zj-gPhfCIXyaqCqndwCJWfcng@public.gmane.org>
> Cc: Valdis Kletnieks <Valdis.Kletnieks-PjAqaU27lzQ@public.gmane.org>
> Cc: Linus Torvalds <torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
> Link: http://lkml.kernel.org/r/caac3c1c707dcca48ecbc35f4def21495856f479.1414190806.git.luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org
> Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>
> Signed-off-by: Vince Weaver <vincent.weaver-e7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
>
> diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
> index 8ef9ec6..b3cd93f 100644
> --- a/man2/perf_event_open.2
> +++ b/man2/perf_event_open.2
> @@ -2595,6 +2595,16 @@ Support for this can be detected with the
> .I cap_usr_rdpmc
> field in the mmap page; documentation on how
> to calculate event values can be found in that section.
> +
> +Originally, when rdpmc support was enabled, any process (not just ones
> +with an active perf event) could use the rdpmc instruction to access
> +the counters.
> +Starting with Linux 4.0
> +.\" 7911d3f7af14a614617e38245fedf98a724e46a9
> +rdpmc support is only allowed if an event is currently enabled
> +in a process' context.
> +To restore the old behavior, write the value 2 to
> +.IR /sys/devices/cpu/rdpmc .
> .SS perf_event ioctl calls
> .PP
> Various ioctls act on
> @@ -2783,11 +2793,18 @@ field of
> .I perf_event_attr
> to indicate that you wish to use this PMU.
> .TP
> -.IR /sys/bus/event_source/devices/*/rdpmc " (since Linux 3.4)"
> +.IR /sys/bus/event_source/devices/cpu/rdpmc " (since Linux 3.4)"
> .\" commit 0c9d42ed4cee2aa1dfc3a260b741baae8615744f
> If this file is 1, then direct user-space access to the
> performance counter registers is allowed via the rdpmc instruction.
> This can be disabled by echoing 0 to the file.
> +
> +As of Linux 4.0
> +.\" a66734297f78707ce39d756b656bfae861d53f62
> +.\" 7911d3f7af14a614617e38245fedf98a724e46a9
> +the behavior has changed, so that 1 now means only allow access
> +to processes with active perf events, with 2 indicating the old
> +allow-anyone-access behavior.
> .TP
> .IR /sys/bus/event_source/devices/*/format/ " (since Linux 3.4)"
> .\" commit 641cc938815dfd09f8fa1ec72deb814f0938ac33
>
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-10-14 6:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-23 17:16 [patch 10/11] perf_event_open.2: 4.0 update rdpmc documentation Vince Weaver
[not found] ` <alpine.DEB.2.20.1507231315230.3742-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
2015-10-14 6:46 ` Michael Kerrisk (man-pages)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).