All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Gabriele Monaco <gmonaco@redhat.com>,
	Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Subject: [GIT PULL] rv: Fix for v7.0
Date: Sat, 21 Feb 2026 14:49:01 -0500	[thread overview]
Message-ID: <20260221144901.32df319e@fedora> (raw)


Linus,

rv fixes for v7.0

Summary of changes:

- Fix multiple definition of __pcpu_unique_da_mon_this

  After refactoring monitors, we used static per-cpu variables with the
  same names across different per-cpu monitors. This is explicitly
  disallowed for modules on some architectures (alpha) or if
  CONFIG_DEBUG_FORCE_WEAK_PER_CPU is enabled (e.g. Fedora's debug
  kernel). Make sure all those variables have different names to avoid
  compilation issues.


Please pull the latest trace-rv-7.0-2 tree, which can be found at:


  git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
trace-rv-7.0-2

Tag SHA1: a51eb54ed35fd31ef6f245e8d3a9c99dd2b2d3eb
Head SHA1: 75f3cf0d1561b0a1cfa97ee35d78ca0118e584d5


Mikhail Gavrilov (1):
      rv: Fix multiple definition of __pcpu_unique_da_mon_this

----
 include/rv/da_monitor.h | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)
---------------------------
commit 75f3cf0d1561b0a1cfa97ee35d78ca0118e584d5
Author: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Date:   Mon Feb 16 22:27:07 2026 +0500

    rv: Fix multiple definition of __pcpu_unique_da_mon_this
    
    The refactoring in commit 30984ccf31b7 ("rv: Refactor da_monitor to
    minimise macros") replaced per-monitor unique variable names
    (da_mon_##name) with a fixed name (da_mon_this).
    
    While this works for 'static' variables (each translation unit gets its
    own copy), DEFINE_PER_CPU internally generates a non-static dummy
    variable __pcpu_unique_<n> for each per-cpu definition. The requirement
    for this variable to be unique although static exists for modules on
    specific architectures (alpha) and if the kernel is built with
    CONFIG_DEBUG_FORCE_WEAK_PER_CPU (e.g. Fedora's debug kernel).
    
    When multiple per-cpu monitors (e.g. sco and sts) are built-in
    simultaneously, they all produce the same __pcpu_unique_da_mon_this
    symbol, causing a link error:
    
      ld: kernel/trace/rv/monitors/sts/sts.o: multiple definition of
          `__pcpu_unique_da_mon_this';
          kernel/trace/rv/monitors/sco/sco.o: first defined here
    
    Fix this by introducing a DA_MON_NAME macro that expands to a
    per-monitor unique name (da_mon_<MONITOR_NAME>) via the existing
    CONCATENATE helper. This restores the uniqueness that was present
    before the refactoring.
    
    Fixes: 30984ccf31b7 ("rv: Refactor da_monitor to minimise macros")
    Reviewed-by: Gabriele Monaco <gmonaco@redhat.com>
    Signed-off-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
    Link: https://lore.kernel.org/r/20260216172707.1441516-1-mikhail.v.gavrilov@gmail.com
    Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>

diff --git a/include/rv/da_monitor.h b/include/rv/da_monitor.h
index db11d41bb438..7511f5464c48 100644
--- a/include/rv/da_monitor.h
+++ b/include/rv/da_monitor.h
@@ -20,6 +20,12 @@
 #include <linux/bug.h>
 #include <linux/sched.h>
 
+/*
+ * Per-cpu variables require a unique name although static in some
+ * configurations (e.g. CONFIG_DEBUG_FORCE_WEAK_PER_CPU or alpha modules).
+ */
+#define DA_MON_NAME CONCATENATE(da_mon_, MONITOR_NAME)
+
 static struct rv_monitor rv_this;
 
 static void react(enum states curr_state, enum events event)
@@ -183,14 +189,14 @@ static inline bool da_event(struct da_monitor *da_mon, struct task_struct *tsk,
 /*
  * global monitor (a single variable)
  */
-static struct da_monitor da_mon_this;
+static struct da_monitor DA_MON_NAME;
 
 /*
  * da_get_monitor - return the global monitor address
  */
 static struct da_monitor *da_get_monitor(void)
 {
-	return &da_mon_this;
+	return &DA_MON_NAME;
 }
 
 /*
@@ -223,14 +229,14 @@ static inline void da_monitor_destroy(void) { }
 /*
  * per-cpu monitor variables
  */
-static DEFINE_PER_CPU(struct da_monitor, da_mon_this);
+static DEFINE_PER_CPU(struct da_monitor, DA_MON_NAME);
 
 /*
  * da_get_monitor - return current CPU monitor address
  */
 static struct da_monitor *da_get_monitor(void)
 {
-	return this_cpu_ptr(&da_mon_this);
+	return this_cpu_ptr(&DA_MON_NAME);
 }
 
 /*
@@ -242,7 +248,7 @@ static void da_monitor_reset_all(void)
 	int cpu;
 
 	for_each_cpu(cpu, cpu_online_mask) {
-		da_mon = per_cpu_ptr(&da_mon_this, cpu);
+		da_mon = per_cpu_ptr(&DA_MON_NAME, cpu);
 		da_monitor_reset(da_mon);
 	}
 }

             reply	other threads:[~2026-02-21 19:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-21 19:49 Steven Rostedt [this message]
2026-02-22 20:19 ` [GIT PULL] rv: Fix for v7.0 pr-tracker-bot

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=20260221144901.32df319e@fedora \
    --to=rostedt@goodmis.org \
    --cc=gmonaco@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikhail.v.gavrilov@gmail.com \
    --cc=torvalds@linux-foundation.org \
    /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.