Re: [v1 PATCH 4/4] RISC-V: Support nr_cpus command line option.
On 3/19/19 4:58 PM, Damien Le Moal wrote: On 2019/03/20 8:56, Damien Le Moal wrote: On 2019/03/20 7:20, Atish Patra wrote: If nr_cpus command line option is set, maximum possible cpu should be set to that value. Signed-off-by: Atish Patra --- arch/riscv/kernel/smpboot.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/riscv/kernel/smpboot.c b/arch/riscv/kernel/smpboot.c index 609475c5..a8fe590c 100644 --- a/arch/riscv/kernel/smpboot.c +++ b/arch/riscv/kernel/smpboot.c @@ -86,11 +86,19 @@ void __init setup_smp(void) } cpuid_to_hartid_map(cpuid) = hart; - set_cpu_possible(cpuid, true); This looks weird: the code being changed does not match what patch 3/4 did. Arg... Ignore this one. My bad. Morning here, I need more coffee :) :). cpuid++; } BUG_ON(!found_boot_cpu); + + if (cpuid > nr_cpu_ids) + pr_warn("Total number of cpus [%d] are greater than configured via nr_cpus [%d]\n", "The total number of cpus [%d] is greater than nr_cpus option value [%d]\n" ok. I will fix it in v2. Regards, Atish + cpuid, nr_cpu_ids); + + for (cpuid = 1; cpuid < nr_cpu_ids; cpuid++) { + if (cpuid_to_hartid_map(cpuid) != INVALID_HARTID) + set_cpu_possible(cpuid, true); + } } int __cpu_up(unsigned int cpu, struct task_struct *tidle)
Re: [v1 PATCH 4/4] RISC-V: Support nr_cpus command line option.
On 2019/03/20 8:56, Damien Le Moal wrote: > On 2019/03/20 7:20, Atish Patra wrote: >> If nr_cpus command line option is set, maximum possible cpu should be >> set to that value. >> >> Signed-off-by: Atish Patra >> --- >> arch/riscv/kernel/smpboot.c | 10 +- >> 1 file changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/arch/riscv/kernel/smpboot.c b/arch/riscv/kernel/smpboot.c >> index 609475c5..a8fe590c 100644 >> --- a/arch/riscv/kernel/smpboot.c >> +++ b/arch/riscv/kernel/smpboot.c >> @@ -86,11 +86,19 @@ void __init setup_smp(void) >> } >> >> cpuid_to_hartid_map(cpuid) = hart; >> -set_cpu_possible(cpuid, true); > > This looks weird: the code being changed does not match what patch 3/4 did. Arg... Ignore this one. My bad. Morning here, I need more coffee :) > >> cpuid++; >> } >> >> BUG_ON(!found_boot_cpu); >> + >> +if (cpuid > nr_cpu_ids) >> +pr_warn("Total number of cpus [%d] are greater than configured >> via nr_cpus [%d]\n", > > "The total number of cpus [%d] is greater than nr_cpus option value [%d]\n" > >> +cpuid, nr_cpu_ids); >> + >> +for (cpuid = 1; cpuid < nr_cpu_ids; cpuid++) { >> +if (cpuid_to_hartid_map(cpuid) != INVALID_HARTID) >> +set_cpu_possible(cpuid, true); >> +} >> } >> >> int __cpu_up(unsigned int cpu, struct task_struct *tidle) >> > > -- Damien Le Moal Western Digital Research
Re: [v1 PATCH 4/4] RISC-V: Support nr_cpus command line option.
On 2019/03/20 7:20, Atish Patra wrote: > If nr_cpus command line option is set, maximum possible cpu should be > set to that value. > > Signed-off-by: Atish Patra > --- > arch/riscv/kernel/smpboot.c | 10 +- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/kernel/smpboot.c b/arch/riscv/kernel/smpboot.c > index 609475c5..a8fe590c 100644 > --- a/arch/riscv/kernel/smpboot.c > +++ b/arch/riscv/kernel/smpboot.c > @@ -86,11 +86,19 @@ void __init setup_smp(void) > } > > cpuid_to_hartid_map(cpuid) = hart; > - set_cpu_possible(cpuid, true); This looks weird: the code being changed does not match what patch 3/4 did. > cpuid++; > } > > BUG_ON(!found_boot_cpu); > + > + if (cpuid > nr_cpu_ids) > + pr_warn("Total number of cpus [%d] are greater than configured > via nr_cpus [%d]\n", "The total number of cpus [%d] is greater than nr_cpus option value [%d]\n" > + cpuid, nr_cpu_ids); > + > + for (cpuid = 1; cpuid < nr_cpu_ids; cpuid++) { > + if (cpuid_to_hartid_map(cpuid) != INVALID_HARTID) > + set_cpu_possible(cpuid, true); > + } > } > > int __cpu_up(unsigned int cpu, struct task_struct *tidle) > -- Damien Le Moal Western Digital Research
[v1 PATCH 4/4] RISC-V: Support nr_cpus command line option.
If nr_cpus command line option is set, maximum possible cpu should be set to that value. Signed-off-by: Atish Patra --- arch/riscv/kernel/smpboot.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/riscv/kernel/smpboot.c b/arch/riscv/kernel/smpboot.c index 609475c5..a8fe590c 100644 --- a/arch/riscv/kernel/smpboot.c +++ b/arch/riscv/kernel/smpboot.c @@ -86,11 +86,19 @@ void __init setup_smp(void) } cpuid_to_hartid_map(cpuid) = hart; - set_cpu_possible(cpuid, true); cpuid++; } BUG_ON(!found_boot_cpu); + + if (cpuid > nr_cpu_ids) + pr_warn("Total number of cpus [%d] are greater than configured via nr_cpus [%d]\n", + cpuid, nr_cpu_ids); + + for (cpuid = 1; cpuid < nr_cpu_ids; cpuid++) { + if (cpuid_to_hartid_map(cpuid) != INVALID_HARTID) + set_cpu_possible(cpuid, true); + } } int __cpu_up(unsigned int cpu, struct task_struct *tidle) -- 2.21.0