On Wed, 05 Feb 2025 17:50:34 -0500 Steven Rostedt <rost...@goodmis.org> wrote:
> From: Steven Rostedt <rost...@goodmis.org> > > Now that there's one page at the start of the persistent memory used by > the ring buffer, make the part of that page that is not used by the ring > buffer available for the tracer to use. This will allow the tracer to > store its own persistent data. Looks good to me. Reviewed-by: Masami Hiramatsu (Google) <mhira...@kernel.org> Thanks, > > Signed-off-by: Steven Rostedt (Google) <rost...@goodmis.org> > --- > include/linux/ring_buffer.h | 1 + > kernel/trace/ring_buffer.c | 13 +++++++++++++ > 2 files changed, 14 insertions(+) > > diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h > index 8de035f4f0d9..b95f940fd07a 100644 > --- a/include/linux/ring_buffer.h > +++ b/include/linux/ring_buffer.h > @@ -95,6 +95,7 @@ struct trace_buffer *__ring_buffer_alloc_range(unsigned > long size, unsigned flag > struct lock_class_key *key); > > bool ring_buffer_last_boot_delta(struct trace_buffer *buffer, unsigned long > *kaslr_addr); > +void *ring_buffer_meta_scratch(struct trace_buffer *buffer, unsigned int > *size); > > /* > * Because the ring buffer is generic, if other users of the ring buffer get > diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c > index 0446d053dbd6..5a81ff785665 100644 > --- a/kernel/trace/ring_buffer.c > +++ b/kernel/trace/ring_buffer.c > @@ -1730,6 +1730,9 @@ static bool rb_meta_init(struct trace_buffer *buffer) > bmeta->total_size = total_size; > bmeta->buffers_offset = (void *)ptr - (void *)bmeta; > > + /* Zero out the scatch pad */ > + memset((void *)bmeta + sizeof(*bmeta), 0, PAGE_SIZE - sizeof(*bmeta)); > + > return false; > } > > @@ -2532,6 +2535,16 @@ bool ring_buffer_last_boot_delta(struct trace_buffer > *buffer, unsigned long *kas > return true; > } > > +void *ring_buffer_meta_scratch(struct trace_buffer *buffer, unsigned int > *size) > +{ > + if (!buffer || !buffer->meta) > + return NULL; > + > + *size = PAGE_SIZE - sizeof(*buffer->meta); > + > + return (void *)buffer->meta + sizeof(*buffer->meta); > +} > + > /** > * ring_buffer_free - free a ring buffer. > * @buffer: the buffer to free. > -- > 2.45.2 > > -- Masami Hiramatsu (Google) <mhira...@kernel.org>