diff mbox series

[v2] mips: smp-bmips: fix CPU mappings

Message ID 20210224073336.32265-1-noltari@gmail.com (mailing list archive)
State Accepted
Commit c0f41a0dac1f3db6c40aabc0f3ac8868709ba6a6
Headers show
Series [v2] mips: smp-bmips: fix CPU mappings | expand

Commit Message

Álvaro Fernández Rojas Feb. 24, 2021, 7:33 a.m. UTC
When booting bmips with SMP enabled on a BCM6358 running on CPU #1 instead of
CPU #0, the current CPU mapping code produces the following:
- smp_processor_id(): 0
- cpu_logical_map(0): 1
- cpu_number_map(0): 1

This is because SMP isn't supported on BCM6358 since it has a shared TLB, so
it is disabled and max_cpus is decreased from 2 to 1.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
 v2: Fix duplicated line

 arch/mips/kernel/smp-bmips.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

Comments

Álvaro Fernández Rojas Feb. 27, 2021, 6:47 a.m. UTC | #1
Hi all,

Apparently, this patch was flagged as "Not Applicable" without an explanation. Why?
https://patchwork.kernel.org/project/linux-mips/patch/20210224073336.32265-1-noltari@gmail.com/

Best regarss,
Álvaro.

> El 24 feb 2021, a las 8:33, Álvaro Fernández Rojas <noltari@gmail.com> escribió:
> 
> When booting bmips with SMP enabled on a BCM6358 running on CPU #1 instead of
> CPU #0, the current CPU mapping code produces the following:
> - smp_processor_id(): 0
> - cpu_logical_map(0): 1
> - cpu_number_map(0): 1
> 
> This is because SMP isn't supported on BCM6358 since it has a shared TLB, so
> it is disabled and max_cpus is decreased from 2 to 1.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
> v2: Fix duplicated line
> 
> arch/mips/kernel/smp-bmips.c | 27 +++++++++++++++++----------
> 1 file changed, 17 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
> index 359b176b665f..b6ef5f7312cf 100644
> --- a/arch/mips/kernel/smp-bmips.c
> +++ b/arch/mips/kernel/smp-bmips.c
> @@ -134,17 +134,24 @@ static void __init bmips_smp_setup(void)
> 	if (!board_ebase_setup)
> 		board_ebase_setup = &bmips_ebase_setup;
> 
> -	__cpu_number_map[boot_cpu] = 0;
> -	__cpu_logical_map[0] = boot_cpu;
> -
> -	for (i = 0; i < max_cpus; i++) {
> -		if (i != boot_cpu) {
> -			__cpu_number_map[i] = cpu;
> -			__cpu_logical_map[cpu] = i;
> -			cpu++;
> +	if (max_cpus > 1) {
> +		__cpu_number_map[boot_cpu] = 0;
> +		__cpu_logical_map[0] = boot_cpu;
> +
> +		for (i = 0; i < max_cpus; i++) {
> +			if (i != boot_cpu) {
> +				__cpu_number_map[i] = cpu;
> +				__cpu_logical_map[cpu] = i;
> +				cpu++;
> +			}
> +			set_cpu_possible(i, 1);
> +			set_cpu_present(i, 1);
> 		}
> -		set_cpu_possible(i, 1);
> -		set_cpu_present(i, 1);
> +	} else {
> +		__cpu_number_map[0] = boot_cpu;
> +		__cpu_logical_map[0] = 0;
> +		set_cpu_possible(0, 1);
> +		set_cpu_present(0, 1);
> 	}
> }
> 
> -- 
> 2.20.1
>
Thomas Bogendoerfer March 1, 2021, 12:33 p.m. UTC | #2
On Sat, Feb 27, 2021 at 07:47:42AM +0100, Álvaro Fernández Rojas wrote:
> Hi all,
> 
> Apparently, this patch was flagged as "Not Applicable" without an
> explanation. Why?

hmm, I probaly wanted to drop the first version, but changed v2. It's
back to new again and I'm gogin to apply it soon.

Sorry about that.

Thomas.
Thomas Bogendoerfer March 1, 2021, 2:50 p.m. UTC | #3
On Wed, Feb 24, 2021 at 08:33:36AM +0100, Álvaro Fernández Rojas wrote:
> When booting bmips with SMP enabled on a BCM6358 running on CPU #1 instead of
> CPU #0, the current CPU mapping code produces the following:
> - smp_processor_id(): 0
> - cpu_logical_map(0): 1
> - cpu_number_map(0): 1
> 
> This is because SMP isn't supported on BCM6358 since it has a shared TLB, so
> it is disabled and max_cpus is decreased from 2 to 1.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
>  v2: Fix duplicated line
> 
>  arch/mips/kernel/smp-bmips.c | 27 +++++++++++++++++----------
>  1 file changed, 17 insertions(+), 10 deletions(-)

applied to mips-next.

Thomas.
diff mbox series

Patch

diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
index 359b176b665f..b6ef5f7312cf 100644
--- a/arch/mips/kernel/smp-bmips.c
+++ b/arch/mips/kernel/smp-bmips.c
@@ -134,17 +134,24 @@  static void __init bmips_smp_setup(void)
 	if (!board_ebase_setup)
 		board_ebase_setup = &bmips_ebase_setup;
 
-	__cpu_number_map[boot_cpu] = 0;
-	__cpu_logical_map[0] = boot_cpu;
-
-	for (i = 0; i < max_cpus; i++) {
-		if (i != boot_cpu) {
-			__cpu_number_map[i] = cpu;
-			__cpu_logical_map[cpu] = i;
-			cpu++;
+	if (max_cpus > 1) {
+		__cpu_number_map[boot_cpu] = 0;
+		__cpu_logical_map[0] = boot_cpu;
+
+		for (i = 0; i < max_cpus; i++) {
+			if (i != boot_cpu) {
+				__cpu_number_map[i] = cpu;
+				__cpu_logical_map[cpu] = i;
+				cpu++;
+			}
+			set_cpu_possible(i, 1);
+			set_cpu_present(i, 1);
 		}
-		set_cpu_possible(i, 1);
-		set_cpu_present(i, 1);
+	} else {
+		__cpu_number_map[0] = boot_cpu;
+		__cpu_logical_map[0] = 0;
+		set_cpu_possible(0, 1);
+		set_cpu_present(0, 1);
 	}
 }