ANDROID: ring-buffer: Handle external writer reader_page fast-forward
In order to support dump on panic, the external writer might fast-forward the reader-page to make sure the very last events can be read. Bug: 357781595 Bug: 391974813 Change-Id: I5b2473756a3350de8b0b808b54df662b8a77c6ad Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
This commit is contained in:
@@ -5286,8 +5286,9 @@ __rb_get_reader_page_from_writer(struct ring_buffer_per_cpu *cpu_buffer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
prev_reader = cpu_buffer->meta_page->reader.id;
|
prev_reader = cpu_buffer->meta_page->reader.id;
|
||||||
|
if (cpu_buffer->meta_page->reader.id == cpu_buffer->reader_page->id)
|
||||||
|
WARN_ON(cpu_buffer->writer->get_reader_page(cpu_buffer->cpu));
|
||||||
|
|
||||||
WARN_ON(cpu_buffer->writer->get_reader_page(cpu_buffer->cpu));
|
|
||||||
/* nr_pages doesn't include the reader page */
|
/* nr_pages doesn't include the reader page */
|
||||||
if (cpu_buffer->meta_page->reader.id > cpu_buffer->nr_pages) {
|
if (cpu_buffer->meta_page->reader.id > cpu_buffer->nr_pages) {
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
@@ -5301,7 +5302,8 @@ __rb_get_reader_page_from_writer(struct ring_buffer_per_cpu *cpu_buffer)
|
|||||||
cpu_buffer->read_stamp = cpu_buffer->reader_page->page->time_stamp;
|
cpu_buffer->read_stamp = cpu_buffer->reader_page->page->time_stamp;
|
||||||
cpu_buffer->lost_events = cpu_buffer->meta_page->reader.lost_events;
|
cpu_buffer->lost_events = cpu_buffer->meta_page->reader.lost_events;
|
||||||
|
|
||||||
WARN_ON(prev_reader == cpu_buffer->meta_page->reader.id);
|
WARN_ON(!IS_ENABLED(CONFIG_PKVM_DUMP_TRACE_ON_PANIC) &&
|
||||||
|
prev_reader == cpu_buffer->meta_page->reader.id);
|
||||||
|
|
||||||
if (!rb_page_size(cpu_buffer->reader_page))
|
if (!rb_page_size(cpu_buffer->reader_page))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user