Skip to content

Commit

Permalink
tracing: Enforce the persistent ring buffer to be page aligned
Browse files Browse the repository at this point in the history
Enforce that the address and the size of the memory used by the persistent
ring buffer is page aligned. Also update the documentation to reflect this
requirement.

Link: https://lore.kernel.org/all/CAHk-=whUOfVucfJRt7E0AH+GV41ELmS4wJqxHDnui6Giddfkzw@mail.gmail.com/

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Vincent Donnefort <vdonnefort@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Jann Horn <jannh@google.com>
Link: https://lore.kernel.org/20250402144953.412882844@goodmis.org
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt committed Apr 2, 2025
1 parent 028a58e commit c44a14f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7241,6 +7241,8 @@
This is just one of many ways that can clear memory. Make sure your system
keeps the content of memory across reboots before relying on this option.

NB: Both the mapped address and size must be page aligned for the architecture.

See also Documentation/trace/debugging.rst


Expand Down
2 changes: 2 additions & 0 deletions Documentation/trace/debugging.rst
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ kernel, so only the same kernel is guaranteed to work if the mapping is
preserved. Switching to a different kernel version may find a different
layout and mark the buffer as invalid.

NB: Both the mapped address and size must be page aligned for the architecture.

Using trace_printk() in the boot instance
-----------------------------------------
By default, the content of trace_printk() goes into the top level tracing
Expand Down
10 changes: 10 additions & 0 deletions kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -10774,6 +10774,16 @@ __init static void enable_instances(void)
}

if (start) {
/* Start and size must be page aligned */
if (start & ~PAGE_MASK) {
pr_warn("Tracing: mapping start addr %pa is not page aligned\n", &start);
continue;
}
if (size & ~PAGE_MASK) {
pr_warn("Tracing: mapping size %pa is not page aligned\n", &size);
continue;
}

addr = map_pages(start, size);
if (addr) {
pr_info("Tracing: mapped boot instance %s at physical memory %pa of size 0x%lx\n",
Expand Down

0 comments on commit c44a14f

Please sign in to comment.