From: Steven Rostedt <rostedt@goodmis.org>
To: Guenter Roeck <linux@roeck-us.net>
Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Andrew Morton <akpm@linux-foundation.org>,
Vincent Donnefort <vdonnefort@google.com>,
Joel Fernandes <joel@joelfernandes.org>,
Daniel Bristot de Oliveira <bristot@redhat.com>,
Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
suleiman@google.com, Thomas Gleixner <tglx@linutronix.de>,
Vineeth Pillai <vineeth@bitbyteword.org>,
Youssef Esmat <youssefesmat@google.com>,
Beau Belgrave <beaub@linux.microsoft.com>,
Alexander Graf <graf@amazon.com>, Baoquan He <bhe@redhat.com>,
Borislav Petkov <bp@alien8.de>,
"Paul E. McKenney" <paulmck@kernel.org>,
David Howells <dhowells@redhat.com>,
Mike Rapoport <rppt@kernel.org>,
Dave Hansen <dave.hansen@linux.intel.com>,
Tony Luck <tony.luck@intel.com>,
Ross Zwisler <zwisler@google.com>,
Kees Cook <keescook@chromium.org>
Subject: Re: [PATCH v4 01/13] ring-buffer: Allow mapped field to be set without mapping
Date: Tue, 11 Jun 2024 21:39:37 -0400 [thread overview]
Message-ID: <20240611213937.408770fa@rorschach.local.home> (raw)
In-Reply-To: <1e74c6d8-ae74-49c2-bdc4-d9880110ab57@roeck-us.net>
On Tue, 11 Jun 2024 16:53:43 -0700
Guenter Roeck <linux@roeck-us.net> wrote:
> >>> @@ -6403,7 +6407,8 @@ int ring_buffer_unmap(struct trace_buffer *buffer, int cpu)
> >>> mutex_lock(&buffer->mutex);
> >>> raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags);
> >>>
> >>> - cpu_buffer->mapped = 0;
> >>> + WARN_ON_ONCE(!cpu_buffer->mapped);
> >>> + cpu_buffer->mapped--;
> >>
> >> This will wrap to UINT_MAX if it was 0. Is that intentional ?
> >
> > If mapped is non zero, it limits what it can do. If it enters here as zero,
> > we are really in a unknown state, so yeah, wrapping will just keep it
> > limited. Which is a good thing.
> >
> > Do you want me to add a comment there?
> >
>
> Maybe. I just wondered if something like
> if (!WARN_ON_ONCE(!cpu_buffer->mapped))
> cpu_buffer->mapped--;
>
> would be better than wrapping because 'mapped' is used as flag elsewhere,
> but then I can see that it is also manipulated in __rb_inc_dec_mapped(),
> and that it is checked against UINT_MAX there (and not decremented if it is 0).
Yeah, the __rb_inc_dec_mapped() is used as it is called when external
sources map the ring buffer.
This is incremented and decremented internally. That is, we increment
it the first time the ring buffer is mapped, and decrement it again the
last time it is mapped.
I could add the above logic as well. I hit a bug in my more vigorous
testing so I need to make another revision anyway.
>
> Maybe explain why sometimes __rb_inc_dec_mapped() is called to
> increment or decrement ->mapped, and sometimes it id done directly ?
> I can see that the function also acquires the buffer mutex, which
> isn't needed at the places where mapped is incremented/decremented
> directly, but common code would still be nice, and it is odd to see
> over/underflows handled sometimes but not always.
Sure. I'll add comments explaining more.
Thanks,
-- Steve
next prev parent reply other threads:[~2024-06-12 1:39 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-11 19:28 [PATCH v4 00/13] tracing: Persistent traces across a reboot or crash Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 01/13] ring-buffer: Allow mapped field to be set without mapping Steven Rostedt
2024-06-11 22:43 ` Guenter Roeck
2024-06-11 22:53 ` Steven Rostedt
2024-06-11 23:53 ` Guenter Roeck
2024-06-12 1:39 ` Steven Rostedt [this message]
2024-06-12 1:57 ` Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 02/13] ring-buffer: Add ring_buffer_alloc_range() Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 03/13] ring-buffer: Add ring_buffer_meta data Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 04/13] tracing: Implement creating an instance based on a given memory region Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 05/13] ring-buffer: Add output of ring buffer meta page Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 06/13] ring-buffer: Add test if range of boot buffer is valid Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 07/13] ring-buffer: Validate boot range memory events Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 08/13] tracing: Add option to use memmapped memory for trace boot instance Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 09/13] ring-buffer: Save text and data locations in mapped meta data Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 10/13] tracing/ring-buffer: Add last_boot_info file to boot instance Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 11/13] tracing: Handle old buffer mappings for event strings and functions Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 12/13] tracing: Update function tracing output for previous boot buffer Steven Rostedt
2024-06-11 19:28 ` [PATCH v4 13/13] tracing: Add last boot delta offset for stack traces Steven Rostedt
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=20240611213937.408770fa@rorschach.local.home \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=beaub@linux.microsoft.com \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=bristot@redhat.com \
--cc=dave.hansen@linux.intel.com \
--cc=dhowells@redhat.com \
--cc=graf@amazon.com \
--cc=joel@joelfernandes.org \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rppt@kernel.org \
--cc=suleiman@google.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=vdonnefort@google.com \
--cc=vineeth@bitbyteword.org \
--cc=youssefesmat@google.com \
--cc=zwisler@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;
as well as URLs for NNTP newsgroup(s).