Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932193AbbDQV1d (ORCPT ); Fri, 17 Apr 2015 17:27:33 -0400 Received: from plane.gmane.org ([80.91.229.3]:56673 "EHLO plane.gmane.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753262AbbDQV1b (ORCPT ); Fri, 17 Apr 2015 17:27:31 -0400 Message-ID: <55317AB1.5050001@amacapital.net> Date: Fri, 17 Apr 2015 14:27:13 -0700 From: Andy Lutomirski User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Vince Weaver , "Michael Kerrisk (man-pages)" CC: public-linux-man-u79uwXL29TY76Z2rM5mHXA@plane.gmane.org, public-linux-kernel-u79uwXL29TY76Z2rM5mHXA@plane.gmane.org, Peter Zijlstra , Paul Mackerras , Ingo Molnar , Arnaldo Carvalho de Melo , Stephane Eranian , Andy Lutomirski , Kees Cook , Andrea Arcangeli , "hillf.zj" , Valdis Kletnieks , Linus Torvalds Subject: Re: [patch 10/10] perf_event_open.2: 4.0 update rdpmc documentation References: In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4481 Lines: 102 On 04/16/2015 11:20 AM, 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. > > 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. Good point. I wish you'd thought of that sooner :( --Andy > > 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-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org > 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 01ee579..c854d21 100644 > --- a/man2/perf_event_open.2 > +++ b/man2/perf_event_open.2 > @@ -2377,6 +2377,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 enabled 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 > @@ -2552,11 +2562,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 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/