Sync with 4.6.3
BFS: add missing comments to make patches apply more easily
The Brain Fuck Scheduler v0.424 by Con Kolivas.

A single shared runqueue O(n) strict fairness earliest deadline first design.

Excellent throughput and latency for 1 to many CPUs on desktop and server
commodity hardware.
Not recommended for 4096 cpus.

Scalability is optimal when your workload is equal to the number of CPUs on
bfs. ie you should ONLY do make -j4 on quad core, -j2 on dual core and so on.

Features SCHED_IDLEPRIO and SCHED_ISO scheduling policies as well.
You do NOT need to use these policies for good performance, they are purely
optional for even better performance in extreme conditions.

To run something idleprio, use schedtool like so:

schedtool -D -e make -j4

To run something isoprio, use schedtool like so:
crpalmer@compile:~/dna/kernel$ head -50 ../3.4-sched-bfs-424.patch
The Brain Fuck Scheduler v0.424 by Con Kolivas.

A single shared runqueue O(n) strict fairness earliest deadline first design.

Excellent throughput and latency for 1 to many CPUs on desktop and server
commodity hardware.
Not recommended for 4096 cpus.

Scalability is optimal when your workload is equal to the number of CPUs on
bfs. ie you should ONLY do make -j4 on quad core, -j2 on dual core and so on.

Features SCHED_IDLEPRIO and SCHED_ISO scheduling policies as well.
You do NOT need to use these policies for good performance, they are purely
optional for even better performance in extreme conditions.

To run something idleprio, use schedtool like so:

schedtool -D -e make -j4

To run something isoprio, use schedtool like so:

schedtool -I -e amarok

Includes accurate sub-tick accounting of tasks so userspace reported
cpu usage may be very different if you have very short lived tasks.

-ck

Conflicts:
	arch/arm/configs/crpalmer_defconfig
	include/linux/sched.h
	kernel/sched/Makefile
BFS: add wait_for_completion_io required for HTC kernel
BFS: doesn't need enter_idle / exit_idle hooks for load averaging

BFS doesn't have a per-core notion of load and therfore doesn't
need these hooks to fold in the per-core accounting when entering/
exiting NO_HZ mode.

Conflicts:
	include/linux/sched.h
avg_nr_running is not currently supported by BFS
simple_plug: just use nr_running and not avg_nr_running for BFS

For the time being, don't bother trying to implement the averaging
in the BFS scheduler.
BFS: upgradeable r/w locks

Implement a variant of read/write locks that use a combination of 1 spinlock
and 1 read/write lock to create an upgradeable read/write lock. All r/u/w
variants take the spinlock first thus these will favour writers over readers.
Once readers have taken the spinlock and the read lock they drop the spinlock
thus allowing multiple readers to exist concurrently. The upgradeable variant
only takes the spinlock and can be upgraded to write locks or downgraded to
read locks. The write locks can be downgraded to read locks.

-ck
BFS: Use upgradeable read/write locks in place of the grq spinlock.

Separate out paths which require read/write or are indeterminate and use
each subvariant where appropriate to decrease lock contention and improve
scalability through more parallel read sections of code. Where code paths
are not performance critical, just use wlocks variants.

-ck
msm: make it possible to disable msm_mpdecision
crpalmer_defconfig: disable msm_mpdecision
BFS: conditionalize code that uses functionality not in BFS

* ondemand: do not get notification for migration
* tty / fs: do not dump state information
Version 4.6.3-bfs1