Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3a8cb18 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

sched/idle, tile: 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: default avatarPeter Zijlstra <peterz@infradead.org>
Acked-by: default avatarChris Metcalf <cmetcalf@tilera.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/n/tip-35zzwlvwr7cp8xj196y10yyx@git.kernel.org


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 2a705ad6
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ extern void _cpu_idle(void);
#define TIF_MEMDIE		7	/* OOM killer at work */
#define TIF_NOTIFY_RESUME	8	/* callback before returning to user */
#define TIF_SYSCALL_TRACEPOINT	9	/* syscall tracepoint instrumentation */
#define TIF_POLLING_NRFLAG	10	/* idle is polling for TIF_NEED_RESCHED */

#define _TIF_SIGPENDING		(1<<TIF_SIGPENDING)
#define _TIF_NEED_RESCHED	(1<<TIF_NEED_RESCHED)
@@ -140,6 +141,7 @@ extern void _cpu_idle(void);
#define _TIF_MEMDIE		(1<<TIF_MEMDIE)
#define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)
#define _TIF_SYSCALL_TRACEPOINT	(1<<TIF_SYSCALL_TRACEPOINT)
#define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG)

/* Work to do on any return to user space. */
#define _TIF_ALLWORK_MASK \
@@ -162,7 +164,6 @@ extern void _cpu_idle(void);
#ifdef __tilegx__
#define TS_COMPAT		0x0001	/* 32-bit compatibility mode */
#endif
#define TS_POLLING		0x0004	/* in idle loop but not sleeping */
#define TS_RESTORE_SIGMASK	0x0008	/* restore signal mask in do_signal */

#ifndef __ASSEMBLY__