From: Peter Zijlstra <peterz@infradead.org>
To: Vince Weaver <vince@deater.net>
Cc: mingo@kernel.org, hpa@zytor.com, linux-kernel@vger.kernel.org,
adrian.hunter@intel.com, tglx@linutronix.de,
linux-tip-commits@vger.kernel.org
Subject: Re: [tip:perf/core] perf: Fix broken union in ' struct perf_event_mmap_page'
Date: Wed, 18 Sep 2013 10:57:22 +0200 [thread overview]
Message-ID: <20130918085722.GL12926@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <alpine.DEB.2.02.1309171617400.13303@pianoman.cluster.toy>
On Tue, Sep 17, 2013 at 04:23:25PM -0400, Vince Weaver wrote:
> > include/uapi/linux/perf_event.h | 8 +++++---
> > 1 file changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
> > index 00d8274..0041aed 100644
> > --- a/include/uapi/linux/perf_event.h
> > +++ b/include/uapi/linux/perf_event.h
> > @@ -375,9 +375,11 @@ struct perf_event_mmap_page {
> > __u64 time_running; /* time event on cpu */
> > union {
> > __u64 capabilities;
> > - __u64 cap_usr_time : 1,
> > - cap_usr_rdpmc : 1,
> > - cap_____res : 62;
> > + struct {
> > + __u64 cap_usr_time : 1,
> > + cap_usr_rdpmc : 1,
> > + cap_____res : 62;
> > + };
> > };
> This patch somehow breaks the perf-ABI.
Difficult call that..
> If I take a program that reads "mmap->cap_usr_rdpmc" and compile it
> against the new header with this change (say from 3.12-rc1)
> and then run it on an old kernel (say 3.11) then I get "0" for
> cap_usr_rdpmc.
>
> If I take the same program and recompile against the old (without this
> patch) header and run it on 3.11, I get the expected "1" value.
>
> So something about this changed the bit pattern in an incompatible
> fashion.
Which was the entire point of the change. Previously cap_usr_time and
cap_usr_rdpmc were the same bit which clearly cannot be right.
With the change they're consecutive bits in the capabilities word.
Should we preserve completely broken things that don't work?
next prev parent reply other threads:[~2013-09-18 8:57 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-28 13:22 [PATCH 0/5] perf: add two new features Adrian Hunter
2013-06-28 13:22 ` [PATCH 1/5] perf: fix broken union in perf_event_mmap_page Adrian Hunter
2013-06-28 15:22 ` Peter Zijlstra
2013-07-16 11:51 ` H. Peter Anvin
2013-07-24 3:56 ` [tip:perf/core] perf: Fix broken union in ' struct perf_event_mmap_page' tip-bot for Adrian Hunter
2013-09-17 20:23 ` Vince Weaver
2013-09-17 20:35 ` Vince Weaver
2013-09-19 8:42 ` Ingo Molnar
2013-09-18 8:57 ` Peter Zijlstra [this message]
2013-09-18 14:19 ` Vince Weaver
2013-09-18 15:42 ` Peter Zijlstra
2013-09-18 18:33 ` Stephane Eranian
2013-09-19 8:43 ` Peter Zijlstra
2013-09-19 8:55 ` Stephane Eranian
2013-09-19 9:16 ` Ingo Molnar
2013-09-18 20:07 ` Vince Weaver
2013-09-19 8:16 ` Peter Zijlstra
2013-09-19 9:14 ` [PATCH] perf: Always set bit 0 in the capabilities field of 'struct perf_event_mmap_page' to 0, to maintain the ABI Ingo Molnar
2013-09-19 10:12 ` Peter Zijlstra
2013-09-19 10:28 ` Ingo Molnar
2013-09-19 10:35 ` Peter Zijlstra
2013-09-19 10:40 ` [PATCH, v3] " Ingo Molnar
2013-09-19 11:18 ` Adrian Hunter
2013-09-19 11:42 ` [PATCH, v4] perf: Fix capabilities bitfield compatibility in 'struct perf_event_mmap_page' Ingo Molnar
2013-09-19 17:40 ` Vince Weaver
2013-09-20 7:44 ` Ingo Molnar
2013-09-18 9:13 ` [tip:perf/core] perf: Fix broken union in ' struct perf_event_mmap_page' Adrian Hunter
2013-09-18 14:10 ` Vince Weaver
2013-06-28 13:22 ` [PATCH 2/5] x86: add ability to calculate TSC from perf sample timestamps Adrian Hunter
2013-07-24 3:56 ` [tip:perf/core] perf/x86: Add " tip-bot for Adrian Hunter
2013-06-28 13:22 ` [PATCH 3/5] perf tools: add test for converting perf time to/from TSC Adrian Hunter
2013-07-24 3:56 ` [tip:perf/core] perf tools: Add test for converting perf time to/ from TSC tip-bot for Adrian Hunter
2013-06-28 13:22 ` [PATCH 4/5] perf: add 'keep tracking' flag to PERF_EVENT_IOC_DISABLE Adrian Hunter
2013-06-28 13:22 ` [PATCH 5/5] perf tools: add 'keep tracking' test Adrian Hunter
2013-06-28 15:27 ` [PATCH 0/5] perf: add two new features Peter Zijlstra
2013-06-28 19:22 ` Adrian Hunter
2013-07-16 6:22 ` Adrian Hunter
2013-07-16 14:34 ` Peter Zijlstra
2013-07-17 11:28 ` Adrian Hunter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130918085722.GL12926@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=adrian.hunter@intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
--cc=vince@deater.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.