]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Drop ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch from...
authorSasha Levin <sashal@kernel.org>
Mon, 15 Apr 2024 08:53:55 +0000 (04:53 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 15 Apr 2024 08:53:55 +0000 (04:53 -0400)
queue-5.10/ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch [deleted file]
queue-5.10/series
queue-5.4/ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch [deleted file]
queue-5.4/series

diff --git a/queue-5.10/ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch b/queue-5.10/ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch
deleted file mode 100644 (file)
index a302562..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-From ffe3986fece696cf65e0ef99e74c75f848be8e30 Mon Sep 17 00:00:00 2001
-From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
-Date: Tue, 9 Apr 2024 15:13:09 -0400
-Subject: ring-buffer: Only update pages_touched when a new page is touched
-
-From: Steven Rostedt (Google) <rostedt@goodmis.org>
-
-commit ffe3986fece696cf65e0ef99e74c75f848be8e30 upstream.
-
-The "buffer_percent" logic that is used by the ring buffer splice code to
-only wake up the tasks when there's no data after the buffer is filled to
-the percentage of the "buffer_percent" file is dependent on three
-variables that determine the amount of data that is in the ring buffer:
-
- 1) pages_read - incremented whenever a new sub-buffer is consumed
- 2) pages_lost - incremented every time a writer overwrites a sub-buffer
- 3) pages_touched - incremented when a write goes to a new sub-buffer
-
-The percentage is the calculation of:
-
-  (pages_touched - (pages_lost + pages_read)) / nr_pages
-
-Basically, the amount of data is the total number of sub-bufs that have been
-touched, minus the number of sub-bufs lost and sub-bufs consumed. This is
-divided by the total count to give the buffer percentage. When the
-percentage is greater than the value in the "buffer_percent" file, it
-wakes up splice readers waiting for that amount.
-
-It was observed that over time, the amount read from the splice was
-constantly decreasing the longer the trace was running. That is, if one
-asked for 60%, it would read over 60% when it first starts tracing, but
-then it would be woken up at under 60% and would slowly decrease the
-amount of data read after being woken up, where the amount becomes much
-less than the buffer percent.
-
-This was due to an accounting of the pages_touched incrementation. This
-value is incremented whenever a writer transfers to a new sub-buffer. But
-the place where it was incremented was incorrect. If a writer overflowed
-the current sub-buffer it would go to the next one. If it gets preempted
-by an interrupt at that time, and the interrupt performs a trace, it too
-will end up going to the next sub-buffer. But only one should increment
-the counter. Unfortunately, that was not the case.
-
-Change the cmpxchg() that does the real switch of the tail-page into a
-try_cmpxchg(), and on success, perform the increment of pages_touched. This
-will only increment the counter once for when the writer moves to a new
-sub-buffer, and not when there's a race and is incremented for when a
-writer and its preempting writer both move to the same new sub-buffer.
-
-Link: https://lore.kernel.org/linux-trace-kernel/20240409151309.0d0e5056@gandalf.local.home
-
-Cc: stable@vger.kernel.org
-Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Fixes: 2c2b0a78b3739 ("ring-buffer: Add percentage of ring buffer full to wake up reader")
-Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/trace/ring_buffer.c |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/kernel/trace/ring_buffer.c
-+++ b/kernel/trace/ring_buffer.c
-@@ -1439,7 +1439,6 @@ static void rb_tail_page_update(struct r
-       old_write = local_add_return(RB_WRITE_INTCNT, &next_page->write);
-       old_entries = local_add_return(RB_WRITE_INTCNT, &next_page->entries);
--      local_inc(&cpu_buffer->pages_touched);
-       /*
-        * Just make sure we have seen our old_write and synchronize
-        * with any interrupts that come in.
-@@ -1476,8 +1475,9 @@ static void rb_tail_page_update(struct r
-                */
-               local_set(&next_page->page->commit, 0);
--              /* Again, either we update tail_page or an interrupt does */
--              (void)cmpxchg(&cpu_buffer->tail_page, tail_page, next_page);
-+              /* Either we update tail_page or an interrupt does */
-+              if (try_cmpxchg(&cpu_buffer->tail_page, &tail_page, next_page))
-+                      local_inc(&cpu_buffer->pages_touched);
-       }
- }
index 5ebe62a63d7c572df3f0b0ef1747b8fc8cb7e737..e781fabc2ab919704deeaa164be5f90216bdd1e8 100644 (file)
@@ -1,4 +1,3 @@
 batman-adv-avoid-infinite-loop-trying-to-resize-local-tt.patch
-ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch
 bluetooth-fix-memory-leak-in-hci_req_sync_complete.patch
 media-cec-core-remove-length-check-of-timer-status.patch
diff --git a/queue-5.4/ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch b/queue-5.4/ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch
deleted file mode 100644 (file)
index 73eefd6..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-From ffe3986fece696cf65e0ef99e74c75f848be8e30 Mon Sep 17 00:00:00 2001
-From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
-Date: Tue, 9 Apr 2024 15:13:09 -0400
-Subject: ring-buffer: Only update pages_touched when a new page is touched
-
-From: Steven Rostedt (Google) <rostedt@goodmis.org>
-
-commit ffe3986fece696cf65e0ef99e74c75f848be8e30 upstream.
-
-The "buffer_percent" logic that is used by the ring buffer splice code to
-only wake up the tasks when there's no data after the buffer is filled to
-the percentage of the "buffer_percent" file is dependent on three
-variables that determine the amount of data that is in the ring buffer:
-
- 1) pages_read - incremented whenever a new sub-buffer is consumed
- 2) pages_lost - incremented every time a writer overwrites a sub-buffer
- 3) pages_touched - incremented when a write goes to a new sub-buffer
-
-The percentage is the calculation of:
-
-  (pages_touched - (pages_lost + pages_read)) / nr_pages
-
-Basically, the amount of data is the total number of sub-bufs that have been
-touched, minus the number of sub-bufs lost and sub-bufs consumed. This is
-divided by the total count to give the buffer percentage. When the
-percentage is greater than the value in the "buffer_percent" file, it
-wakes up splice readers waiting for that amount.
-
-It was observed that over time, the amount read from the splice was
-constantly decreasing the longer the trace was running. That is, if one
-asked for 60%, it would read over 60% when it first starts tracing, but
-then it would be woken up at under 60% and would slowly decrease the
-amount of data read after being woken up, where the amount becomes much
-less than the buffer percent.
-
-This was due to an accounting of the pages_touched incrementation. This
-value is incremented whenever a writer transfers to a new sub-buffer. But
-the place where it was incremented was incorrect. If a writer overflowed
-the current sub-buffer it would go to the next one. If it gets preempted
-by an interrupt at that time, and the interrupt performs a trace, it too
-will end up going to the next sub-buffer. But only one should increment
-the counter. Unfortunately, that was not the case.
-
-Change the cmpxchg() that does the real switch of the tail-page into a
-try_cmpxchg(), and on success, perform the increment of pages_touched. This
-will only increment the counter once for when the writer moves to a new
-sub-buffer, and not when there's a race and is incremented for when a
-writer and its preempting writer both move to the same new sub-buffer.
-
-Link: https://lore.kernel.org/linux-trace-kernel/20240409151309.0d0e5056@gandalf.local.home
-
-Cc: stable@vger.kernel.org
-Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Fixes: 2c2b0a78b3739 ("ring-buffer: Add percentage of ring buffer full to wake up reader")
-Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/trace/ring_buffer.c |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/kernel/trace/ring_buffer.c
-+++ b/kernel/trace/ring_buffer.c
-@@ -1163,7 +1163,6 @@ static void rb_tail_page_update(struct r
-       old_write = local_add_return(RB_WRITE_INTCNT, &next_page->write);
-       old_entries = local_add_return(RB_WRITE_INTCNT, &next_page->entries);
--      local_inc(&cpu_buffer->pages_touched);
-       /*
-        * Just make sure we have seen our old_write and synchronize
-        * with any interrupts that come in.
-@@ -1200,8 +1199,9 @@ static void rb_tail_page_update(struct r
-                */
-               local_set(&next_page->page->commit, 0);
--              /* Again, either we update tail_page or an interrupt does */
--              (void)cmpxchg(&cpu_buffer->tail_page, tail_page, next_page);
-+              /* Either we update tail_page or an interrupt does */
-+              if (try_cmpxchg(&cpu_buffer->tail_page, &tail_page, next_page))
-+                      local_inc(&cpu_buffer->pages_touched);
-       }
- }
index 97def5ac8855fe5e1a2addd4ea907572e5cfc615..e7e060a244e4d0f1f2d9277e2fd53f3ffec62cea 100644 (file)
@@ -1,3 +1,2 @@
 batman-adv-avoid-infinite-loop-trying-to-resize-local-tt.patch
-ring-buffer-only-update-pages_touched-when-a-new-page-is-touched.patch
 bluetooth-fix-memory-leak-in-hci_req_sync_complete.patch