aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile/include
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@ezchip.com>2015-03-23 14:23:58 -0400
committerChris Metcalf <cmetcalf@ezchip.com>2015-04-17 14:01:10 -0400
commit49e4e15619cd7cd9fc275d460fae2a95c1337fcc (patch)
tree700e24bb8f72a7662e7d4ae26d847e908d08de92 /arch/tile/include
parentb340c656af6317e28b466996a72cca019d97b42d (diff)
tile: support CONTEXT_TRACKING and thus NOHZ_FULL
Add the TIF_NOHZ flag appropriately. Add call to user_exit() on entry to do_work_pending() and on entry to syscalls via do_syscall_trace_enter(), and also the top of do_syscall_trace_exit() just because it's done in x86. Add call to user_enter() at the bottom of do_work_pending() once we have no more work to do before returning to userspace. Wrap all the trap code in exception_enter() / exception_exit(). Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com> Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'arch/tile/include')
-rw-r--r--arch/tile/include/asm/thread_info.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/tile/include/asm/thread_info.h b/arch/tile/include/asm/thread_info.h
index 96c14c1430d8..6130a3db505b 100644
--- a/arch/tile/include/asm/thread_info.h
+++ b/arch/tile/include/asm/thread_info.h
@@ -126,6 +126,7 @@ extern void _cpu_idle(void);
126#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */ 126#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */
127#define TIF_SYSCALL_TRACEPOINT 9 /* syscall tracepoint instrumentation */ 127#define TIF_SYSCALL_TRACEPOINT 9 /* syscall tracepoint instrumentation */
128#define TIF_POLLING_NRFLAG 10 /* idle is polling for TIF_NEED_RESCHED */ 128#define TIF_POLLING_NRFLAG 10 /* idle is polling for TIF_NEED_RESCHED */
129#define TIF_NOHZ 11 /* in adaptive nohz mode */
129 130
130#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) 131#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
131#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) 132#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
@@ -138,14 +139,16 @@ extern void _cpu_idle(void);
138#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) 139#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
139#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) 140#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
140#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) 141#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
142#define _TIF_NOHZ (1<<TIF_NOHZ)
141 143
142/* Work to do on any return to user space. */ 144/* Work to do on any return to user space. */
143#define _TIF_ALLWORK_MASK \ 145#define _TIF_ALLWORK_MASK \
144 (_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_SINGLESTEP|\ 146 (_TIF_SIGPENDING | _TIF_NEED_RESCHED | _TIF_SINGLESTEP | \
145 _TIF_ASYNC_TLB|_TIF_NOTIFY_RESUME) 147 _TIF_ASYNC_TLB | _TIF_NOTIFY_RESUME | _TIF_NOHZ)
146 148
147/* Work to do at syscall entry. */ 149/* Work to do at syscall entry. */
148#define _TIF_SYSCALL_ENTRY_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT) 150#define _TIF_SYSCALL_ENTRY_WORK \
151 (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_NOHZ)
149 152
150/* Work to do at syscall exit. */ 153/* Work to do at syscall exit. */
151#define _TIF_SYSCALL_EXIT_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT) 154#define _TIF_SYSCALL_EXIT_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT)