kernel: sched: provide per cpu-cgroup option to notify on migrations

    On systems where CPUs may run asynchronously, task migrations
    between CPUs running at grossly different speeds can cause
    problems.

    This change provides a mechanism to notify a subsystem
    in the kernel if a task in a particular cgroup migrates to a
    different CPU. Other subsystems (such as cpufreq) may then
    register for this notifier to take appropriate action when
    such a task is migrated.

    The cgroup attribute to set for this behavior is
    "notify_on_migrate" .

    Change-Id: Ie1868249e53ef901b89c837fdc33b0ad0c0a4590
    Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
    Signed-off-by: Mekala Natarajan <mekalan@codeaurora.org>
cpufreq: add intellidemand governor

Intellidemand aka Intelligent Ondemand from Faux is yet another governor that's based on ondemand. Unlike what some users believe, this governor is not the replacement for OC Daemon (Having different governors for sleep and awake). The original intellidemand behaves differently according to GPU usage. When GPU is really busy (gaming, maps, benchmarking, etc) intellidemand behaves like ondemand. When GPU is 'idling' (or moderately busy), intellidemand limits max frequency to a step depending on frequencies available in your device/kernel for saving battery. This is called browsing mode. We can see some 'traces' of interactive governor here. Frequency scale-up decision is made based on idling time of CPU. Lower idling time (<20%) causes CPU to scale-up from current frequency. Frequency scale-down happens at steps=5% of max frequency. (This parameter is tunable only in conservative, among the popular governors)
To sum up, this is an intelligent ondemand that enters browsing mode to limit max frequency when GPU is idling, and (exits browsing mode) behaves like ondemand when GPU is busy; to deliver performance for gaming and such. Intellidemand does not jump to highest frequency when screen is off.
workqueue: make deferrable delayed_work initializer names consistent

Initalizers for deferrable delayed_work are confused.

* __DEFERRED_WORK_INITIALIZER()
* DECLARE_DEFERRED_WORK()
* INIT_DELAYED_WORK_DEFERRABLE()

Rename them to

* __DEFERRABLE_WORK_INITIALIZER()
* DECLARE_DEFERRABLE_WORK()
* INIT_DEFERRABLE_WORK()

This patch doesn't cause any functional changes.

Signed-off-by: Tejun Heo <tj@kernel.org>
cpufreq: add darkness governor
cpufreq: add nightmare governor
cpufreq: add alucard governor
cpufreq: add HYPER governor
cpufreq: add pegasusq governor
cpufreq: add ondemandplus governor