Merge branch 'lsk-v4.4-eas-v5.2' of git://git.linaro.org/arm/eas/kernel.git
authorHuang, Tao <huangtao@rock-chips.com>
Wed, 8 Jun 2016 06:09:19 +0000 (14:09 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 8 Jun 2016 06:09:19 +0000 (14:09 +0800)
* lsk-v4.4-eas-v5.2:
  DEBUG: schedtune: add tracepoint for schedtune_tasks_update() values
  DEBUG: schedtune: add tracepoint for CPU boost signal
  DEBUG: schedtune: add tracepoint for SchedTune configuration update
  DEBUG: sched: add energy procfs interface
  DEBUG: sched,cpufreq: add cpu_capacity change tracepoint
  DEBUG: sched: add tracepoint for CPU load/util signals
  DEBUG: sched: add tracepoint for task load/util signals
  DEBUG: sched: add tracepoint for cpu/freq scale invariance
  sched/fair: filter energy_diff() based on energy_payoff value
  sched/tune: add support to compute normalized energy
  sched/fair: keep track of energy/capacity variations
  sched/fair: add boosted task utilization
  sched/{fair,tune}: track RUNNABLE tasks impact on per CPU boost value
  sched/tune: compute and keep track of per CPU boost value
  sched/tune: add initial support for CGroups based boosting
  sched/fair: add boosted CPU usage
  sched/fair: add function to convert boost value into "margin"
  sched/tune: add sysctl interface to define a boost value
  sched/tune: add detailed documentation
  fixup! sched/fair: jump to max OPP when crossing UP threshold
  fixup! sched: scheduler-driven cpu frequency selection
  sched: rt scheduler sets capacity requirement
  sched: deadline: use deadline bandwidth in scale_rt_capacity
  sched: remove call of sched_avg_update from sched_rt_avg_update
  sched/cpufreq_sched: add trace events
  sched/fair: jump to max OPP when crossing UP threshold
  sched/fair: cpufreq_sched triggers for load balancing
  sched/{core,fair}: trigger OPP change request on fork()
  sched/fair: add triggers for OPP change requests
  sched: scheduler-driven cpu frequency selection
  cpufreq: introduce cpufreq_driver_is_slow
  sched: Consider misfit tasks when load-balancing
  sched: Add group_misfit_task load-balance type
  sched: Add per-cpu max capacity to sched_group_capacity
  sched: Do eas idle balance regardless of the rq avg idle value
  arm64: Enable max freq invariant scheduler load-tracking and capacity support
  arm: Enable max freq invariant scheduler load-tracking and capacity support
  sched: Update max cpu capacity in case of max frequency constraints
  cpufreq: Max freq invariant scheduler load-tracking and cpu capacity support
  arm64, topology: Updates to use DT bindings for EAS costing data
  sched: Support for extracting EAS energy costs from DT
  Documentation: DT bindings for energy model cost data required by EAS
  sched: Disable energy-unfriendly nohz kicks
  sched: Consider a not over-utilized energy-aware system as balanced
  sched: Energy-aware wake-up task placement
  sched: Determine the current sched_group idle-state
  sched, cpuidle: Track cpuidle state index in the scheduler
  sched: Add over-utilization/tipping point indicator
  sched: Estimate energy impact of scheduling decisions
  sched: Extend sched_group_energy to test load-balancing decisions
  sched: Calculate energy consumption of sched_group
  sched: Highest energy aware balancing sched_domain level pointer
  sched: Relocated cpu_util() and change return type
  sched: Compute cpu capacity available at current frequency
  arm64: Cpu invariant scheduler load-tracking and capacity support
  arm: Cpu invariant scheduler load-tracking and capacity support
  sched: Introduce SD_SHARE_CAP_STATES sched_domain flag
  sched: Initialize energy data structures
  sched: Introduce energy data structures
  sched: Make energy awareness a sched feature
  sched: Documentation for scheduler energy cost model
  sched: Prevent unnecessary active balance of single task in sched group
  sched: Enable idle balance to pull single task towards cpu with higher capacity
  sched: Consider spare cpu capacity at task wake-up
  sched: Add cpu capacity awareness to wakeup balancing
  sched: Store system-wide maximum cpu capacity in root domain
  arm: Update arch_scale_cpu_capacity() to reflect change to define
  arm64: Enable frequency invariant scheduler load-tracking support
  arm: Enable frequency invariant scheduler load-tracking support
  cpufreq: Frequency invariant scheduler load-tracking support
  sched/fair: Fix new task's load avg removed from source CPU in wake_up_new_task()

Conflicts:
drivers/cpufreq/Kconfig
include/linux/cpufreq.h
include/trace/events/power.h

Change-Id: I0efa846911ea6b8d3f458115529cf67be73858e3
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
1  2 
drivers/cpufreq/Kconfig
drivers/cpufreq/cpufreq.c
include/linux/cpufreq.h
include/trace/events/power.h
include/trace/events/sched.h
kernel/sched/core.c
kernel/sched/fair.c
kernel/sched/sched.h
kernel/sysctl.c

index 75f63efd7b43144e07561c565a62cbe41b4450af,6f2e96cc680ed0b2a0f592a611dec8e7909d12f4..e4dbeae587443ce1bf644756ed6fa91d3eb4c80e
@@@ -103,15 -103,13 +103,22 @@@ config CPU_FREQ_DEFAULT_GOV_CONSERVATIV
          governor. If unsure have a look at the help section of the
          driver. Fallback governor will be the performance governor.
  
 +config CPU_FREQ_DEFAULT_GOV_INTERACTIVE
 +      bool "interactive"
 +      select CPU_FREQ_GOV_INTERACTIVE
 +      help
 +        Use the CPUFreq governor 'interactive' as default. This allows
 +        you to get a full dynamic cpu frequency capable system by simply
 +        loading your cpufreq low-level hardware driver, using the
 +        'interactive' governor for latency-sensitive workloads.
 +
+ config CPU_FREQ_DEFAULT_GOV_SCHED
+       bool "sched"
+       select CPU_FREQ_GOV_SCHED
+       help
+         Use the CPUfreq governor 'sched' as default. This scales
+         cpu frequency using CPU utilization estimates from the
+         scheduler.
  endchoice
  
  config CPU_FREQ_GOV_PERFORMANCE
index e49512718325b73d59fa52d5eaf225560cce91e0,0f30d11fb528e3dd64b47832892717cc97010cd8..7264820e6443a65fdbd2587a5ee555a134f81cc5
@@@ -2126,9 -2182,10 +2182,11 @@@ static int cpufreq_set_policy(struct cp
        blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
                        CPUFREQ_NOTIFY, new_policy);
  
+       scale_freq_capacity(new_policy, NULL);
        policy->min = new_policy->min;
        policy->max = new_policy->max;
 +      trace_cpu_frequency_limits(policy->max, policy->min, policy->cpu);
  
        pr_debug("new min and max freqs are %u - %u kHz\n",
                 policy->min, policy->max);
index 3ac01621cd1fa0fc654a2177f195efb7d5329aed,b5433349938a04abb33f349e2cf2206f190975e2..60571292a8020178006db5f4ab6096728af99836
@@@ -487,9 -496,9 +496,12 @@@ extern struct cpufreq_governor cpufreq_
  #elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE)
  extern struct cpufreq_governor cpufreq_gov_conservative;
  #define CPUFREQ_DEFAULT_GOVERNOR      (&cpufreq_gov_conservative)
 +#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE)
 +extern struct cpufreq_governor cpufreq_gov_interactive;
 +#define CPUFREQ_DEFAULT_GOVERNOR      (&cpufreq_gov_interactive)
+ #elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED)
+ extern struct cpufreq_governor cpufreq_gov_sched;
+ #define CPUFREQ_DEFAULT_GOVERNOR      (&cpufreq_gov_sched)
  #endif
  
  /*********************************************************************
index 9af0d898016a611135753b4a14c04906bf13fc71,f4be04e4425225eb6bc4c5f61f6905bda4813f37..28e71023601d1961a551d206fb3ffc48d282d475
@@@ -120,31 -120,13 +120,38 @@@ DEFINE_EVENT(cpu, cpu_frequency
        TP_ARGS(frequency, cpu_id)
  );
  
+ DEFINE_EVENT(cpu, cpu_capacity,
+       TP_PROTO(unsigned int capacity, unsigned int cpu_id),
+       TP_ARGS(capacity, cpu_id)
+ );
 +TRACE_EVENT(cpu_frequency_limits,
 +
 +      TP_PROTO(unsigned int max_freq, unsigned int min_freq,
 +              unsigned int cpu_id),
 +
 +      TP_ARGS(max_freq, min_freq, cpu_id),
 +
 +      TP_STRUCT__entry(
 +              __field(        u32,            min_freq        )
 +              __field(        u32,            max_freq        )
 +              __field(        u32,            cpu_id          )
 +      ),
 +
 +      TP_fast_assign(
 +              __entry->min_freq = min_freq;
 +              __entry->max_freq = max_freq;
 +              __entry->cpu_id = cpu_id;
 +      ),
 +
 +      TP_printk("min=%lu max=%lu cpu_id=%lu",
 +                (unsigned long)__entry->min_freq,
 +                (unsigned long)__entry->max_freq,
 +                (unsigned long)__entry->cpu_id)
 +);
 +
  TRACE_EVENT(device_pm_callback_start,
  
        TP_PROTO(struct device *dev, const char *pm_ops, int event),
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/sysctl.c
Simple merge