From: Gabriele Monaco <gmonaco@redhat.com>
To: wen.yang@linux.dev
Cc: Nam Cao <namcao@linutronix.de>,
linux-trace-kernel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 4/8] rv/ha: fix ha_invariant_passed_ns silent bypass of invariant check
Date: Mon, 20 Jul 2026 13:31:11 +0200 [thread overview]
Message-ID: <00f7a7c20cf8d29aa650bf7b2c5a392c15345989.camel@redhat.com> (raw)
In-Reply-To: <d83c7bff76922ba464d328758ec24b7bf41d4824.1783524627.git.wen.yang@linux.dev>
On Wed, 2026-07-08 at 23:38 +0800, wen.yang@linux.dev wrote:
> From: Wen Yang <wen.yang@linux.dev>
>
> When env_store is U64_MAX (its initial sentinel value),
> ha_invariant_passed_ns() returns 0 immediately without initializing
> env_store to the current clock. Subsequent calls to
> ha_check_invariant_ns() then find env_store still at U64_MAX, causing
> the elapsed comparison to wrap and always report the invariant as
> satisfied, silently masking any violations.
>
> Fix by calling ha_reset_clk_ns() to establish the guard on the first
> invocation instead of returning early. Apply the same fix to
> ha_invariant_passed_jiffy().
>
> Signed-off-by: Wen Yang <wen.yang@linux.dev>
While this looks alright, I have something else in mind for the env variables
lifecycle. After [1] is merged, I'd like to merge [2] which is basically
inspired on your idea of resetting variables on start, just it's embedded in the
framework (and requires [1] to get rid of the double representation for env
variables).
This is probably going to happen after the next merge window.
I believe you can keep this patch for now and your model wouldn't need change
after adding [2] instead.
Thoughts?
Thanks,
Gabriele
[1] -
https://lore.kernel.org/lkml/c0f600dcbf3d8b487c944406851a39146f4d91fa.1781847583.git.namcao@linutronix.de/
[2] -
https://web.git.kernel.org/pub/scm/linux/kernel/git/gmonaco/linux.git/commit/?h=rv_hybrid_automata_enq_lark&id=d7c5c40c81d9b928aa9f86c4115429bffd223a8c
> ---
> include/rv/ha_monitor.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/rv/ha_monitor.h b/include/rv/ha_monitor.h
> index 83199f90afe8..dddf5694bcc8 100644
> --- a/include/rv/ha_monitor.h
> +++ b/include/rv/ha_monitor.h
> @@ -375,12 +375,12 @@ static inline bool ha_check_invariant_ns(struct
> ha_monitor *ha_mon,
> static inline u64 ha_invariant_passed_ns(struct ha_monitor *ha_mon, enum envs
> env,
> u64 expire, u64 time_ns)
> {
> - u64 passed = 0;
> + u64 passed;
>
> if (env < 0 || env >= ENV_MAX_STORED)
> return 0;
> if (ha_monitor_env_invalid(ha_mon, env))
> - return 0;
> + ha_reset_clk_ns(ha_mon, env, time_ns);
> passed = ha_get_env(ha_mon, env, time_ns);
> ha_set_invariant_ns(ha_mon, env, expire - passed, time_ns);
> return passed;
> @@ -414,12 +414,12 @@ static inline bool ha_check_invariant_jiffy(struct
> ha_monitor *ha_mon,
> static inline u64 ha_invariant_passed_jiffy(struct ha_monitor *ha_mon, enum
> envs env,
> u64 expire, u64 time_ns)
> {
> - u64 passed = 0;
> + u64 passed;
>
> if (env < 0 || env >= ENV_MAX_STORED)
> return 0;
> if (ha_monitor_env_invalid(ha_mon, env))
> - return 0;
> + ha_reset_clk_jiffy(ha_mon, env);
> passed = ha_get_env(ha_mon, env, time_ns);
> ha_set_invariant_jiffy(ha_mon, env, expire - passed);
> return passed;
next prev parent reply other threads:[~2026-07-20 11:31 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-08 15:38 [PATCH v4 0/8] rv/tlob: Add task latency over budget RV monitor wen.yang
2026-07-08 15:38 ` [PATCH v4 1/8] rv/da: introduce DA_MON_ALLOCATION_STRATEGY wen.yang
2026-07-17 13:46 ` Gabriele Monaco
2026-07-20 10:23 ` Gabriele Monaco
2026-07-08 15:38 ` [PATCH v4 2/8] rv: add generic uprobe infrastructure for RV monitors wen.yang
2026-07-20 15:22 ` Gabriele Monaco
2026-07-08 15:38 ` [PATCH v4 3/8] rv/tlob: add tlob model DOT file wen.yang
2026-07-08 15:38 ` [PATCH v4 4/8] rv/ha: fix ha_invariant_passed_ns silent bypass of invariant check wen.yang
2026-07-20 11:31 ` Gabriele Monaco [this message]
2026-07-08 15:38 ` [PATCH v4 5/8] rv/ha: make da_monitor_reset_hook and EVENT_NONE_LBL overridable wen.yang
2026-07-08 15:38 ` [PATCH v4 6/8] rv/tlob: add tlob hybrid automaton monitor wen.yang
2026-07-20 14:49 ` Gabriele Monaco
2026-07-08 15:38 ` [PATCH v4 7/8] rv/tlob: add KUnit tests for the tlob monitor wen.yang
2026-07-08 15:38 ` [PATCH v4 8/8] selftests/verification: add tlob selftests wen.yang
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=00f7a7c20cf8d29aa650bf7b2c5a392c15345989.camel@redhat.com \
--to=gmonaco@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=namcao@linutronix.de \
--cc=wen.yang@linux.dev \
/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.