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 |
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 >
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.
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 --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); } }