All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Vince Weaver <vince@deater.net>
Cc: hpa@zytor.com, linux-kernel@vger.kernel.org,
	a.p.zijlstra@chello.nl, 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: Thu, 19 Sep 2013 10:42:49 +0200	[thread overview]
Message-ID: <20130919084249.GA14112@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1309171632180.13443@pianoman.cluster.toy>


* Vince Weaver <vince@deater.net> wrote:

> On Tue, 17 Sep 2013, Vince Weaver wrote:
> 
> > 
> > This patch somehow breaks the perf-ABI.
> > 
> > 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.
> 
> To follow up, the original case:
> 
>         union {
>                 __u64   capabilities;
>                 __u64   cap_usr_time  : 1,
>                         cap_usr_rdpmc : 1,
>                         cap_____res   : 62;
>         };
> 
>         Then mmap->usr_rdpmc=1; gets assembled as
> 
>         400420:       80 0d 11 05 20 00 02    orb    $0x2,0x200511(%rip)        

Hm, how can it be 0x2? Didn't you mix up the two assemblies accidentally?

> 
> The new version
> 
>        union {
>                 __u64   capabilities;
>                 struct {
>                         __u64   cap_usr_time            : 1,
>                                 cap_usr_rdpmc           : 1,
>                                 cap_usr_time_zero       : 1,
>                                 cap_____res             : 61;
>                 };
>         };
> 
>         mmap->usr_rdpmc=1; gets assembled as
> 
> 
>        400427:       80 0d 02 05 20 00 01    orb    $0x1,0x200502(%rip)        
> 
> note the difference in the or value.

Here the value should be 0x2, as cap_usr_rdpmc move to the second bit.

Right?

	Ingo

  reply	other threads:[~2013-09-19  8:42 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 [this message]
2013-09-18  8:57       ` Peter Zijlstra
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=20130919084249.GA14112@gmail.com \
    --to=mingo@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=adrian.hunter@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.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.