microblaze: Remove __ARCH_WANT_INTERRUPTS_ON_CTXSW usage
As far as I can tell the only reason microblaze has __ARCH_WANT_INTERRUPTS_ON_CTXSW is because it initializes new task state with interrupts enabled so that on switch_to() interrupts get enabled. So change copy_thread() to clear MSR_IE instead of set it, this will ensure switch_to() will always keep IRQs disabled. The scheduler will disable IRQs when taking rq->lock in schedule() and enable IRQs in finish_lock_switch() after its done its magic. This leaves ARM the only __ARCH_WANT_INTERRUPTS_ON_CTXSW user. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Michal Simek <monstr@monstr.eu>
This commit is contained in:
parent
cb5edfe3e5
commit
84ac218f02
|
@ -17,8 +17,6 @@
|
||||||
#include <asm-generic/cmpxchg.h>
|
#include <asm-generic/cmpxchg.h>
|
||||||
#include <asm-generic/cmpxchg-local.h>
|
#include <asm-generic/cmpxchg-local.h>
|
||||||
|
|
||||||
#define __ARCH_WANT_INTERRUPTS_ON_CTXSW
|
|
||||||
|
|
||||||
struct task_struct;
|
struct task_struct;
|
||||||
struct thread_info;
|
struct thread_info;
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
|
||||||
|
|
||||||
ti->cpu_context.msr = (childregs->msr|MSR_VM);
|
ti->cpu_context.msr = (childregs->msr|MSR_VM);
|
||||||
ti->cpu_context.msr &= ~MSR_UMS; /* switch_to to kernel mode */
|
ti->cpu_context.msr &= ~MSR_UMS; /* switch_to to kernel mode */
|
||||||
|
ti->cpu_context.msr &= ~MSR_IE;
|
||||||
#endif
|
#endif
|
||||||
ti->cpu_context.r15 = (unsigned long)ret_from_fork - 8;
|
ti->cpu_context.r15 = (unsigned long)ret_from_fork - 8;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue