From nobody Sun Feb 8 02:21:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97C7514A8B for ; Sat, 8 Mar 2025 03:26:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741404371; cv=none; b=qwEq/x6ibcJDibaVmLVJG2ysRKvKoUzKpHjXeBEm4hcJSHwsEZSu8EJIjVf76Y0Ixf9mpK1s3zDoID9ZVm6DKmsU0OHzu6LDiCFN8FLOB29W4LE2QDXSRGcbTAVsgHG0Byyy9JDdnmKxQ6ULp533r7CwM57UyQMNOWPM/z8ZKZw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741404371; c=relaxed/simple; bh=HCzxZX/4r0HnQhDRVk4ZS38XuOcxR871U/IaOXptd2c=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=i6Csi046hCvE8hzHsp7OGVCobPFyBfsrt09cTPyg+yHULcjm/GR5n2BA7Tmb4enTpN7RZqtO9ptyJ/jvkCtVT67M2v/QHFoRyZNOy30pilczooD0qIgb78n9Trc4JsoI6iyL9Jvr/QZG+PPnQ+IjPItrIVVH87+OUMlpHf/23Sw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F06EC4CEE2; Sat, 8 Mar 2025 03:26:11 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.98) (envelope-from ) id 1tqkpJ-00000000Ukr-0dqx; Fri, 07 Mar 2025 22:26:13 -0500 Message-ID: <20250308032613.007336181@goodmis.org> User-Agent: quilt/0.68 Date: Fri, 07 Mar 2025 22:24:33 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , John Kacur , Luis Goncalves , Tomas Glozar , Gabriele Monaco Subject: [for-next][PATCH 1/3] trace/osnoise: Add trace events for samples References: <20250308032432.109115966@goodmis.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Tomas Glozar Add trace events that fire at osnoise and timerlat sample generation, in addition to the already existing noise and threshold events. This allows processing the samples directly in the kernel, either with ftrace triggers or with BPF. Cc: John Kacur Cc: Luis Goncalves Link: https://lore.kernel.org/20250203090418.1458923-1-tglozar@redhat.com Signed-off-by: Tomas Glozar Tested-by: Gabriele Monaco Signed-off-by: Steven Rostedt (Google) --- include/trace/events/osnoise.h | 96 ++++++++++++++++++++++++++++++++++ kernel/trace/trace_osnoise.c | 55 ++++++------------- 2 files changed, 112 insertions(+), 39 deletions(-) diff --git a/include/trace/events/osnoise.h b/include/trace/events/osnoise.h index a2379a4f0684..3f4273623801 100644 --- a/include/trace/events/osnoise.h +++ b/include/trace/events/osnoise.h @@ -3,9 +3,105 @@ #define TRACE_SYSTEM osnoise =20 #if !defined(_OSNOISE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) + +#ifndef _OSNOISE_TRACE_H #define _OSNOISE_TRACE_H +/* + * osnoise sample structure definition. Used to store the statistics of a + * sample run. + */ +struct osnoise_sample { + u64 runtime; /* runtime */ + u64 noise; /* noise */ + u64 max_sample; /* max single noise sample */ + int hw_count; /* # HW (incl. hypervisor) interference */ + int nmi_count; /* # NMIs during this sample */ + int irq_count; /* # IRQs during this sample */ + int softirq_count; /* # softirqs during this sample */ + int thread_count; /* # threads during this sample */ +}; + +#ifdef CONFIG_TIMERLAT_TRACER +/* + * timerlat sample structure definition. Used to store the statistics of + * a sample run. + */ +struct timerlat_sample { + u64 timer_latency; /* timer_latency */ + unsigned int seqnum; /* unique sequence */ + int context; /* timer context */ +}; +#endif // CONFIG_TIMERLAT_TRACER +#endif // _OSNOISE_TRACE_H =20 #include +TRACE_EVENT(osnoise_sample, + + TP_PROTO(struct osnoise_sample *s), + + TP_ARGS(s), + + TP_STRUCT__entry( + __field( u64, runtime ) + __field( u64, noise ) + __field( u64, max_sample ) + __field( int, hw_count ) + __field( int, irq_count ) + __field( int, nmi_count ) + __field( int, softirq_count ) + __field( int, thread_count ) + ), + + TP_fast_assign( + __entry->runtime =3D s->runtime; + __entry->noise =3D s->noise; + __entry->max_sample =3D s->max_sample; + __entry->hw_count =3D s->hw_count; + __entry->irq_count =3D s->irq_count; + __entry->nmi_count =3D s->nmi_count; + __entry->softirq_count =3D s->softirq_count; + __entry->thread_count =3D s->thread_count; + ), + + TP_printk("runtime=3D%llu noise=3D%llu max_sample=3D%llu hw_count=3D%d" + " irq_count=3D%d nmi_count=3D%d softirq_count=3D%d" + " thread_count=3D%d", + __entry->runtime, + __entry->noise, + __entry->max_sample, + __entry->hw_count, + __entry->irq_count, + __entry->nmi_count, + __entry->softirq_count, + __entry->thread_count) +); + +#ifdef CONFIG_TIMERLAT_TRACER +TRACE_EVENT(timerlat_sample, + + TP_PROTO(struct timerlat_sample *s), + + TP_ARGS(s), + + TP_STRUCT__entry( + __field( u64, timer_latency ) + __field( unsigned int, seqnum ) + __field( int, context ) + ), + + TP_fast_assign( + __entry->timer_latency =3D s->timer_latency; + __entry->seqnum =3D s->seqnum; + __entry->context =3D s->context; + ), + + TP_printk("timer_latency=3D%llu seqnum=3D%u context=3D%d", + __entry->timer_latency, + __entry->seqnum, + __entry->context) +); +#endif // CONFIG_TIMERLAT_TRACER + TRACE_EVENT(thread_noise, =20 TP_PROTO(struct task_struct *t, u64 start, u64 duration), diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index f3a2722ee4c0..d7083526d922 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -315,33 +315,6 @@ static inline void osn_var_reset_all(void) */ bool trace_osnoise_callback_enabled; =20 -/* - * osnoise sample structure definition. Used to store the statistics of a - * sample run. - */ -struct osnoise_sample { - u64 runtime; /* runtime */ - u64 noise; /* noise */ - u64 max_sample; /* max single noise sample */ - int hw_count; /* # HW (incl. hypervisor) interference */ - int nmi_count; /* # NMIs during this sample */ - int irq_count; /* # IRQs during this sample */ - int softirq_count; /* # softirqs during this sample */ - int thread_count; /* # threads during this sample */ -}; - -#ifdef CONFIG_TIMERLAT_TRACER -/* - * timerlat sample structure definition. Used to store the statistics of - * a sample run. - */ -struct timerlat_sample { - u64 timer_latency; /* timer_latency */ - unsigned int seqnum; /* unique sequence */ - int context; /* timer context */ -}; -#endif - /* * Tracer data. */ @@ -497,7 +470,7 @@ static void print_osnoise_headers(struct seq_file *s) * Record an osnoise_sample into the tracer buffer. */ static void -__trace_osnoise_sample(struct osnoise_sample *sample, struct trace_buffer = *buffer) +__record_osnoise_sample(struct osnoise_sample *sample, struct trace_buffer= *buffer) { struct ring_buffer_event *event; struct osnoise_entry *entry; @@ -520,17 +493,19 @@ __trace_osnoise_sample(struct osnoise_sample *sample,= struct trace_buffer *buffe } =20 /* - * Record an osnoise_sample on all osnoise instances. + * Record an osnoise_sample on all osnoise instances and fire trace event. */ -static void trace_osnoise_sample(struct osnoise_sample *sample) +static void record_osnoise_sample(struct osnoise_sample *sample) { struct osnoise_instance *inst; struct trace_buffer *buffer; =20 + trace_osnoise_sample(sample); + rcu_read_lock(); list_for_each_entry_rcu(inst, &osnoise_instances, list) { buffer =3D inst->tr->array_buffer.buffer; - __trace_osnoise_sample(sample, buffer); + __record_osnoise_sample(sample, buffer); } rcu_read_unlock(); } @@ -574,7 +549,7 @@ static void print_timerlat_headers(struct seq_file *s) #endif /* CONFIG_PREEMPT_RT */ =20 static void -__trace_timerlat_sample(struct timerlat_sample *sample, struct trace_buffe= r *buffer) +__record_timerlat_sample(struct timerlat_sample *sample, struct trace_buff= er *buffer) { struct ring_buffer_event *event; struct timerlat_entry *entry; @@ -594,15 +569,17 @@ __trace_timerlat_sample(struct timerlat_sample *sampl= e, struct trace_buffer *buf /* * Record an timerlat_sample into the tracer buffer. */ -static void trace_timerlat_sample(struct timerlat_sample *sample) +static void record_timerlat_sample(struct timerlat_sample *sample) { struct osnoise_instance *inst; struct trace_buffer *buffer; =20 + trace_timerlat_sample(sample); + rcu_read_lock(); list_for_each_entry_rcu(inst, &osnoise_instances, list) { buffer =3D inst->tr->array_buffer.buffer; - __trace_timerlat_sample(sample, buffer); + __record_timerlat_sample(sample, buffer); } rcu_read_unlock(); } @@ -1608,7 +1585,7 @@ static int run_osnoise(void) /* Save interference stats info */ diff_osn_sample_stats(osn_var, &s); =20 - trace_osnoise_sample(&s); + record_osnoise_sample(&s); =20 notify_new_max_latency(max_noise); =20 @@ -1803,7 +1780,7 @@ static enum hrtimer_restart timerlat_irq(struct hrtim= er *timer) s.timer_latency =3D diff; s.context =3D IRQ_CONTEXT; =20 - trace_timerlat_sample(&s); + record_timerlat_sample(&s); =20 if (osnoise_data.stop_tracing) { if (time_to_us(diff) >=3D osnoise_data.stop_tracing) { @@ -1923,7 +1900,7 @@ static int timerlat_main(void *data) s.timer_latency =3D diff; s.context =3D THREAD_CONTEXT; =20 - trace_timerlat_sample(&s); + record_timerlat_sample(&s); =20 notify_new_max_latency(diff); =20 @@ -2529,7 +2506,7 @@ timerlat_fd_read(struct file *file, char __user *ubuf= , size_t count, s.timer_latency =3D diff; s.context =3D THREAD_URET; =20 - trace_timerlat_sample(&s); + record_timerlat_sample(&s); =20 notify_new_max_latency(diff); =20 @@ -2564,7 +2541,7 @@ timerlat_fd_read(struct file *file, char __user *ubuf= , size_t count, s.timer_latency =3D diff; s.context =3D THREAD_CONTEXT; =20 - trace_timerlat_sample(&s); + record_timerlat_sample(&s); =20 if (osnoise_data.stop_tracing_total) { if (time_to_us(diff) >=3D osnoise_data.stop_tracing_total) { --=20 2.47.2 From nobody Sun Feb 8 02:21:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97CA31862A for ; Sat, 8 Mar 2025 03:26:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741404371; cv=none; b=Kcue6JpRvk5+iLKYw2E0/b1F+nJHbxtEkwGjg/DkXzA19LT3MQZbD2sC1ECu8s8ZgZDdR+8yQdSnxG0FGclwNOlDR40YoixQ5mbBaZBe5Y1NziUVcNmNDa76Qo8BlxDCcF7sSeUchfliD6bq6wkegkCzdL5MBbSAhBLdzk1UavY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741404371; c=relaxed/simple; bh=e9U30m3LgCgpQUYidMqGakXlegNdQafEexM2bRXOWMA=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=pda20ASDbWFHWGkAG2a2uItwJ6GO+w9hMiA7lBGVAYeYlEhv6oZsu60FveSX+yuZalUkeD5vDSId2CMEZvTh/dcaV4vnYh+WiYrJg/gn5ZBbhA2T10eh32io8KjtpXDO0Eq+Xh5JaTJRvTZlGTZhmba8UxEMzrLf6zLSPfRhOqA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F6FAC4CEE8; Sat, 8 Mar 2025 03:26:11 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.98) (envelope-from ) id 1tqkpJ-00000000UlL-1Mt9; Fri, 07 Mar 2025 22:26:13 -0500 Message-ID: <20250308032613.178673641@goodmis.org> User-Agent: quilt/0.68 Date: Fri, 07 Mar 2025 22:24:34 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Frederic Weisbecker , Ingo Molnar , Peter Zijlstra , Juri Lelli , Gabriele Monaco Subject: [for-next][PATCH 2/3] tracing: Fix DECLARE_TRACE_CONDITION References: <20250308032432.109115966@goodmis.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gabriele Monaco Commit 287050d39026 ("tracing: Add TRACE_EVENT_CONDITIONAL()") adds macros to define conditional trace events (TRACE_EVENT_CONDITIONAL) and tracepoints (DECLARE_TRACE_CONDITION), but sets up functionality for direct use only for the former. Add preprocessor bits in define_trace.h to allow usage of DECLARE_TRACE_CONDITION just like DECLARE_TRACE. Cc: Mathieu Desnoyers Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Juri Lelli Link: https://lore.kernel.org/20250218123121.253551-2-gmonaco@redhat.com Fixes: 287050d39026 ("tracing: Add TRACE_EVENT_CONDITIONAL()") Link: https://lore.kernel.org/linux-trace-kernel/20250128111926.303093-1-gm= onaco@redhat.com Reviewed-by: Masami Hiramatsu (Google) Signed-off-by: Gabriele Monaco Signed-off-by: Steven Rostedt (Google) --- include/trace/define_trace.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h index e1c1079f8c8d..ed52d0506c69 100644 --- a/include/trace/define_trace.h +++ b/include/trace/define_trace.h @@ -76,6 +76,10 @@ #define DECLARE_TRACE(name, proto, args) \ DEFINE_TRACE(name, PARAMS(proto), PARAMS(args)) =20 +#undef DECLARE_TRACE_CONDITION +#define DECLARE_TRACE_CONDITION(name, proto, args, cond) \ + DEFINE_TRACE(name, PARAMS(proto), PARAMS(args)) + /* If requested, create helpers for calling these tracepoints from Rust. */ #ifdef CREATE_RUST_TRACE_POINTS #undef DEFINE_RUST_DO_TRACE @@ -108,6 +112,8 @@ /* Make all open coded DECLARE_TRACE nops */ #undef DECLARE_TRACE #define DECLARE_TRACE(name, proto, args) +#undef DECLARE_TRACE_CONDITION +#define DECLARE_TRACE_CONDITION(name, proto, args, cond) =20 #ifdef TRACEPOINTS_ENABLED #include @@ -129,6 +135,7 @@ #undef DEFINE_EVENT_CONDITION #undef TRACE_HEADER_MULTI_READ #undef DECLARE_TRACE +#undef DECLARE_TRACE_CONDITION =20 /* Only undef what we defined in this file */ #ifdef UNDEF_TRACE_INCLUDE_FILE --=20 2.47.2 From nobody Sun Feb 8 02:21:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B8DB214B96E for ; Sat, 8 Mar 2025 03:26:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741404371; cv=none; b=UP2QM57FyKCxqOc/fcPjzjW8dOgoBak4LWs1mX3AbApb12xQzi8KykO9Lq3EaNVQfhwuia2xdK/fauvVpj0MM1hT0Ad0ne+EPois1nlKRu9oEXA3++nq+MWAtIYbUq2VgdN6A3oR7IO/t4xvtInCYgD8ucJHe39cwHZ0PVd/6VY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741404371; c=relaxed/simple; bh=3la3ZTuD0xpvId0lrDivu5IdGwMRstaRwemIk2AxhaA=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=p5OJdy1q0c3NrB9mBEV7dCMLlrYEifK6N5gfzeHuzxF50Zdmisdr/wnCtueJTaRHrMBPOd5toaI+RRd9NafBBooBk8NIgQsIGXxZd0qjcC4a9WQfx/Do1R3RiOsLnoaZnAtMobA+0BibhuSBetsYrh4oD6qm1lXhlKn3MygslXI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55757C4CEEC; Sat, 8 Mar 2025 03:26:11 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.98) (envelope-from ) id 1tqkpJ-00000000Ulp-25Ii; Fri, 07 Mar 2025 22:26:13 -0500 Message-ID: <20250308032613.347917964@goodmis.org> User-Agent: quilt/0.68 Date: Fri, 07 Mar 2025 22:24:35 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Ingo Molnar , Peter Zijlstra , Juri Lelli , Gabriele Monaco Subject: [for-next][PATCH 3/3] rv: Add license identifiers to monitor files References: <20250308032432.109115966@goodmis.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gabriele Monaco Some monitor files like the main header and the Kconfig are missing the license identifier. Add it to those and make sure the automatic generation script includes the line in newly created monitors. Cc: Masami Hiramatsu Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Juri Lelli Link: https://lore.kernel.org/20250218123121.253551-3-gmonaco@redhat.com Signed-off-by: Gabriele Monaco Signed-off-by: Steven Rostedt (Google) --- kernel/trace/rv/monitors/wip/Kconfig | 2 ++ kernel/trace/rv/monitors/wip/wip.h | 1 + kernel/trace/rv/monitors/wwnr/Kconfig | 2 ++ kernel/trace/rv/monitors/wwnr/wwnr.h | 1 + tools/verification/dot2/dot2k.py | 1 + tools/verification/dot2/dot2k_templates/Kconfig | 2 ++ 6 files changed, 9 insertions(+) diff --git a/kernel/trace/rv/monitors/wip/Kconfig b/kernel/trace/rv/monitor= s/wip/Kconfig index 3ef664b5cd90..e464b9294865 100644 --- a/kernel/trace/rv/monitors/wip/Kconfig +++ b/kernel/trace/rv/monitors/wip/Kconfig @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only +# config RV_MON_WIP depends on RV depends on PREEMPT_TRACER diff --git a/kernel/trace/rv/monitors/wip/wip.h b/kernel/trace/rv/monitors/= wip/wip.h index 2e373f2c65ed..c7193748bf36 100644 --- a/kernel/trace/rv/monitors/wip/wip.h +++ b/kernel/trace/rv/monitors/wip/wip.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Automatically generated C representation of wip automaton * For further information about this format, see kernel documentation: diff --git a/kernel/trace/rv/monitors/wwnr/Kconfig b/kernel/trace/rv/monito= rs/wwnr/Kconfig index ee741aa6d6b8..d3bfc20037db 100644 --- a/kernel/trace/rv/monitors/wwnr/Kconfig +++ b/kernel/trace/rv/monitors/wwnr/Kconfig @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only +# config RV_MON_WWNR depends on RV select DA_MON_EVENTS_ID diff --git a/kernel/trace/rv/monitors/wwnr/wwnr.h b/kernel/trace/rv/monitor= s/wwnr/wwnr.h index d0d9c4b8121b..0a59d23edf61 100644 --- a/kernel/trace/rv/monitors/wwnr/wwnr.h +++ b/kernel/trace/rv/monitors/wwnr/wwnr.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Automatically generated C representation of wwnr automaton * For further information about this format, see kernel documentation: diff --git a/tools/verification/dot2/dot2k.py b/tools/verification/dot2/dot= 2k.py index 7547eb290b7d..153cc14bcca4 100644 --- a/tools/verification/dot2/dot2k.py +++ b/tools/verification/dot2/dot2k.py @@ -160,6 +160,7 @@ class dot2k(Dot2c): =20 def fill_model_h_header(self): buff =3D [] + buff.append("/* SPDX-License-Identifier: GPL-2.0 */") buff.append("/*") buff.append(" * Automatically generated C representation of %s aut= omaton" % (self.name)) buff.append(" * For further information about this format, see ker= nel documentation:") diff --git a/tools/verification/dot2/dot2k_templates/Kconfig b/tools/verifi= cation/dot2/dot2k_templates/Kconfig index 90cdc1e9379e..03100eda1707 100644 --- a/tools/verification/dot2/dot2k_templates/Kconfig +++ b/tools/verification/dot2/dot2k_templates/Kconfig @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only +# config RV_MON_%%MODEL_NAME_UP%% depends on RV select %%MONITOR_CLASS_TYPE%% --=20 2.47.2