diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-03 14:00:15 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-03 14:00:15 -0700 | 
| commit | c84a1e32ee58fc1cc9d3fd42619b917cce67e30a (patch) | |
| tree | d3e5bed273f747e7c9e399864219bea76f4c30ea /arch/x86 | |
| parent | 3d521f9151dacab566904d1f57dcb3e7080cdd8f (diff) | |
| parent | 096aa33863a5e48de52d2ff30e0801b7487944f4 (diff) | |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next
Pull scheduler updates from Ingo Molnar:
 "The main scheduling related changes in this cycle were:
   - various sched/numa updates, for better performance
   - tree wide cleanup of open coded nice levels
   - nohz fix related to rq->nr_running use
   - cpuidle changes and continued consolidation to improve the
     kernel/sched/idle.c high level idle scheduling logic.  As part of
     this effort I pulled cpuidle driver changes from Rafael as well.
   - standardized idle polling amongst architectures
   - continued work on preparing better power/energy aware scheduling
   - sched/rt updates
   - misc fixlets and cleanups"
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (49 commits)
  sched/numa: Decay ->wakee_flips instead of zeroing
  sched/numa: Update migrate_improves/degrades_locality()
  sched/numa: Allow task switch if load imbalance improves
  sched/rt: Fix 'struct sched_dl_entity' and dl_task_time() comments, to match the current upstream code
  sched: Consolidate open coded implementations of nice level frobbing into nice_to_rlimit() and rlimit_to_nice()
  sched: Initialize rq->age_stamp on processor start
  sched, nohz: Change rq->nr_running to always use wrappers
  sched: Fix the rq->next_balance logic in rebalance_domains() and idle_balance()
  sched: Use clamp() and clamp_val() to make sys_nice() more readable
  sched: Do not zero sg->cpumask and sg->sgp->power in build_sched_groups()
  sched/numa: Fix initialization of sched_domain_topology for NUMA
  sched: Call select_idle_sibling() when not affine_sd
  sched: Simplify return logic in sched_read_attr()
  sched: Simplify return logic in sched_copy_attr()
  sched: Fix exec_start/task_hot on migrated tasks
  arm64: Remove TIF_POLLING_NRFLAG
  metag: Remove TIF_POLLING_NRFLAG
  sched/idle: Make cpuidle_idle_call() void
  sched/idle: Reflow cpuidle_idle_call()
  sched/idle: Delay clearing the polling bit
  ...
Diffstat (limited to 'arch/x86')
| -rw-r--r-- | arch/x86/include/asm/thread_info.h | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/apm_32.c | 11 | 
2 files changed, 2 insertions, 13 deletions
| diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h index 47e5de25ba79..854053889d4d 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h @@ -83,6 +83,7 @@ struct thread_info {  #define TIF_FORK		18	/* ret_from_fork */  #define TIF_NOHZ		19	/* in adaptive nohz mode */  #define TIF_MEMDIE		20	/* is terminating due to OOM killer */ +#define TIF_POLLING_NRFLAG	21	/* idle is polling for TIF_NEED_RESCHED */  #define TIF_IO_BITMAP		22	/* uses I/O bitmap */  #define TIF_FORCED_TF		24	/* true if TF in eflags artificially */  #define TIF_BLOCKSTEP		25	/* set when we want DEBUGCTLMSR_BTF */ @@ -106,6 +107,7 @@ struct thread_info {  #define _TIF_IA32		(1 << TIF_IA32)  #define _TIF_FORK		(1 << TIF_FORK)  #define _TIF_NOHZ		(1 << TIF_NOHZ) +#define _TIF_POLLING_NRFLAG	(1 << TIF_POLLING_NRFLAG)  #define _TIF_IO_BITMAP		(1 << TIF_IO_BITMAP)  #define _TIF_FORCED_TF		(1 << TIF_FORCED_TF)  #define _TIF_BLOCKSTEP		(1 << TIF_BLOCKSTEP) @@ -191,8 +193,6 @@ static inline struct thread_info *current_thread_info(void)   * have to worry about atomic accesses.   */  #define TS_COMPAT		0x0002	/* 32bit syscall active (64BIT)*/ -#define TS_POLLING		0x0004	/* idle task polling need_resched, -					   skip sending interrupt */  #define TS_RESTORE_SIGMASK	0x0008	/* restore signal mask in do_signal() */  #ifndef __ASSEMBLY__ diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c index 3ab03430211d..f3a1f04ed4cb 100644 --- a/arch/x86/kernel/apm_32.c +++ b/arch/x86/kernel/apm_32.c @@ -844,21 +844,10 @@ static int apm_do_idle(void)  	int polling;  	int err = 0; -	polling = !!(current_thread_info()->status & TS_POLLING); -	if (polling) { -		current_thread_info()->status &= ~TS_POLLING; -		/* -		 * TS_POLLING-cleared state must be visible before we -		 * test NEED_RESCHED: -		 */ -		smp_mb(); -	}  	if (!need_resched()) {  		idled = 1;  		ret = apm_bios_call_simple(APM_FUNC_IDLE, 0, 0, &eax, &err);  	} -	if (polling) -		current_thread_info()->status |= TS_POLLING;  	if (!idled)  		return 0; | 
