Browse Source

openrisc: fix initial preempt state for secondary cpu tasks

During SMP testing we were getting the below warning after booting the
secondary cpu:

[    0.060000] BUG: scheduling while atomic: swapper/1/0/0x00000000

This change follows similar patterns from other architectures to start
the schduler with preempt disabled.

Signed-off-by: Stafford Horne <shorne@gmail.com>
Stafford Horne 8 years ago
parent
commit
b441aab7aa
2 changed files with 2 additions and 1 deletions
  1. 1 1
      arch/openrisc/include/asm/thread_info.h
  2. 1 0
      arch/openrisc/kernel/smp.c

+ 1 - 1
arch/openrisc/include/asm/thread_info.h

@@ -74,7 +74,7 @@ struct thread_info {
 	.task		= &tsk,				\
 	.flags		= 0,				\
 	.cpu		= 0,				\
-	.preempt_count	= 1,				\
+	.preempt_count	= INIT_PREEMPT_COUNT,		\
 	.addr_limit	= KERNEL_DS,			\
 	.ksp            = 0,                            \
 }

+ 1 - 0
arch/openrisc/kernel/smp.c

@@ -128,6 +128,7 @@ asmlinkage __init void secondary_start_kernel(void)
 
 	local_irq_enable();
 
+	preempt_disable();
 	/*
 	 * OK, it's off to the idle thread for us
 	 */