From: Tim Chen <tim.c.chen@linux.intel.com>
To: "Chen, Yu C" <yu.c.chen@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>
Cc: Juri Lelli <juri.lelli@redhat.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>,
Tim Chen <tim.c.chen@intel.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Len Brown <len.brown@intel.com>,
linux-kernel@vger.kernel.org,
K Prateek Nayak <kprateek.nayak@amd.com>,
"Gautham R . Shenoy" <gautham.shenoy@amd.com>,
Zhao Liu <zhao1.liu@intel.com>,
Vinicius Costa Gomes <vinicius.gomes@intel.com>,
Arjan Van De Ven <arjan.van.de.ven@intel.com>
Subject: Re: [PATCH v4 1/2] sched: Create architecture specific sched domain distances
Date: Tue, 30 Sep 2025 10:30:36 -0700 [thread overview]
Message-ID: <6446b46bb8750deb28687b3e84d9b6062a35c86a.camel@linux.intel.com> (raw)
In-Reply-To: <79db86a1-dc75-42ca-9cff-927539dc2104@intel.com>
On Tue, 2025-09-30 at 10:28 +0800, Chen, Yu C wrote:
> On 9/30/2025 6:18 AM, Tim Chen wrote:
> > On Sat, 2025-09-27 at 20:34 +0800, Chen, Yu C wrote:
> > >
[snip]
> > >
> > > If our goal is to figure out whether the arch_sched_node_distance()
> > > has been overridden, how about the following alias?
> > >
> > > int __weak arch_sched_node_distance(int from, int to)
> > > {
> > > return __node_distance(from, to);
> > > }
> > > int arch_sched_node_distance_original(int from, int to) __weak
> > > __alias(arch_sched_node_distance);
> > >
> > > static bool arch_sched_node_distance_is_overridden(void)
> > > {
> > > return arch_sched_node_distance != arch_sched_node_distance_original;
> > > }
> > >
> > > so arch_sched_node_distance_is_overridden() can replace
> > > modified_sched_node_distance()
> > >
> >
> > I think that the alias version will still point to the replaced function and not
> > the originally defined one.
> >
> > How about not using __weak and just explicitly define arch_sched_node_distance
> > as a function pointer. Change the code like below.
> >
>
> The arch_sched_node_distance_original is defined as __weak, so it
> should point to the old function even if the function has been
> overridden. I did a test on a X86 VM and it seems to be so.
> But using the arch_sched_node_distance as a function point
> should also be OK.
>
How about changing the code as follow. I think this change is cleaner.
I tested it in my VM and works for detecting sched distance substitution.
Thanks.
Tim
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
index f25e4402c63e..3dc941258df3 100644
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -1897,31 +1897,17 @@ static void init_numa_topology_type(int offline_node)
* A NUMA level is created for each unique
* arch_sched_node_distance.
*/
-static bool __modified_sched_node_dist = true;
-
-int __weak arch_sched_node_distance(int from, int to)
+static int numa_node_dist(int i, int j)
{
- if (__modified_sched_node_dist)
- __modified_sched_node_dist = false;
-
- return node_distance(from, to);
+ return node_distance(i, j);
}
-static bool modified_sched_node_distance(void)
-{
- /*
- * Call arch_sched_node_distance()
- * to determine if arch_sched_node_distance
- * has been modified from node_distance()
- * to arch specific distance.
- */
- arch_sched_node_distance(0, 0);
- return __modified_sched_node_dist;
-}
+int arch_sched_node_distance(int from, int to)
+ __weak __alias(numa_node_dist);
-static int numa_node_dist(int i, int j)
+static bool modified_sched_node_distance(void)
{
- return node_distance(i, j);
+ return numa_node_dist != arch_sched_node_distance;
}
static int sched_record_numa_dist(int offline_node, int (*n_dist)(int, int),
next prev parent reply other threads:[~2025-09-30 17:30 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-19 17:50 [PATCH v4 0/2] Fix NUMA sched domain build errors for GNR and CWF Tim Chen
2025-09-19 17:50 ` [PATCH v4 1/2] sched: Create architecture specific sched domain distances Tim Chen
2025-09-27 12:34 ` Chen, Yu C
2025-09-29 22:18 ` Tim Chen
2025-09-30 2:28 ` Chen, Yu C
2025-09-30 17:30 ` Tim Chen [this message]
2025-10-01 1:10 ` Chen, Yu C
2025-09-19 17:50 ` [PATCH v4 2/2] sched/topology: Fix sched domain build error for GNR, CWF in SNC-3 mode Tim Chen
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=6446b46bb8750deb28687b3e84d9b6062a35c86a.camel@linux.intel.com \
--to=tim.c.chen@linux.intel.com \
--cc=arjan.van.de.ven@intel.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=gautham.shenoy@amd.com \
--cc=juri.lelli@redhat.com \
--cc=kprateek.nayak@amd.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tim.c.chen@intel.com \
--cc=vincent.guittot@linaro.org \
--cc=vinicius.gomes@intel.com \
--cc=vschneid@redhat.com \
--cc=yu.c.chen@intel.com \
--cc=zhao1.liu@intel.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.