Hi Alex, Mark,
Please consider following linaro-android pull request for
"linux-linaro-lsk-v3.18-android" LSK branch.
Heads up for this pretty big pull request. Other than regular
net/gadget fixups, a lot of new patches/backports ranging from
scheduler(core, cfs task boosting, eas, walt etc) to Kcov code
coverage landed in aosp/android-3.18.
Regards,
Amit Pundir
The following changes since commit 6fea883f6cd573ce8449ddf75ab59a75aa0df292:
Merge branch 'linux-linaro-lsk-v3.18' into
linux-linaro-lsk-v3.18-android (2016-08-23 12:31:02 +0800)
are available in the git repository at:
git://android.git.linaro.org/kernel/linaro-android.git lsk-v3.18-android
for you to fetch changes up to 0a77803d23ea9f490536fad1770d7d7b03eef3fd:
sched/walt: include missing header for arm_timer_read_counter()
(2016-08-26 10:50:11 +0530)
----------------------------------------------------------------
Al Viro (1):
BACKPORT: ecryptfs: fix handling of directory opening
Amit Pundir (3):
ANDROID: net: fib: remove duplicate assignment
sched/walt: use do_div instead of division operator
sched/walt: include missing header for arm_timer_read_counter()
Anson Jacob (1):
usb: gadget: f_accessory: remove duplicate endpoint alloc
Boqun Feng (1):
sched/fair: Clean up the __sched_period() code
Byungchul Park (9):
sched/fair: Fix a comment reflecting function name change
sched: Ensure a task has a non-normalized vruntime when
returning back to CFS
sched/fair: Factor out the {at,de}taching of the per entity load
{to,from} the runqueue
sched/fair: Have task_move_group_fair() unconditionally add the
entity load to the runqueue
sched/fair: Have task_move_group_fair() also detach entity load
from the old runqueue
sched/fair: Fix switched_to_fair()'s per entity load tracking
sched/fair: Unify switched_{from,to}_fair() and task_move_group_fair()
sched/fair: Modify the comment about lock assumptions in
migrate_task_rq_fair()
sched/fair: Make it possible to account fair load avg consistently
Chris Redpath (1):
arch_timer: add error handling when the MPM global timer is cleared
Christoph Lameter (1):
vmstat: make vmstat_updater deferrable again and shut down on idle
Dietmar Eggemann (22):
sched/fair: Make load tracking frequency scale-invariant
sched/fair: Make utilization tracking CPU scale-invariant
sched/fair: Name utilization related data and functions consistently
sched/fair: Get rid of scaling utilization by capacity_orig
sched/fair: Defer calling scaling functions
cpufreq: Frequency invariant scheduler load-tracking support
arm64: Enable frequency invariant scheduler load-tracking support
sched: Store system-wide maximum cpu capacity in root domain
sched: Enable idle balance to pull single task towards cpu with
higher capacity
sched: Introduce energy data structures
sched: Initialize energy data structures
sched: Determine the current sched_group idle-state
sched: Consider a not over-utilized energy-aware system as balanced
cpufreq: Max freq invariant scheduler load-tracking and cpu
capacity support
sched: Update max cpu capacity in case of max frequency constraints
arm64: Enable max freq invariant scheduler load-tracking and
capacity support
sched: Do eas idle balance regardless of the rq avg idle value
arm: Enable frequency invariant scheduler load-tracking support
arm: topology: Define TC2 energy and provide it to the scheduler
arm: Cpu invariant scheduler load-tracking and capacity support
arm: Enable max freq invariant scheduler load-tracking and
capacity support
DEBUG: sched: add energy procfs interface
Dmitry Vyukov (1):
BACKPORT: kernel: add kcov code coverage
Eric Dumazet (1):
BACKPORT: tcp: make challenge acks less predictable
Hannes Frederic Sowa (1):
ipv6: fix endianness error in icmpv6_err
Jaganath Kanakkassery (1):
UPSTREAM: Bluetooth: Fix potential NULL dereference in RFCOMM
bind callback
James Carr (1):
Implement memory_state_time, used by qcom,cpubw
Jason Low (1):
sched, timer: Convert usages of ACCESS_ONCE() in the scheduler
to READ_ONCE()/WRITE_ONCE()
Joseph Lo (1):
CHROMIUM: sched: update the average of nr_running
Juri Lelli (13):
arm64: Cpu invariant scheduler load-tracking and capacity support
sched/fair: add triggers for OPP change requests
sched/{core,fair}: trigger OPP change request on fork()
sched/fair: cpufreq_sched triggers for load balancing
FIXUP: sched: scheduler-driven cpu frequency selection
FIXUP: sched/fair: jump to max OPP when crossing UP threshold
DEBUG: sched: add tracepoint for cpu/freq scale invariance
DEBUG: sched: add tracepoint for task load/util signals
DEBUG: sched: add tracepoint for CPU load/util signals
DEBUG: sched,cpufreq: add cpu_capacity change tracepoint
sched/fair: add tunable to force selection at cpu granularity
sched/cpufreq_sched: fix thermal capping events
sched/fair: call OPP update when going idle after migration
Kirill Tkhai (4):
sched/deadline: Implement cancel_dl_timer() to use in switched_from_dl()
sched/fair: Fix sched_entity::avg::decay_count initialization
sched/dl: Prevent enqueue of a sleeping task in dl_task_timer()
sched/core: Delete PF_EXITING checks from cpu_cgroup_exit() callback
Lorenzo Colitti (1):
net: ipv6: Fix ping to link-local addresses.
Matt Wagantall (2):
sched/rt: print RT tasks when RT throttling is activated
sched/rt: Add Kconfig option to enable panicking for RT throttling
Michael Turquette (2):
cpufreq: introduce cpufreq_driver_is_slow
sched: scheduler-driven cpu frequency selection
Mike Galbraith (1):
sched/fair: Beef up wake_wide()
Morten Rasmussen (24):
sched: Make sched entity usage tracking scale-invariant
sched: Track group sched_entity usage contributions
sched/fair: Convert arch_scale_cpu_capacity() from weak function
to #define
sched/fair: Initialize task load and utilization before placing task on rq
sched: Add cpu capacity awareness to wakeup balancing
sched: Consider spare cpu capacity at task wake-up
sched: Prevent unnecessary active balance of single task in sched group
sched: Documentation for scheduler energy cost model
sched: Make energy awareness a sched feature
sched: Introduce SD_SHARE_CAP_STATES sched_domain flag
sched: Compute cpu capacity available at current frequency
sched: Relocated cpu_util() and change return type
sched: Highest energy aware balancing sched_domain level pointer
sched: Calculate energy consumption of sched_group
sched: Extend sched_group_energy to test load-balancing decisions
sched: Estimate energy impact of scheduling decisions
sched: Add over-utilization/tipping point indicator
sched, cpuidle: Track cpuidle state index in the scheduler
sched: Energy-aware wake-up task placement
sched: Disable energy-unfriendly nohz kicks
sched: Add per-cpu max capacity to sched_group_capacity
sched: Add group_misfit_task load-balance type
sched: Consider misfit tasks when load-balancing
arm: Update arch_scale_cpu_capacity() to reflect change to define
Patrick Bellasi (32):
sched/tune: add detailed documentation
sched/tune: add sysctl interface to define a boost value
sched/fair: add function to convert boost value into "margin"
sched/fair: add boosted CPU usage
sched/tune: add initial support for CGroups based boosting
sched/tune: compute and keep track of per CPU boost value
sched/{fair,tune}: track RUNNABLE tasks impact on per CPU boost value
sched/fair: add boosted task utilization
sched/fair: keep track of energy/capacity variations
sched/tune: add support to compute normalized energy
sched/fair: filter energy_diff() based on energy_payoff value
FIXUP: sched/tune: properly account of exiting tasks (only for
kernel < v4.4)
DEBUG: sched/tune: add tracepoint for SchedTune configuration update
DEBUG: sched/tune: add tracepoint for CPU boost signal
DEBUG: sched/tune: add tracepoint for schedtune_tasks_update() values
DEBUG: sched/tune: add tracepoint on boostgroup updates
DEBUG: sched/tune: add tracepoint for task boost signal
DEBUG: sched/tune: add tracepoint for energy_diff() values
DEBUG: sched/tune: add tracepoint on P-E space filtering
FIXUP: sched: fix build for non-SMP target
FIX: sched/tune: update usage of boosted task utilisation on CPU selection
FIX: sched/tune: move schedtune_nornalize_energy into fair.c
FIXUP: sched/tune: fix payoff calculation for boost region
FIXUP: sched/tune: fix compilation error on !CONFIG_CGROUP_SCHEDTUNE
sched/{fair,tune}: simplify fair.c code
sched/tune: use a single initialisation function
FIXUP: sched/tune: fix accounting for runnable tasks
sched/tune: fix PB and PC cuts indexes definition
FIXUP: sched: fix set_cfs_cpu_capacity when WALT is in use
FIXUP: sched: fix SchedFreq integration for both PELT and WALT
DEBUG: sched: add tracepoint for RD overutilized
FIXUP: sched/tune: do initialization as a postcore_initicall
Peter Zijlstra (15):
sched/core: Validate rq_clock*() serialization
sched/deadline: Fix deadline parameter modification handling
sched/deadline: Fix stale yield state
sched: Move the loadavg code to a more obvious location
sched,dl: Fix sched class hopping CBS hole
sched: Move code around
sched: Fix a race between __kthread_bind() and sched_setaffinity()
sched/fair: Make the entity load aging on attaching tunable
sched/core: Remove unused argument from sched_class::task_move_group
sched: Optimize freq invariant accounting
sched/fair: Rename scale() to cap_scale()
sched/fair: Optimize __update_load_avg()
sched/fair: Optimize per entity utilization tracking
sched/fair: Clean up the explanation around decaying load update misses
UPSTREAM: sched: Fix a race between __kthread_bind() and
sched_setaffinity()
Preeti U Murthy (1):
UPSTREAM: sched: Improve load balancing in the presence of idle CPUs
Rafael J. Wysocki (2):
UPSTREAM: PM / sleep: Re-implement suspend-to-idle handling
UPSTREAM: cpuidle: Clean up fallback handling in cpuidle_idle_call()
Rainer Weikusat (1):
UPSTREAM: af_unix: Guard against other == sk in unix_dgram_sendmsg
Ricky Liang (1):
FIXUP: sched: scheduler-driven cpu frequency selection
Robin Randhawa (3):
Documentation: DT bindings for energy model cost data required by EAS
sched: Support for extracting EAS energy costs from DT
arm64, topology: Updates to use DT bindings for EAS costing data
Ruchi Kandoi (1):
power: Refactors the code which prints suspend time.
Srinath Sridharan (8):
sched/cpufreq_sched: Consolidated update
sched: EAS: take cstate into account when selecting idle core
sched/tune: Add support for negative boost values
sched/walt: Accounting for number of irqs pending on each core
sched/rt: Avoid moving rt task if destination CPU does not run
low priority task
sched/tune: Introducing a new schedtune attribute prefer_idle
sched/fair: Picking cpus with low OPPs for tasks that prefer idle CPUs
sched/fair: Favor higher cpus only for boosted tasks
Srivatsa Vaddagiri (1):
sched: Introduce Window Assisted Load Tracking (WALT)
Steve Muckle (2):
sched/fair: jump to max OPP when crossing UP threshold
sched/cpufreq_sched: add trace events
Sudeep Holla (1):
arm64: defconfig: add few misc configs for development/debugging/testing
Takashi Iwai (1):
UPSTREAM: ALSA: timer: Fix race among timer ioctls
Tejun Heo (2):
cpumask, nodemask: implement cpumask/nodemask_pr_args()
cgroup: reorder SUBSYS(blkio) in cgroup_subsys.h
Thomas Gleixner (1):
sched: deadline: Use hrtimer_start()
Todd Kjos (6):
sched/fair: add tunable to set initial task load
sched/fair: optimize idle cpu selection for boosted tasks
sched: EAS: Avoid causing spikes to max-freq unnecessarily
FIXUP: sched/fair: Fix hang during suspend in sched_group_energy
FIXUP: sched: Fix double-release of spinlock in move_queued_task
sched: use util instead of capacity to select busy cpu
Vincent Guittot (14):
sched: Add sched_avg::utilization_avg_contrib
sched: Calculate CPU's usage statistic and put it into struct
sg_lb_stats::group_usage
sched/fair: Implement update_blocked_averages() for
CONFIG_FAIR_GROUP_SCHED=n
sched/fair: Fix nohz.next_balance update
sched: Make scale_rt invariant with frequency
sched: Move CFS tasks to CPUs with higher capacity
sched: Remove frequency scaling from cpu_capacity
sched: Add struct rq::cpu_capacity_orig
sched: Replace capacity_factor by usage
sched: Remove unused struct sched_group_capacity::capacity_orig
sched: remove call of sched_avg_update from sched_rt_avg_update
sched: deadline: use deadline bandwidth in scale_rt_capacity
sched: rt scheduler sets capacity requirement
UPSTREAM: sched: Add SD_PREFER_SIBLING for SMT level
Waiman Long (3):
sched/fair: Avoid redundant idle_cpu() call in update_sg_lb_stats()
sched/fair: Move the cache-hot 'load_avg' variable into its own cacheline
sched/fair: Disable the task group load_avg update for the root_task_group
Wanpeng Li (5):
sched/deadline: Fix artificial overrun introduced by yield_task_dl()
sched/deadline: Reschedule from switched_from_dl() after a successful pull
sched/deadline: Don't check CONFIG_SMP in switched_from_dl()
sched/deadline: Support DL task migration during CPU hotplug
sched/fair: Fix stale overloaded status in the busiest group finding logic
Winter Wang (1):
UPSTREAM: usb: gadget: configfs: add mutex lock before unregister gadget
Xunlei Pang (1):
sched/fair: Fix the dealing with decay_count in
__synchronize_entity_decay()
Yao Dongdong (1):
sched/core: Remove check of p->sched_class
Yuyang Du (10):
sched/fair: Remove rq's runnable avg
sched/fair: Rewrite runnable load and utilization average tracking
sched/fair: Init cfs_rq's sched_entity load average
sched/fair: Remove task and group entity load when they are dead
sched/fair: Provide runnable_load_avg back to cfs_rq
sched/fair: Clean up load average references
sched/fair: Fix overly small weight for interactive group entities
sched/fair: Update task group's load_avg after task migration
sched/fair: Fix new task's load avg removed from source CPU in
wake_up_new_task()
UPSTREAM: sched/fair: Avoid pulling all tasks in idle balancing
Documentation/devicetree/bindings/misc/memory-state-time.txt | 8 +
Documentation/devicetree/bindings/scheduler/sched-energy-costs.txt |
360 ++++++++++++
Documentation/kcov.txt | 111 ++++
Documentation/scheduler/sched-energy.txt |
362 ++++++++++++
Documentation/scheduler/sched-tune.txt |
367 ++++++++++++
Makefile | 11 +-
android/configs/android-recommended.cfg | 1 +
arch/arm/include/asm/topology.h | 7 +
arch/arm/kernel/topology.c | 149 ++++-
arch/arm64/configs/defconfig | 33 ++
arch/arm64/include/asm/topology.h | 9 +
arch/arm64/kernel/topology.c | 81 +++
arch/x86/Kconfig | 6 +
arch/x86/boot/Makefile | 10 +-
arch/x86/boot/compressed/Makefile | 3 +
arch/x86/kernel/Makefile | 6 +
arch/x86/kernel/apic/Makefile | 4 +
arch/x86/kernel/cpu/Makefile | 4 +
arch/x86/lib/Makefile | 3 +
arch/x86/mm/Makefile | 3 +
arch/x86/realmode/rm/Makefile | 3 +
drivers/cpufreq/Kconfig | 22 +
drivers/cpufreq/cpufreq.c | 58 ++
drivers/cpuidle/cpuidle.c | 55 +-
drivers/firmware/efi/libstub/Makefile | 3 +
drivers/misc/Kconfig | 6 +
drivers/misc/Makefile | 1 +
drivers/misc/memory_state_time.c |
454 +++++++++++++++
drivers/usb/gadget/configfs.c | 2 +
drivers/usb/gadget/function/f_accessory.c | 9 -
fs/ecryptfs/file.c | 71 ++-
include/linux/cgroup_subsys.h | 12 +-
include/linux/cpufreq.h | 15 +
include/linux/cpuidle.h | 7 +-
include/linux/cpumask.h | 8 +
include/linux/kcov.h | 29 +
include/linux/kthread.h | 1 +
include/linux/memory-state-time.h | 42 ++
include/linux/nodemask.h | 8 +
include/linux/sched.h | 145 ++++-
include/linux/sched/sysctl.h | 26 +
include/linux/sched_energy.h | 44 ++
include/linux/suspend.h | 16 +
include/linux/vmstat.h | 2 +
include/net/fib_rules.h | 2 -
include/trace/events/cpufreq_sched.h | 87 +++
include/trace/events/power.h | 8 +
include/trace/events/sched.h |
511 +++++++++++++++++
include/uapi/linux/kcov.h | 10 +
init/Kconfig | 53 ++
kernel/Makefile | 12 +
kernel/exit.c | 7 +
kernel/fork.c | 5 +-
kernel/kcov.c |
273 +++++++++
kernel/kthread.c | 20 +-
kernel/locking/Makefile | 3 +
kernel/power/Makefile | 1 -
kernel/power/suspend.c | 43 +-
kernel/power/suspend_time.c | 111 ----
kernel/power/wakeup_reason.c | 63 +++
kernel/rcu/Makefile | 4 +
kernel/sched/Makefile | 11 +-
kernel/sched/auto_group.c | 2 +-
kernel/sched/auto_group.h | 2 +-
kernel/sched/core.c |
986 ++++++++++++++++++++++-----------
kernel/sched/cpufreq_sched.c |
500 +++++++++++++++++
kernel/sched/cputime.c | 18 +-
kernel/sched/deadline.c |
270 ++++++---
kernel/sched/debug.c | 42 +-
kernel/sched/energy.c | 124 +++++
kernel/sched/fair.c |
2764 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
kernel/sched/features.h | 13 +-
kernel/sched/idle.c | 56 +-
kernel/sched/{proc.c => loadavg.c} |
247 +--------
kernel/sched/rt.c | 115 +++-
kernel/sched/sched.h |
358 +++++++++++-
kernel/sched/stop_task.c | 3 +
kernel/sched/tune.c |
967 ++++++++++++++++++++++++++++++++
kernel/sched/tune.h | 54 ++
kernel/sched/wait.c | 4 +-
kernel/sched/walt.c |
1171 +++++++++++++++++++++++++++++++++++++++
kernel/sched/walt.h | 62 +++
kernel/sysctl.c | 73 +++
kernel/time/posix-cpu-timers.c | 8 +-
kernel/workqueue.c | 6 +-
lib/Kconfig.debug | 30 +
lib/Makefile | 12 +
mm/Makefile | 15 +
mm/kasan/Makefile | 2 +
mm/vmstat.c | 73 ++-
net/bluetooth/rfcomm/sock.c | 20 +-
net/ipv4/tcp_input.c | 12 +-
net/ipv6/icmp.c | 2 +-
net/ipv6/ping.c | 38 +-
net/unix/af_unix.c | 7 +-
scripts/Makefile.lib | 14 +-
sound/core/timer.c | 32 +-
97 files changed, 10204 insertions(+), 1699 deletions(-)
create mode 100644 Documentation/devicetree/bindings/misc/memory-state-time.txt
create mode 100644
Documentation/devicetree/bindings/scheduler/sched-energy-costs.txt
create mode 100644 Documentation/kcov.txt
create mode 100644 Documentation/scheduler/sched-energy.txt
create mode 100644 Documentation/scheduler/sched-tune.txt
create mode 100644 drivers/misc/memory_state_time.c
create mode 100644 include/linux/kcov.h
create mode 100644 include/linux/memory-state-time.h
create mode 100644 include/linux/sched_energy.h
create mode 100644 include/trace/events/cpufreq_sched.h
create mode 100644 include/uapi/linux/kcov.h
create mode 100644 kernel/kcov.c
delete mode 100644 kernel/power/suspend_time.c
create mode 100644 kernel/sched/cpufreq_sched.c
create mode 100644 kernel/sched/energy.c
rename kernel/sched/{proc.c => loadavg.c} (62%)
create mode 100644 kernel/sched/tune.c
create mode 100644 kernel/sched/tune.h
create mode 100644 kernel/sched/walt.c
create mode 100644 kernel/sched/walt.h
This patchset provides a pseudo-NMI for arm64 kernels by reimplementing
the irqflags macros to modify the GIC PMR (the priority mask register
accessible as a system register on GICv3 and later) rather than the
PSR. The patchset includes an implementation of
arch_trigger_all_cpu_backtrace() for arm64 allowing the new code to be
exercised.
The code works-for-me (tm) and is more "real" than the last time I
shared these patches. However there remain a couple of limitations
and caveats:
1. Requires GICv3+ hardware to be effective meaning it has mostly been
tested using FVP. The alternatives runtime patching system is
employed so systems with earlier GIC architectures are still
bootable but will not benefit from NMI simulation.
2. FVP needs a bit of hacking to be able to run <SysRq-L> from an ISR.
That's a shame because <SysRq-L> is a great way to observe an NMI
preempting an IRQ handler. Testers are welcome to ping me offline
and I will share the hacks I have been using to test with.
v3:
* Rebased on v4.8-rc2
* Restrict apply_alternatives_early() to consider only the
capabilities needed for the kernel to function correctly (Will
Deacon).
* Added a bunch of notrace qualifiers (Will Deacon)
* Used byte addressing to configure the interrupt priorities (Marc
Zygnier)
* Fixed implementation of interrupts_enabled()
* Eliminated the over-zealous inclusion of <linux/irqchip/arm-gic-v3.h>.
* Pushed a few symbol defintions towards the end of the patch series.
v2:
* Removed the isb instructions. The PMR is self-synchronizing so
these are not needed (Dave Martin)
* Use alternative runtime patching to allow the same kernel binary
to boot systems with and without GICv3+ (Dave Martin).
* Added code to properly distinguish between NMI and normal IRQ and to
call into NMI handling code where needed.
* Replaced the IPI backtrace logic with a newer version (from Russell
King).
Daniel Thompson (7):
irqchip: gic-v3: Reset BPR during initialization
arm64: Add support for on-demand backtrace of other CPUs
arm64: cpufeature: Allow early detect of specific features
arm64: alternative: Apply alternatives early in boot process
arm64: irqflags: Reorder the fiq & async macros
arm64: irqflags: Use ICC sysregs to implement IRQ masking
arm64: Implement IPI_CPU_BACKTRACE using pseudo-NMIs
arch/arm/include/asm/arch_gicv3.h | 6 ++
arch/arm64/Kconfig | 16 ++++
arch/arm64/include/asm/alternative.h | 1 +
arch/arm64/include/asm/arch_gicv3.h | 57 +++++++++++++
arch/arm64/include/asm/assembler.h | 55 +++++++++++-
arch/arm64/include/asm/hardirq.h | 2 +-
arch/arm64/include/asm/irq.h | 3 +
arch/arm64/include/asm/irqflags.h | 118 ++++++++++++++++++++++++--
arch/arm64/include/asm/ptrace.h | 23 +++++
arch/arm64/include/asm/smp.h | 2 +
arch/arm64/kernel/alternative.c | 36 +++++++-
arch/arm64/kernel/cpufeature.c | 92 +++++++++++---------
arch/arm64/kernel/entry.S | 151 +++++++++++++++++++++++++++------
arch/arm64/kernel/head.S | 35 ++++++++
arch/arm64/kernel/smp.c | 68 ++++++++++++++-
arch/arm64/mm/proc.S | 23 +++++
drivers/irqchip/irq-gic-v3.c | 72 ++++++++++++++++
include/linux/irqchip/arm-gic-common.h | 8 ++
include/linux/irqchip/arm-gic.h | 5 --
lib/nmi_backtrace.c | 9 +-
20 files changed, 697 insertions(+), 85 deletions(-)
--
2.7.4