diff options
author | Peter Zijlstra <peterz@infradead.org> | 2014-04-11 03:59:17 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2014-05-08 03:16:53 -0400 |
commit | 2a705ad65c9c393df1a684c780f890a29aab1128 (patch) | |
tree | 4a0b19473cdc4a0215eefb9e941f474fc6f90d61 /arch/alpha | |
parent | 39a4d9ca77a31503c6317e49742341d0859d5cb2 (diff) |
sched/idle, alpha: Switch from TS_POLLING to TIF_POLLING_NRFLAG
Standardize the idle polling indicator to TIF_POLLING_NRFLAG such that
both TIF_NEED_RESCHED and TIF_POLLING_NRFLAG are in the same word.
This will allow us, using fetch_or(), to both set NEED_RESCHED and
check for POLLING_NRFLAG in a single operation and avoid pointless
wakeups.
Changing from the non-atomic thread_info::status flags to the atomic
thread_info::flags shouldn't be a big issue since most polling state
changes were followed/preceded by a full memory barrier anyway.
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Richard Henderson <rth@twiddle.net>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: 蔡正龙 <zhenglong.cai@cs2c.com.cn>
Cc: linux-alpha@vger.kernel.org
Link: http://lkml.kernel.org/n/tip-9tfzr196gs0n2afxv0ga8pc3@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/include/asm/thread_info.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/alpha/include/asm/thread_info.h b/arch/alpha/include/asm/thread_info.h index 3d6ce6d56fc9..48bbea6898b3 100644 --- a/arch/alpha/include/asm/thread_info.h +++ b/arch/alpha/include/asm/thread_info.h | |||
@@ -73,12 +73,14 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
73 | #define TIF_SYSCALL_AUDIT 4 /* syscall audit active */ | 73 | #define TIF_SYSCALL_AUDIT 4 /* syscall audit active */ |
74 | #define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */ | 74 | #define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */ |
75 | #define TIF_MEMDIE 13 /* is terminating due to OOM killer */ | 75 | #define TIF_MEMDIE 13 /* is terminating due to OOM killer */ |
76 | #define TIF_POLLING_NRFLAG 14 /* idle is polling for TIF_NEED_RESCHED */ | ||
76 | 77 | ||
77 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 78 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
78 | #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) | 79 | #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) |
79 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) | 80 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) |
80 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 81 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
81 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 82 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
83 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | ||
82 | 84 | ||
83 | /* Work to do on interrupt/exception return. */ | 85 | /* Work to do on interrupt/exception return. */ |
84 | #define _TIF_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ | 86 | #define _TIF_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ |
@@ -92,8 +94,6 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
92 | #define TS_UAC_NOFIX 0x0002 /* ! flags as they match */ | 94 | #define TS_UAC_NOFIX 0x0002 /* ! flags as they match */ |
93 | #define TS_UAC_SIGBUS 0x0004 /* ! userspace part of 'osf_sysinfo' */ | 95 | #define TS_UAC_SIGBUS 0x0004 /* ! userspace part of 'osf_sysinfo' */ |
94 | #define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */ | 96 | #define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */ |
95 | #define TS_POLLING 0x0010 /* idle task polling need_resched, | ||
96 | skip sending interrupt */ | ||
97 | 97 | ||
98 | #ifndef __ASSEMBLY__ | 98 | #ifndef __ASSEMBLY__ |
99 | #define HAVE_SET_RESTORE_SIGMASK 1 | 99 | #define HAVE_SET_RESTORE_SIGMASK 1 |