diff options
author | Stafford Horne <shorne@gmail.com> | 2017-07-12 17:20:38 +0900 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2017-11-03 14:01:14 +0900 |
commit | b441aab7aa0e15955c432736b08a218a6a4c77f0 (patch) | |
tree | c285dfe1d0331f01088161f7dca67f204f6fec5a | |
parent | 8e6d08e0a15e7d4d4b608b56597350d4cdd77710 (diff) | |
download | op-kernel-dev-b441aab7aa0e15955c432736b08a218a6a4c77f0.zip op-kernel-dev-b441aab7aa0e15955c432736b08a218a6a4c77f0.tar.gz |
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>
-rw-r--r-- | arch/openrisc/include/asm/thread_info.h | 2 | ||||
-rw-r--r-- | arch/openrisc/kernel/smp.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/arch/openrisc/include/asm/thread_info.h b/arch/openrisc/include/asm/thread_info.h index 6e619a7..c229aa6 100644 --- a/arch/openrisc/include/asm/thread_info.h +++ b/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, \ } diff --git a/arch/openrisc/kernel/smp.c b/arch/openrisc/kernel/smp.c index fd72412..154c94a 100644 --- a/arch/openrisc/kernel/smp.c +++ b/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 */ |