linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] MIPS: CPS: Optimise delay CPU calibration and cluster helper function
@ 2025-07-08 13:46 Gregory CLEMENT
  2025-07-08 13:46 ` [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster() Gregory CLEMENT
  2025-07-08 13:46 ` [PATCH v3 2/2] MIPS: CPS: Optimise delay CPU calibration for SMP Gregory CLEMENT
  0 siblings, 2 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2025-07-08 13:46 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Jiaxun Yang, Vladimir Kondratiev, Théo Lebrun, Tawfik Bayouk,
	Thomas Petazzoni, linux-mips, linux-kernel, Gregory CLEMENT

This series allow booting faster by reusing the delay calibration
across the CPU belonging of the same cluster. While doing it we now
reuse the mips_cps_first_online_in_cluster() that we improve also.

This series enables faster booting by reusing delay calibration across
CPUs within the same cluster. During this process, we reuse the
improved mips_cps_first_online_in_cluster function.

With the introduction of this series, a configuration running 32 cores
spread across two clusters sees a significant reduction in boot time
by approximately 600 milliseconds.

Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
Changes in v3:
- Do not depend anymore of a Kconfig entry (suggested by Jiaxun).
- cpumask for cluster filled now later in cps_prepare_cpus().
- Patch 2 of the v2 has been removed.
- Link to v2: https://lore.kernel.org/r/20250704-smp_calib-v2-0-bade7e9c0463@bootlin.com

Changes in v2:
- Add a patch improving mips_cps_first_online_in_cluster()
- Use mips_cps_first_online_in_cluster() in calibrate_delay_is_known()
  as suggested by Jiaxun
- Link to v1: https://lore.kernel.org/r/20250520-smp_calib-v1-1-cd04f0a78648@bootlin.com

---
Gregory CLEMENT (2):
      MIPS: CPS: Improve mips_cps_first_online_in_cluster()
      MIPS: CPS: Optimise delay CPU calibration for SMP

 arch/mips/include/asm/mips-cps.h |  4 +++-
 arch/mips/include/asm/smp-cps.h  |  1 +
 arch/mips/kernel/mips-cm.c       | 47 ++++++++++++++--------------------------
 arch/mips/kernel/smp-cps.c       | 16 +++++++++++++-
 4 files changed, 35 insertions(+), 33 deletions(-)
---
base-commit: 86731a2a651e58953fc949573895f2fa6d456841
change-id: 20250520-smp_calib-6d3009e1f5b9

Best regards,
-- 
Grégory CLEMENT, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster()
  2025-07-08 13:46 [PATCH v3 0/2] MIPS: CPS: Optimise delay CPU calibration and cluster helper function Gregory CLEMENT
@ 2025-07-08 13:46 ` Gregory CLEMENT
  2025-07-08 21:42   ` Jiaxun Yang
  2025-07-09  1:04   ` kernel test robot
  2025-07-08 13:46 ` [PATCH v3 2/2] MIPS: CPS: Optimise delay CPU calibration for SMP Gregory CLEMENT
  1 sibling, 2 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2025-07-08 13:46 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Jiaxun Yang, Vladimir Kondratiev, Théo Lebrun, Tawfik Bayouk,
	Thomas Petazzoni, linux-mips, linux-kernel, Gregory CLEMENT

The initial implementation of this function goes through all the CPUs
in a cluster to determine if the current CPU is the only one
running. This process occurs every time the function is called.

However, during boot, we already perform this task, so let's take
advantage of this opportunity to create and fill a CPU bitmask that
can be easily and efficiently used later.

This patch modifies the function to allow providing the first
available online CPU when one already exists, which is necessary for
delay CPU calibration optimization.

Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
 arch/mips/include/asm/mips-cps.h |  4 +++-
 arch/mips/include/asm/smp-cps.h  |  1 +
 arch/mips/kernel/mips-cm.c       | 47 ++++++++++++++--------------------------
 arch/mips/kernel/smp-cps.c       |  5 ++++-
 4 files changed, 24 insertions(+), 33 deletions(-)

diff --git a/arch/mips/include/asm/mips-cps.h b/arch/mips/include/asm/mips-cps.h
index 917009b80e6951dc7e2b308ad7fb42cd9fbbf7d7..1fffd47a4564fb891d3c1e3ae3895b34d6700e5e 100644
--- a/arch/mips/include/asm/mips-cps.h
+++ b/arch/mips/include/asm/mips-cps.h
@@ -258,6 +258,8 @@ static inline bool mips_cps_multicluster_cpus(void)
 
 /**
  * mips_cps_first_online_in_cluster() - Detect if CPU is first online in cluster
+ * @first_cpu: The first other online CPU in cluster, or nr_cpu_ids if
+ * the function returns true.
  *
  * Determine whether the local CPU is the first to be brought online in its
  * cluster - that is, whether there are any other online CPUs in the local
@@ -265,6 +267,6 @@ static inline bool mips_cps_multicluster_cpus(void)
  *
  * Returns true if this CPU is first online, else false.
  */
-extern unsigned int mips_cps_first_online_in_cluster(void);
+extern unsigned int mips_cps_first_online_in_cluster(int *first_cpu);
 
 #endif /* __MIPS_ASM_MIPS_CPS_H__ */
diff --git a/arch/mips/include/asm/smp-cps.h b/arch/mips/include/asm/smp-cps.h
index 10d3ebd890cb2f3ac2b1db5a541cfe9e7f1a0c99..88cfae5d22c83e44451200ad3daae12fced03303 100644
--- a/arch/mips/include/asm/smp-cps.h
+++ b/arch/mips/include/asm/smp-cps.h
@@ -24,6 +24,7 @@ struct core_boot_config {
 
 struct cluster_boot_config {
 	unsigned long *core_power;
+	struct cpumask cpumask;
 	struct core_boot_config *core_config;
 };
 
diff --git a/arch/mips/kernel/mips-cm.c b/arch/mips/kernel/mips-cm.c
index 43cb1e20baed3648ff83bb5d3bbe6a726072e063..f49138f551d3c347c6a98afe05ad5027b0d91637 100644
--- a/arch/mips/kernel/mips-cm.c
+++ b/arch/mips/kernel/mips-cm.c
@@ -10,6 +10,7 @@
 #include <linux/spinlock.h>
 
 #include <asm/mips-cps.h>
+#include <asm/smp-cps.h>
 #include <asm/mipsregs.h>
 
 void __iomem *mips_gcr_base;
@@ -529,39 +530,23 @@ void mips_cm_error_report(void)
 	write_gcr_error_cause(cm_error);
 }
 
-unsigned int mips_cps_first_online_in_cluster(void)
+unsigned int mips_cps_first_online_in_cluster(int *first_cpu)
 {
-	unsigned int local_cl;
-	int i;
-
-	local_cl = cpu_cluster(&current_cpu_data);
+	unsigned int local_cl = cpu_cluster(&current_cpu_data);
+	struct cpumask *local_cl_mask;
 
 	/*
-	 * We rely upon knowledge that CPUs are numbered sequentially by
-	 * cluster - ie. CPUs 0..X will be in cluster 0, CPUs X+1..Y in cluster
-	 * 1, CPUs Y+1..Z in cluster 2 etc. This means that CPUs in the same
-	 * cluster will immediately precede or follow one another.
-	 *
-	 * First we scan backwards, until we find an online CPU in the cluster
-	 * or we move on to another cluster.
+	 * mips_cps_cluster_bootcfg is allocated in cps_prepare_cpus. If it is
+	 * not yet done, then we are so early that only one CPU is running, so
+	 * it is the first online CPU in the cluster.
 	 */
-	for (i = smp_processor_id() - 1; i >= 0; i--) {
-		if (cpu_cluster(&cpu_data[i]) != local_cl)
-			break;
-		if (!cpu_online(i))
-			continue;
-		return false;
-	}
-
-	/* Then do the same for higher numbered CPUs */
-	for (i = smp_processor_id() + 1; i < nr_cpu_ids; i++) {
-		if (cpu_cluster(&cpu_data[i]) != local_cl)
-			break;
-		if (!cpu_online(i))
-			continue;
-		return false;
-	}
-
-	/* We found no online CPUs in the local cluster */
-	return true;
+	if (mips_cps_cluster_bootcfg)
+		local_cl_mask = &mips_cps_cluster_bootcfg[local_cl].cpumask;
+	else
+		return true;
+
+	*first_cpu = cpumask_any_and_but(local_cl_mask,
+					 cpu_online_mask,
+					 smp_processor_id());
+	return (*first_cpu >= nr_cpu_ids);
 }
diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index 7b0e69af4097025196b93115139a5e89c1d71fcc..6c5f15293a8e58a701601b242f43ba19a6814f06 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -283,7 +283,7 @@ static void __init cps_smp_setup(void)
 
 static void __init cps_prepare_cpus(unsigned int max_cpus)
 {
-	unsigned int nclusters, ncores, core_vpes, c, cl, cca;
+	unsigned int nclusters, ncores, core_vpes, nvpe = 0, c, cl, cca;
 	bool cca_unsuitable, cores_limited;
 	struct cluster_boot_config *cluster_bootcfg;
 	struct core_boot_config *core_bootcfg;
@@ -356,10 +356,13 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
 
 		/* Allocate VPE boot configuration structs */
 		for (c = 0; c < ncores; c++) {
+			int v;
 			core_vpes = core_vpe_count(cl, c);
 			core_bootcfg[c].vpe_config = kcalloc(core_vpes,
 					sizeof(*core_bootcfg[c].vpe_config),
 					GFP_KERNEL);
+			for (v = 0; v < core_vpes; v++)
+				cpumask_set_cpu(nvpe++, &mips_cps_cluster_bootcfg[cl].cpumask);
 			if (!core_bootcfg[c].vpe_config)
 				goto err_out;
 		}

-- 
2.47.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 2/2] MIPS: CPS: Optimise delay CPU calibration for SMP
  2025-07-08 13:46 [PATCH v3 0/2] MIPS: CPS: Optimise delay CPU calibration and cluster helper function Gregory CLEMENT
  2025-07-08 13:46 ` [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster() Gregory CLEMENT
@ 2025-07-08 13:46 ` Gregory CLEMENT
  2025-07-08 21:42   ` Jiaxun Yang
  1 sibling, 1 reply; 6+ messages in thread
From: Gregory CLEMENT @ 2025-07-08 13:46 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Jiaxun Yang, Vladimir Kondratiev, Théo Lebrun, Tawfik Bayouk,
	Thomas Petazzoni, linux-mips, linux-kernel, Gregory CLEMENT

On MIPS architecture with CPS-based SMP support, all CPU cores in the
same cluster run at the same frequency since they share the same L2
cache, requiring a fixed CPU/L2 cache ratio.

This allows to implement calibrate_delay_is_known(), which will return
0 (triggering calibration) only for the primary CPU of each
cluster. For other CPUs, we can simply reuse the value from their
cluster's primary CPU core.

With the introduction of this patch, a configuration running 32 cores
spread across two clusters sees a significant reduction in boot time
by approximately 600 milliseconds.

Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
 arch/mips/kernel/smp-cps.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index 6c5f15293a8e58a701601b242f43ba19a6814f06..22d4f9ff3ae2671b07da5bb149154c686e07b209 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -281,6 +281,17 @@ static void __init cps_smp_setup(void)
 #endif /* CONFIG_MIPS_MT_FPAFF */
 }
 
+unsigned long calibrate_delay_is_known(void)
+{
+	int first_cpu_cluster = 0;
+
+	/* The calibration has to be done on the primary CPU of the cluster */
+	if (mips_cps_first_online_in_cluster(&first_cpu_cluster))
+		return 0;
+
+	return cpu_data[first_cpu_cluster].udelay_val;
+}
+
 static void __init cps_prepare_cpus(unsigned int max_cpus)
 {
 	unsigned int nclusters, ncores, core_vpes, nvpe = 0, c, cl, cca;

-- 
2.47.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster()
  2025-07-08 13:46 ` [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster() Gregory CLEMENT
@ 2025-07-08 21:42   ` Jiaxun Yang
  2025-07-09  1:04   ` kernel test robot
  1 sibling, 0 replies; 6+ messages in thread
From: Jiaxun Yang @ 2025-07-08 21:42 UTC (permalink / raw)
  To: Gregory CLEMENT, Thomas Bogendoerfer
  Cc: Vladimir Kondratiev, Théo Lebrun, Tawfik Bayouk,
	Thomas Petazzoni, linux-mips@vger.kernel.org, linux-kernel



在2025年7月8日周二 下午2:46,Gregory CLEMENT写道:
> The initial implementation of this function goes through all the CPUs
> in a cluster to determine if the current CPU is the only one
> running. This process occurs every time the function is called.
>
> However, during boot, we already perform this task, so let's take
> advantage of this opportunity to create and fill a CPU bitmask that
> can be easily and efficiently used later.
>
> This patch modifies the function to allow providing the first
> available online CPU when one already exists, which is necessary for
> delay CPU calibration optimization.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>

Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>

Many thanks for this optimised implementation!

Thanks
- Jiaxun

> ---
>  arch/mips/include/asm/mips-cps.h |  4 +++-
>  arch/mips/include/asm/smp-cps.h  |  1 +
>  arch/mips/kernel/mips-cm.c       | 47 ++++++++++++++--------------------------
>  arch/mips/kernel/smp-cps.c       |  5 ++++-
>  4 files changed, 24 insertions(+), 33 deletions(-)
>
> diff --git a/arch/mips/include/asm/mips-cps.h 
> b/arch/mips/include/asm/mips-cps.h
> index 
> 917009b80e6951dc7e2b308ad7fb42cd9fbbf7d7..1fffd47a4564fb891d3c1e3ae3895b34d6700e5e 
> 100644
> --- a/arch/mips/include/asm/mips-cps.h
> +++ b/arch/mips/include/asm/mips-cps.h
> @@ -258,6 +258,8 @@ static inline bool mips_cps_multicluster_cpus(void)
> 
>  /**
>   * mips_cps_first_online_in_cluster() - Detect if CPU is first online 
> in cluster
> + * @first_cpu: The first other online CPU in cluster, or nr_cpu_ids if
> + * the function returns true.
>   *
>   * Determine whether the local CPU is the first to be brought online 
> in its
>   * cluster - that is, whether there are any other online CPUs in the 
> local
> @@ -265,6 +267,6 @@ static inline bool mips_cps_multicluster_cpus(void)
>   *
>   * Returns true if this CPU is first online, else false.
>   */
> -extern unsigned int mips_cps_first_online_in_cluster(void);
> +extern unsigned int mips_cps_first_online_in_cluster(int *first_cpu);
> 
>  #endif /* __MIPS_ASM_MIPS_CPS_H__ */
> diff --git a/arch/mips/include/asm/smp-cps.h 
> b/arch/mips/include/asm/smp-cps.h
> index 
> 10d3ebd890cb2f3ac2b1db5a541cfe9e7f1a0c99..88cfae5d22c83e44451200ad3daae12fced03303 
> 100644
> --- a/arch/mips/include/asm/smp-cps.h
> +++ b/arch/mips/include/asm/smp-cps.h
> @@ -24,6 +24,7 @@ struct core_boot_config {
> 
>  struct cluster_boot_config {
>  	unsigned long *core_power;
> +	struct cpumask cpumask;
>  	struct core_boot_config *core_config;
>  };
> 
> diff --git a/arch/mips/kernel/mips-cm.c b/arch/mips/kernel/mips-cm.c
> index 
> 43cb1e20baed3648ff83bb5d3bbe6a726072e063..f49138f551d3c347c6a98afe05ad5027b0d91637 
> 100644
> --- a/arch/mips/kernel/mips-cm.c
> +++ b/arch/mips/kernel/mips-cm.c
> @@ -10,6 +10,7 @@
>  #include <linux/spinlock.h>
> 
>  #include <asm/mips-cps.h>
> +#include <asm/smp-cps.h>
>  #include <asm/mipsregs.h>
> 
>  void __iomem *mips_gcr_base;
> @@ -529,39 +530,23 @@ void mips_cm_error_report(void)
>  	write_gcr_error_cause(cm_error);
>  }
> 
> -unsigned int mips_cps_first_online_in_cluster(void)
> +unsigned int mips_cps_first_online_in_cluster(int *first_cpu)
>  {
> -	unsigned int local_cl;
> -	int i;
> -
> -	local_cl = cpu_cluster(&current_cpu_data);
> +	unsigned int local_cl = cpu_cluster(&current_cpu_data);
> +	struct cpumask *local_cl_mask;
> 
>  	/*
> -	 * We rely upon knowledge that CPUs are numbered sequentially by
> -	 * cluster - ie. CPUs 0..X will be in cluster 0, CPUs X+1..Y in 
> cluster
> -	 * 1, CPUs Y+1..Z in cluster 2 etc. This means that CPUs in the same
> -	 * cluster will immediately precede or follow one another.
> -	 *
> -	 * First we scan backwards, until we find an online CPU in the cluster
> -	 * or we move on to another cluster.
> +	 * mips_cps_cluster_bootcfg is allocated in cps_prepare_cpus. If it is
> +	 * not yet done, then we are so early that only one CPU is running, so
> +	 * it is the first online CPU in the cluster.
>  	 */
> -	for (i = smp_processor_id() - 1; i >= 0; i--) {
> -		if (cpu_cluster(&cpu_data[i]) != local_cl)
> -			break;
> -		if (!cpu_online(i))
> -			continue;
> -		return false;
> -	}
> -
> -	/* Then do the same for higher numbered CPUs */
> -	for (i = smp_processor_id() + 1; i < nr_cpu_ids; i++) {
> -		if (cpu_cluster(&cpu_data[i]) != local_cl)
> -			break;
> -		if (!cpu_online(i))
> -			continue;
> -		return false;
> -	}
> -
> -	/* We found no online CPUs in the local cluster */
> -	return true;
> +	if (mips_cps_cluster_bootcfg)
> +		local_cl_mask = &mips_cps_cluster_bootcfg[local_cl].cpumask;
> +	else
> +		return true;
> +
> +	*first_cpu = cpumask_any_and_but(local_cl_mask,
> +					 cpu_online_mask,
> +					 smp_processor_id());
> +	return (*first_cpu >= nr_cpu_ids);
>  }
> diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
> index 
> 7b0e69af4097025196b93115139a5e89c1d71fcc..6c5f15293a8e58a701601b242f43ba19a6814f06 
> 100644
> --- a/arch/mips/kernel/smp-cps.c
> +++ b/arch/mips/kernel/smp-cps.c
> @@ -283,7 +283,7 @@ static void __init cps_smp_setup(void)
> 
>  static void __init cps_prepare_cpus(unsigned int max_cpus)
>  {
> -	unsigned int nclusters, ncores, core_vpes, c, cl, cca;
> +	unsigned int nclusters, ncores, core_vpes, nvpe = 0, c, cl, cca;
>  	bool cca_unsuitable, cores_limited;
>  	struct cluster_boot_config *cluster_bootcfg;
>  	struct core_boot_config *core_bootcfg;
> @@ -356,10 +356,13 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
> 
>  		/* Allocate VPE boot configuration structs */
>  		for (c = 0; c < ncores; c++) {
> +			int v;
>  			core_vpes = core_vpe_count(cl, c);
>  			core_bootcfg[c].vpe_config = kcalloc(core_vpes,
>  					sizeof(*core_bootcfg[c].vpe_config),
>  					GFP_KERNEL);
> +			for (v = 0; v < core_vpes; v++)
> +				cpumask_set_cpu(nvpe++, &mips_cps_cluster_bootcfg[cl].cpumask);
>  			if (!core_bootcfg[c].vpe_config)
>  				goto err_out;
>  		}
>
> -- 
> 2.47.2

-- 
- Jiaxun

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 2/2] MIPS: CPS: Optimise delay CPU calibration for SMP
  2025-07-08 13:46 ` [PATCH v3 2/2] MIPS: CPS: Optimise delay CPU calibration for SMP Gregory CLEMENT
@ 2025-07-08 21:42   ` Jiaxun Yang
  0 siblings, 0 replies; 6+ messages in thread
From: Jiaxun Yang @ 2025-07-08 21:42 UTC (permalink / raw)
  To: Gregory CLEMENT, Thomas Bogendoerfer
  Cc: Vladimir Kondratiev, Théo Lebrun, Tawfik Bayouk,
	Thomas Petazzoni, linux-mips@vger.kernel.org, linux-kernel



在2025年7月8日周二 下午2:46,Gregory CLEMENT写道:
> On MIPS architecture with CPS-based SMP support, all CPU cores in the
> same cluster run at the same frequency since they share the same L2
> cache, requiring a fixed CPU/L2 cache ratio.
>
> This allows to implement calibrate_delay_is_known(), which will return
> 0 (triggering calibration) only for the primary CPU of each
> cluster. For other CPUs, we can simply reuse the value from their
> cluster's primary CPU core.
>
> With the introduction of this patch, a configuration running 32 cores
> spread across two clusters sees a significant reduction in boot time
> by approximately 600 milliseconds.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>

Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>

> ---
>  arch/mips/kernel/smp-cps.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
> index 
> 6c5f15293a8e58a701601b242f43ba19a6814f06..22d4f9ff3ae2671b07da5bb149154c686e07b209 
> 100644
> --- a/arch/mips/kernel/smp-cps.c
> +++ b/arch/mips/kernel/smp-cps.c
> @@ -281,6 +281,17 @@ static void __init cps_smp_setup(void)
>  #endif /* CONFIG_MIPS_MT_FPAFF */
>  }
> 
> +unsigned long calibrate_delay_is_known(void)
> +{
> +	int first_cpu_cluster = 0;
> +
> +	/* The calibration has to be done on the primary CPU of the cluster */
> +	if (mips_cps_first_online_in_cluster(&first_cpu_cluster))
> +		return 0;
> +
> +	return cpu_data[first_cpu_cluster].udelay_val;
> +}
> +
>  static void __init cps_prepare_cpus(unsigned int max_cpus)
>  {
>  	unsigned int nclusters, ncores, core_vpes, nvpe = 0, c, cl, cca;
>
> -- 
> 2.47.2

-- 
- Jiaxun

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster()
  2025-07-08 13:46 ` [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster() Gregory CLEMENT
  2025-07-08 21:42   ` Jiaxun Yang
@ 2025-07-09  1:04   ` kernel test robot
  1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2025-07-09  1:04 UTC (permalink / raw)
  To: Gregory CLEMENT, Thomas Bogendoerfer
  Cc: oe-kbuild-all, Jiaxun Yang, Vladimir Kondratiev, Théo Lebrun,
	Tawfik Bayouk, Thomas Petazzoni, linux-mips, linux-kernel,
	Gregory CLEMENT

[-- Attachment #1: Type: text/plain, Size: 1353 bytes --]

Hi Gregory,

kernel test robot noticed the following build errors:

[auto build test ERROR on 86731a2a651e58953fc949573895f2fa6d456841]

url:    https://github.com/intel-lab-lkp/linux/commits/Gregory-CLEMENT/MIPS-CPS-Improve-mips_cps_first_online_in_cluster/20250708-214752
base:   86731a2a651e58953fc949573895f2fa6d456841
patch link:    https://lore.kernel.org/r/20250708-smp_calib-v3-1-6dabf01a7d9f%40bootlin.com
patch subject: [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster()
:::::: branch date: 11 hours ago
:::::: commit date: 11 hours ago
config: mips-allnoconfig (attached as .config)
compiler: mips-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (attached as reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507090815.zV5novvV-lkp@intel.com/

All errors (new ones prefixed by >>):

   mips-linux-ld: arch/mips/kernel/mips-cm.o: in function `mips_cps_first_online_in_cluster':
>> mips-cm.c:(.text+0x12b4): undefined reference to `mips_cps_cluster_bootcfg'
>> mips-linux-ld: mips-cm.c:(.text+0x12b8): undefined reference to `mips_cps_cluster_bootcfg'

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 8419 bytes --]

[-- Attachment #3: reproduce --]
[-- Type: text/plain, Size: 606 bytes --]

reproduce (this is a W=1 build):
        git clone https://github.com/intel/lkp-tests.git ~/lkp-tests
        git checkout 86731a2a651e58953fc949573895f2fa6d456841
        b4 shazam https://lore.kernel.org/r/20250708-smp_calib-v3-1-6dabf01a7d9f@bootlin.com
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-15.1.0 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=mips olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-15.1.0 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-07-09  1:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-08 13:46 [PATCH v3 0/2] MIPS: CPS: Optimise delay CPU calibration and cluster helper function Gregory CLEMENT
2025-07-08 13:46 ` [PATCH v3 1/2] MIPS: CPS: Improve mips_cps_first_online_in_cluster() Gregory CLEMENT
2025-07-08 21:42   ` Jiaxun Yang
2025-07-09  1:04   ` kernel test robot
2025-07-08 13:46 ` [PATCH v3 2/2] MIPS: CPS: Optimise delay CPU calibration for SMP Gregory CLEMENT
2025-07-08 21:42   ` Jiaxun Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).