From: Steven Rostedt <rostedt@goodmis.org>
To: David Sharp <dhsharp@google.com>
Cc: linux-kernel@vger.kernel.org, Michael Rubin <mrubin@google.com>
Subject: Re: ftrace: trace_pipe_raw interface broken
Date: Thu, 23 Dec 2010 10:57:33 -0500 [thread overview]
Message-ID: <1293119853.22802.33.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <AANLkTinEFVeVfMj9HgfO90wHVgCrzK+RSaDyXqeJuHUh@mail.gmail.com>
Hi David,
Thanks for looking deeper into this.
On Wed, 2010-12-22 at 16:37 -0800, David Sharp wrote:
> Regarding the strange "commit" values:
>
> I noticed just now that it appears the low 16-bits are the correct
> value for "commit", bits 16-31 are c000, and bits 32-63 are ffffffff.
Ah yeah, I use 32bits so it would be the same on both 32 and 64.
>
> ring_buffer_read_page can store the number of missing events at the
> end of the page if there is room. It signals it has done so with two
> bits in commit, bits 30 and 31. That's c0000000. This points to the
> ffffffff being a signed math problem, because these bits are added
> using "local_add".
>
> Here's how the bits are defined:
>
> /* Flag when events were overwritten */
> #define RB_MISSED_EVENTS (1 << 31)
> /* Missed count stored at end */
> #define RB_MISSED_STORED (1 << 30)
>
> well, those would come out as signed int, and 1<<31 is 0x80000000, aka
> INT_MIN. When passed to local_add, which takes signed long, that would
> be sign-extended to 0xffffffff80000000.
>
> Well, mystery solved at least. Now, how should it be fixed? Or is this
> intended behavior?
Not quite intended, but not something to worry about either. We mask off
the 30 bits to determine the size.
>
> By my count that leaves only one mystery: why are we seeing this extra
> page at the beginning with pre-overflow data?
If you did not reset the buffer, there's a chance that the writer is on
the reader page. The reader page is always outside the ring buffer, but
it points into the ring buffer. If this occurs, then you will get the
reader page data, plus the rest of the ring buffer (which is the full
size you asked for).
-- Steve
next prev parent reply other threads:[~2010-12-23 15:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-21 2:43 David Sharp
2010-12-21 3:52 ` Steven Rostedt
2010-12-21 5:59 ` David Sharp
2010-12-22 23:23 ` David Sharp
2010-12-22 23:47 ` David Sharp
2010-12-23 0:37 ` David Sharp
2010-12-23 15:57 ` Steven Rostedt [this message]
2010-12-23 23:06 ` David Sharp
2010-12-24 4:35 ` Steven Rostedt
2010-12-22 23:45 ` [PATCH] ring_buffer: off-by-one and duplicate events in ring_buffer_read_page David Sharp
2010-12-23 0:38 ` David Sharp
2010-12-25 8:59 ` [tip:perf/urgent] ring_buffer: Off-by-one " tip-bot for David Sharp
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=1293119853.22802.33.camel@gandalf.stny.rr.com \
--to=rostedt@goodmis.org \
--cc=dhsharp@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mrubin@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®