Message ID | 1407892269-28650-1-git-send-email-rvaswani@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Aug 13, 2014 at 02:11:09AM +0100, Rohit Vaswani wrote: > Currently, the CPU_STARTING notifiers would observe an incorrect sibling > mask since the notifier chain is called before the topology masks are updated > for the new cpu. > Update the topology masks before calling the notifier chain to fix this > problem. > > Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org> > --- > arch/arm/kernel/smp.c | 4 ++-- > arch/arm64/kernel/smp.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c > index 7c4fada..0e2237c 100644 > --- a/arch/arm/kernel/smp.c > +++ b/arch/arm/kernel/smp.c > @@ -363,12 +363,12 @@ asmlinkage void secondary_start_kernel(void) > if (smp_ops.smp_secondary_init) > smp_ops.smp_secondary_init(cpu); > > + smp_store_cpu_info(cpu); > + > notify_cpu_starting(cpu); > > calibrate_delay(); > > - smp_store_cpu_info(cpu); > - Hmm, smp_store_cpu_info takes a copy of loops_per_jiffy. Are you sure it's safe to move the call before calibrate_delay? Will
On 8/15/2014 3:43 AM, Will Deacon wrote: > On Wed, Aug 13, 2014 at 02:11:09AM +0100, Rohit Vaswani wrote: >> Currently, the CPU_STARTING notifiers would observe an incorrect sibling >> mask since the notifier chain is called before the topology masks are updated >> for the new cpu. >> Update the topology masks before calling the notifier chain to fix this >> problem. >> >> Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org> >> --- >> arch/arm/kernel/smp.c | 4 ++-- >> arch/arm64/kernel/smp.c | 4 ++-- >> 2 files changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c >> index 7c4fada..0e2237c 100644 >> --- a/arch/arm/kernel/smp.c >> +++ b/arch/arm/kernel/smp.c >> @@ -363,12 +363,12 @@ asmlinkage void secondary_start_kernel(void) >> if (smp_ops.smp_secondary_init) >> smp_ops.smp_secondary_init(cpu); >> >> + smp_store_cpu_info(cpu); >> + >> notify_cpu_starting(cpu); >> >> calibrate_delay(); >> >> - smp_store_cpu_info(cpu); >> - > Hmm, smp_store_cpu_info takes a copy of loops_per_jiffy. Are you sure it's > safe to move the call before calibrate_delay? Right! - I had looked at the arm64 version . I checked for arm32 now and I think we should be safe to move calibrate_delay before the smp_store_cpu_info and I can push a v2 version if there are no concerns. I did not see calibrate_delay having any dependency for cpu_starting notifiers. -Rohit > Will Thanks, Rohit Vaswani
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 7c4fada..0e2237c 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -363,12 +363,12 @@ asmlinkage void secondary_start_kernel(void) if (smp_ops.smp_secondary_init) smp_ops.smp_secondary_init(cpu); + smp_store_cpu_info(cpu); + notify_cpu_starting(cpu); calibrate_delay(); - smp_store_cpu_info(cpu); - /* * OK, now it's safe to let the boot CPU continue. Wait for * the CPU migration code to notice that the CPU is online diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 3e2f5eb..4ae78fe 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -163,10 +163,10 @@ asmlinkage void secondary_start_kernel(void) /* * Enable GIC and timers. */ - notify_cpu_starting(cpu); - smp_store_cpu_info(cpu); + notify_cpu_starting(cpu); + /* * OK, now it's safe to let the boot CPU continue. Wait for * the CPU migration code to notice that the CPU is online
Currently, the CPU_STARTING notifiers would observe an incorrect sibling mask since the notifier chain is called before the topology masks are updated for the new cpu. Update the topology masks before calling the notifier chain to fix this problem. Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org> --- arch/arm/kernel/smp.c | 4 ++-- arch/arm64/kernel/smp.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)