From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752222AbbJNGqw (ORCPT ); Wed, 14 Oct 2015 02:46:52 -0400 Received: from mail-wi0-f176.google.com ([209.85.212.176]:37302 "EHLO mail-wi0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750960AbbJNGqu (ORCPT ); Wed, 14 Oct 2015 02:46:50 -0400 Message-ID: <561DFA58.5000106@gmail.com> Date: Wed, 14 Oct 2015 08:46:48 +0200 From: "Michael Kerrisk (man-pages)" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Vince Weaver CC: mtk.manpages@gmail.com, linux-man@vger.kernel.org, linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Stephane Eranian , Andy Lutomirski , Kees Cook , Andrea Arcangeli , "hillf.zj" , Valdis Kletnieks , Linus Torvalds Subject: Re: [patch 10/11] perf_event_open.2: 4.0 update rdpmc documentation References: In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > > perf/x86: Add /sys/devices/cpu/rdpmc=2 to allow rdpmc for all tasks > > commit 7911d3f7af14a614617e38245fedf98a724e46a9 > Author: Andy Lutomirski > > perf/x86: Only allow rdpmc if a perf_event is mapped > > Signed-off-by: Andy Lutomirski > Signed-off-by: Peter Zijlstra (Intel) > Cc: Paul Mackerras > Cc: Arnaldo Carvalho de Melo > Cc: Kees Cook > Cc: Andrea Arcangeli > Cc: Vince Weaver > Cc: "hillf.zj" > Cc: Valdis Kletnieks > Cc: Linus Torvalds > Link: http://lkml.kernel.org/r/caac3c1c707dcca48ecbc35f4def21495856f479.1414190806.git.luto@amacapital.net > Signed-off-by: Ingo Molnar > > Signed-off-by: Vince Weaver > > 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/