From: Petr Mladek <pmladek@suse.com>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com,
Andrew Morton <akpm@linux-foundation.org>,
Kuniyuki Iwashima <kuniyu@amazon.com>,
Mateusz Guzik <mjguzik@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
John Ogness <john.ogness@linutronix.de>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Jon Pan-Doh <pandoh@google.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Karolina Stolarek <karolina.stolarek@oracle.com>,
Bert Karwatzki <spasswolf@web.de>,
"Aithal, Srikanth" <sraithal@amd.com>,
Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH v3 10/20] ratelimit: Allow zero ->burst to disable ratelimiting
Date: Mon, 28 Apr 2025 16:57:51 +0200 [thread overview]
Message-ID: <aA-Xb89sgQd5ZaGO@pathway.suse.cz> (raw)
In-Reply-To: <20250425002826.3431914-10-paulmck@kernel.org>
On Thu 2025-04-24 17:28:16, Paul E. McKenney wrote:
> If ->interval is zero, then rate-limiting will be disabled.
> Alternatively, if interval is greater than zero and ->burst is zero,
> then rate-limiting will be applied unconditionally.
>
> Therefore, make this classification be lockless.
>
> Note that although negative ->interval and ->burst happen to be treated
> as if they were zero, this is an accident of the current implementation.
> The semantics of negative values for these fields is subject to change
> without notice. Especially given that Bert Karwatzki determined that
> current calls to ___ratelimit() currently never have negative values
> for these fields.
>
> This commit replaces an earlier buggy versions.
If there was another revision then it would be nice to explicitly
describe also the reason why both zero ->interval and ->burst never
rate-limits. It is the state when the structure is zeroed. Some
existing code relied in this behavior.
If I get it correctly then this is the difference between this and
the previous version of this patch. And the previous version
caused regressions described by the Links...
> Link: https://lore.kernel.org/all/fbe93a52-365e-47fe-93a4-44a44547d601@paulmck-laptop/
> Link: https://lore.kernel.org/all/20250423115409.3425-1-spasswolf@web.de/
> Reported-by: Bert Karwatzki <spasswolf@web.de>
> Reported-by: "Aithal, Srikanth" <sraithal@amd.com>
> Closes: https://lore.kernel.org/all/20250423115409.3425-1-spasswolf@web.de/
> Reported-by: Mark Brown <broonie@kernel.org>
> Closes: https://lore.kernel.org/all/257c3b91-e30f-48be-9788-d27a4445a416@sirena.org.uk/
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> Tested-by: "Aithal, Srikanth" <sraithal@amd.com>
Otherwise, it looks good to me:
Reviewed-by: Petr Mladek <pmladek@suse.com>
Best Regards,
Petr
next prev parent reply other threads:[~2025-04-28 14:57 UTC|newest]
Thread overview: 137+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 21:14 [PATCH RFC 0/9] Reduce ratelimit's false-positive misses Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 1/9] ratelimit: Create functions to handle ratelimit_state internals Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 2/9] random: Avoid open-coded use of ratelimit_state structure's ->missed field Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 3/9] drm/i915: " Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 4/9] drm/amd/pm: Avoid open-coded use of ratelimit_state structure's internals Paul E. McKenney
2025-04-07 14:35 ` Deucher, Alexander
2025-04-07 16:29 ` Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 5/9] ratelimit: Convert the ->missed field to atomic_t Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 6/9] ratelimit: Count misses due to lock contention Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 7/9] ratelimit: Avoid jiffies=0 special case Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 8/9] ratelimit: Reduce ratelimit's false-positive misses Paul E. McKenney
2025-04-05 9:17 ` Mateusz Guzik
2025-04-06 17:41 ` Paul E. McKenney
2025-04-07 0:07 ` Mateusz Guzik
2025-04-07 16:54 ` Paul E. McKenney
2025-04-08 16:41 ` Petr Mladek
2025-04-08 17:56 ` Paul E. McKenney
2025-04-03 21:15 ` [PATCH RFC 9/9] lib: Add trivial kunit test for ratelimit Paul E. McKenney
2025-04-18 17:13 ` [PATCH RFC 0/9] Reduce ratelimit's false-positive misses Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 01/14] lib: Add trivial kunit test for ratelimit Paul E. McKenney
2025-04-22 14:44 ` Petr Mladek
2025-04-22 22:56 ` Paul E. McKenney
2025-04-23 9:36 ` Petr Mladek
2025-04-18 17:13 ` [PATCH v2 ratelimit 02/14] ratelimit: Create functions to handle ratelimit_state internals Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 03/14] random: Avoid open-coded use of ratelimit_state structure's ->missed field Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 04/14] drm/i915: " Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 05/14] drm/amd/pm: Avoid open-coded use of ratelimit_state structure's internals Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 06/14] ratelimit: Convert the ->missed field to atomic_t Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 07/14] ratelimit: Count misses due to lock contention Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 08/14] ratelimit: Avoid jiffies=0 special case Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 09/14] ratelimit: Reduce ___ratelimit() false-positive rate limiting Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 10/14] ratelimit: Allow zero ->burst to disable ratelimiting Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 11/14] ratelimit: Force re-initialization when rate-limiting re-enabled Paul E. McKenney
2025-04-23 15:59 ` Mark Brown
2025-04-23 18:20 ` Paul E. McKenney
2025-04-23 18:59 ` Mark Brown
2025-04-23 19:54 ` Paul E. McKenney
2025-04-24 12:11 ` Mark Brown
2025-04-24 14:48 ` Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 12/14] ratelimit: Don't flush misses counter if RATELIMIT_MSG_ON_RELEASE Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 13/14] ratelimit: Avoid atomic decrement if already rate-limited Paul E. McKenney
2025-04-18 17:13 ` [PATCH v2 ratelimit 14/14] ratelimit: Avoid atomic decrement under lock " Paul E. McKenney
2025-04-22 14:50 ` [PATCH RFC 0/9] Reduce ratelimit's false-positive misses Petr Mladek
2025-04-22 14:57 ` Paul E. McKenney
2025-04-25 0:27 ` Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 01/20] lib: Add trivial kunit test for ratelimit Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 02/20] ratelimit: Create functions to handle ratelimit_state internals Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 03/20] random: Avoid open-coded use of ratelimit_state structure's ->missed field Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 04/20] drm/i915: " Paul E. McKenney
2025-04-25 8:48 ` Jani Nikula
2025-04-25 14:27 ` Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 05/20] drm/amd/pm: Avoid open-coded use of ratelimit_state structure's internals Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 06/20] ratelimit: Convert the ->missed field to atomic_t Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 07/20] ratelimit: Count misses due to lock contention Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 08/20] ratelimit: Avoid jiffies=0 special case Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 09/20] ratelimit: Reduce ___ratelimit() false-positive rate limiting Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 10/20] ratelimit: Allow zero ->burst to disable ratelimiting Paul E. McKenney
2025-04-28 14:57 ` Petr Mladek [this message]
2025-04-28 19:50 ` Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 11/20] ratelimit: Force re-initialization when rate-limiting re-enabled Paul E. McKenney
2025-04-28 15:33 ` Petr Mladek
2025-04-28 19:49 ` Paul E. McKenney
2025-04-29 12:05 ` Petr Mladek
2025-04-29 18:47 ` Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 12/20] ratelimit: Don't flush misses counter if RATELIMIT_MSG_ON_RELEASE Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 13/20] ratelimit: Avoid atomic decrement if already rate-limited Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 14/20] ratelimit: Avoid atomic decrement under lock " Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 15/20] ratelimit: Warn if ->interval or ->burst are negative Paul E. McKenney
2025-04-29 12:23 ` Petr Mladek
2025-04-29 18:52 ` Paul E. McKenney
2025-04-25 0:28 ` [PATCH v3 16/20] ratelimit: Simplify common-case exit path Paul E. McKenney
2025-04-29 14:25 ` Petr Mladek
2025-04-25 0:28 ` [PATCH v3 17/20] ratelimit: Use nolock_ret label to save a couple of lines of code Paul E. McKenney
2025-04-29 14:26 ` Petr Mladek
2025-04-25 0:28 ` [PATCH v3 18/20] ratelimit: Use nolock_ret label to collapse lock-failure code Paul E. McKenney
2025-04-29 14:31 ` Petr Mladek
2025-04-25 0:28 ` [PATCH v3 19/20] ratelimit: Use nolock_ret restructuring to collapse common case code Paul E. McKenney
2025-04-29 14:37 ` Petr Mladek
2025-04-25 0:28 ` [PATCH v3 20/20] ratelimit: Drop redundant accesses to burst Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 0/20] ratelimit: Reduce ratelimit's false-positive misses Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 01/20] lib: Add trivial kunit test for ratelimit Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 02/20] ratelimit: Create functions to handle ratelimit_state internals Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 03/20] random: Avoid open-coded use of ratelimit_state structure's ->missed field Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 04/20] drm/i915: " Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 05/20] drm/amd/pm: Avoid open-coded use of ratelimit_state structure's internals Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 06/20] ratelimit: Convert the ->missed field to atomic_t Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 07/20] ratelimit: Count misses due to lock contention Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 08/20] ratelimit: Avoid jiffies=0 special case Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 09/20] ratelimit: Reduce ___ratelimit() false-positive rate limiting Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 10/20] ratelimit: Allow zero ->burst to disable ratelimiting Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 11/20] ratelimit: Force re-initialization when rate-limiting re-enabled Paul E. McKenney
2025-05-05 10:20 ` Petr Mladek
2025-04-30 1:05 ` [PATCH v4 12/20] ratelimit: Don't flush misses counter if RATELIMIT_MSG_ON_RELEASE Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 13/20] ratelimit: Avoid atomic decrement if already rate-limited Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 14/20] ratelimit: Avoid atomic decrement under lock " Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 15/20] ratelimit: Warn if ->interval or ->burst are negative Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 16/20] ratelimit: Simplify common-case exit path Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 17/20] ratelimit: Use nolock_ret label to save a couple of lines of code Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 18/20] ratelimit: Use nolock_ret label to collapse lock-failure code Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 19/20] ratelimit: Use nolock_ret restructuring to collapse common case code Paul E. McKenney
2025-04-30 1:05 ` [PATCH v4 20/20] ratelimit: Drop redundant accesses to burst Paul E. McKenney
2025-05-05 11:14 ` Petr Mladek
2025-05-05 11:37 ` [PATCH v4 0/20] ratelimit: Reduce ratelimit's false-positive misses Petr Mladek
2025-05-05 15:52 ` Paul E. McKenney
2025-05-08 23:32 ` [PATCH v5 0/21] " Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 01/21] ratelimit: Create functions to handle ratelimit_state internals Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 02/21] random: Avoid open-coded use of ratelimit_state structure's ->missed field Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 03/21] drm/i915: " Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 04/21] drm/amd/pm: Avoid open-coded use of ratelimit_state structure's internals Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 05/21] ratelimit: Convert the ->missed field to atomic_t Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 06/21] ratelimit: Count misses due to lock contention Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 07/21] ratelimit: Avoid jiffies=0 special case Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 08/21] ratelimit: Reduce ___ratelimit() false-positive rate limiting Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 09/21] ratelimit: Allow zero ->burst to disable ratelimiting Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 10/21] ratelimit: Force re-initialization when rate-limiting re-enabled Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 11/21] ratelimit: Don't flush misses counter if RATELIMIT_MSG_ON_RELEASE Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 12/21] ratelimit: Avoid atomic decrement if already rate-limited Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 13/21] ratelimit: Avoid atomic decrement under lock " Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 14/21] ratelimit: Warn if ->interval or ->burst are negative Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 15/21] ratelimit: Simplify common-case exit path Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 16/21] ratelimit: Use nolock_ret label to save a couple of lines of code Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 17/21] ratelimit: Use nolock_ret label to collapse lock-failure code Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 18/21] ratelimit: Use nolock_ret restructuring to collapse common case code Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 19/21] ratelimit: Drop redundant accesses to burst Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 20/21] lib: Add trivial kunit test for ratelimit Paul E. McKenney
2025-05-12 15:22 ` Petr Mladek
2025-05-13 21:17 ` Paul E. McKenney
2025-05-08 23:33 ` [PATCH v5 21/21] lib: Add stress " Paul E. McKenney
2025-07-09 18:00 ` [PATCH v6 0/3] ratelimit: Add tests for lib/ratelimit.c Paul E. McKenney
2025-07-09 18:03 ` [PATCH v6 1/3] lib: Add trivial kunit test for ratelimit Paul E. McKenney
2025-07-09 22:41 ` Andrew Morton
2025-07-09 22:46 ` Steven Rostedt
2025-07-09 23:01 ` Paul E. McKenney
2025-07-09 18:03 ` [PATCH v6 2/3] lib: Make the ratelimit test more reliable Paul E. McKenney
2025-07-09 22:44 ` Andrew Morton
2025-07-09 23:02 ` Paul E. McKenney
2025-07-09 18:03 ` [PATCH v6 3/3] lib: Add stress test for ratelimit Paul E. McKenney
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=aA-Xb89sgQd5ZaGO@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=akpm@linux-foundation.org \
--cc=bhelgaas@google.com \
--cc=broonie@kernel.org \
--cc=john.ogness@linutronix.de \
--cc=karolina.stolarek@oracle.com \
--cc=kernel-team@meta.com \
--cc=kuniyu@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mjguzik@gmail.com \
--cc=pandoh@google.com \
--cc=paulmck@kernel.org \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=spasswolf@web.de \
--cc=sraithal@amd.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.