[Oppo Find 7 and 7a] suraj.das:
Huge kernel update! 03-04-2017

A ton of under the hood kernel update (Changelog below : Most of them taken from Franco's kernel for bacon)

The battery backup is much better and so is the performance.

Headphone sound gain has also been added.

Use official Kernel Adiutor app to tweak the kernel. (The default profile is amazing as it is. The only change I forgot to add by default is setting the TCP Congestion Algorithm to "westwood" You can find it under "Misc Controls" in the app)

Happy flashing!

DOWNLOAD

* kernel/oppo/msm8974/
0fb6dc1 drivers: wakeup: don't check for display state before blocking wakeups
3d3c951 power: qpnp-charger: queue work on system_power_efficient_wq
d520fb2 power: bq27541: queue work on system_power_efficient_wq
22816d2 drivers: wakeup: be more thorough with blocking wakelocks
5d2b826 sound_control: initial code push for Headphones gain userspace interface.
df3bf85 workqueue: remove redundant timer_stats_timer_set_start_info() call
d0ac872 drivers: wakeup: fix merge derp
2548494 cpufreq: interactive: reduce timer with screen off
a6e8552 display: add a simple api to query the display state (on/off) at any point in time
0016702 drivers: wakeup: add options to block (un)popular battery wrecking wakelocks
f63bdcb prima: Fix NULL pointer dereference in limSendP2PActionFrame()
6fdf31c Revert "clock-a7/krait: Change initcall level for early probe"
9ea07d6 workqueue: gut system_nrt[_freezable]_wq()
942817a workqueue: gut flush[_delayed]_work_sync()
8258ccf4 workqueue: make all workqueues non-reentrant
0914210 workqueue: fix checkpatch issues
d945d5e workqueue: use system_highpri_wq for unbind_work
175ea9c workqueue: use system_highpri_wq for highpri workers in rebind_workers()
b63d244 workqueue: introduce system_highpri_wq
62ffe90 workqueue: change value of lcpu in __queue_delayed_work_on()
123cb6c workqueue: correct req_cpu in trace_workqueue_queue_work()
be024bf workqueue: use enum value to set array size of pools in gcwq
25d7265 workqueue: add missing wmb() in clear_work_data()
ab2613d workqueue: fix CPU binding of flush_delayed_work[_sync]()
19fad1c workqueue: implement mod_delayed_work[_on]()
046d707 workqueue: mark a work item being canceled as such
d451632 workqueue: reorganize try_to_grab_pending() and __cancel_timer_work()
33ea59c workqueue: factor out __queue_delayed_work() from queue_delayed_work_on()
6415ba3 workqueue: introduce WORK_OFFQ_FLAG_*
aed2af8 workqueue: move try_to_grab_pending() upwards
21119a3 workqueue: fix zero @delay handling of queue_delayed_work_on()
34ca32b workqueue: unify local CPU queueing handling
6800ee8 workqueue: set delayed_work->timer function on initialization
caa751f workqueue: disable irq while manipulating PENDING
5311e5a workqueue: make queueing functions return bool
a0ecb88 Backport https://lists.linuxfoundation.org/pipermail/ltsi-dev/2013-December/002683.html from Kernel 3.10 workqueue: use a higher bit to give more space to actual non-internal flags
18d992c workqueue: reorder queueing functions so that _on() variants are on top
b6e69ec workqueue: fix spurious CPU locality WARN from process_one_work()
a1f7ea4 workqueue: simplify CPU hotplug code
c26ccda workqueue: remove CPU offline trustee
9ef9095 workqueue: don't butcher idle workers on an offline CPU
05f8aab workqueue: reimplement CPU online rebinding to handle idle workers
c8ac45e workqueue: drop @bind from create_worker()
50a217e workqueue: use mutex for global_cwq manager exclusion
057defe workqueue: ROGUE workers are UNBOUND workers
75fe70c workqueue: drop CPU_DYING notifier operation
8132d25 workqueue: change BUG_ON() to WARN_ON()
d63ef1c workqueue: Catch more locking problems with flush_work()
8f33b79 kthread: kill task_get_live_kthread()
3388d93 kthread: introduce to_live_kthread()
2e5f67b mdss: Change kickoff timeout to 300ms
3cbba19 msm: thermal: Limit the emergency mitigation messages
be530a9 msm: thermal: Check temperature only if probed
e8a4f18 block: bfq: set IOPS mode by default with slice_idle set to 0
288fc53 bfq-sched: Forcefully lookup entities when the cache is inconsistent
b2fdad3 deadline: Allow 0ms deadline latency, increase the read speed
061e601 devfreq: simple_ondemand: don't run the algorithm if total run time is low
b87cee2 PM / devfreq: fix scaling down logic for simple clock scaling
62bbb50 PM / devfreq: Remove unused simple_ondemand governor data
938a083 PM: devfreq: Allow userspace configuration of simple_ondemand
0eb8c98 PM: devfreq: Fix simple_ondemand crashing on startup
4932507 drivers: thermal: queue work on system_power_efficient_wq
6d4569a power: bcl: queue work on system_power_efficient_wq
eaf6959 msm: kgsl: Fix potential spin lock recursion in dispatcher
0738647 msm: kgsl: Unbind the kgsl-event workqueue
18d55eb msm: clock-krait: Remove spinlock in __kpss_mux_set_sel
6b29e0a msm: clock-krait: Work-around retention corner-case
a56b4cc BACKPORT: block: disable entropy contributions for nonrot devices
6f202e9 USB: gadget: f_mtp: Check endpoints in MTP r/w nodes
919c653 mmc: clk_scaling: Fix scale_down_in_low_wr_load sysfs return value
ce7e7a7 mmc: workaround for read ahead issue
1acf69e msm: mdss: KCAL: remove some code meant for later hw revisions
0b70940 msm: mdss: KCAL: Allow kcal_enable to control all post-processing features
aa2895f msm: mdss: KCAL support for post processing control
511a1f6 mdss: move to a kthread for vsync_retire_work_handler
bd5fcf0 mmc: sdio: Claim host in sdio_reset_comm()
e32d366 Revert "UPSTREAM: ppp: take reference on channels netns"
aad903d mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED
8cb99ac block: cfq: accept cfq_slice_async, cfq_slice_idle and cfq_group_idle as 0 unless HZ is >= 1000
e0403a0 net: rmnet_data: Change the print format for addresses
2eebf0b cgroup: prefer %pK to %p
7408191 msm: ipa: fix ioctl input param validation
a6a40fc msm: crypto: fix issues on digest buf and copy_from_user in qcedev.c
c4a6c67 kernel: cgroup: protect cgroup linked lists
beaf0a6 sched: Fix hrtimer_cancel()/rq->lock deadlock
d9c32e3 fs/sync.c: make sync_file_range(2) use WB_SYNC_NONE writeback
5e120a2 Revert "mm/vmscan.c: avoid possible deadlock caused by too_many_isolated()"
affba5d msm: properly unlock mutexes
69e4b32 lowmemorykiller: account for unevictable pages
cb64a76 swap: allow swap readahead to be merged
d39cef6 crypto: msm: Update clock vote for improved performance
7e3216b ASoC: utils: initialize dummy_codec before use
0864f1c kgsl: convert some workqueues to use kthreads
774f7c3 UPSTREAM: zram: fix possible use after free in zcomp_create()
e86714e UPSTREAM: zsmalloc: fix a null pointer dereference in destroy_handle_cache()
f8e2608 UPSTREAM: zram: clear disk io accounting when reset zram device
20a14ea UPSTREAM: zram: fix error return code
3e5cc47 UPSTREAM: zsmalloc: remove extra cond_resched() in __zs_compact
4cc9dae UPSTREAM: zsmalloc: fix fatal corruption due to wrong size class selection
50423f2 UPSTREAM: zsmalloc: remove unnecessary insertion/removal of zspage in compaction
6ef0bb1 UPSTREAM: zsmalloc: micro-optimize zs_object_copy()
3335e23 UPSTREAM: zsmalloc: remove synchronize_rcu from zs_compact()
8675558 UPSTREAM: zram: deprecate zram attrs sysfs nodes
07c8a46 BACKPORT: zram: export new 'mm_stat' sysfs attrs
f25fd6e BACKPORT: zram: export new 'io_stat' sysfs attrs
47baf03 UPSTREAM: zram: describe device attrs in documentation
c040368 UPSTREAM: zram: remove `num_migrated' device attr
15e3347 UPSTREAM: mm/zsmalloc.c: fix comment for get_pages_per_zspage
7c5a2c0 UPSTREAM: zsmalloc: zsmalloc documentation
c668dd6 UPSTREAM: zsmalloc: add fullness into stat
9b0a1c9 UPSTREAM: zsmalloc: record handle in page->private for huge object
a7ab5d8 BACKPORT: zram: support compaction
dfaf8d7 UPSTREAM: zsmalloc: adjust ZS_ALMOST_FULL
988010e UPSTREAM: zsmalloc: support compaction
b30e25f UPSTREAM: zsmalloc: factor out obj_[malloc|free]
c7301ac UPSTREAM: zsmalloc: decouple handle and object
d7adfa9 UPSTREAM: zram: use proper type to update max_used_pages
4bbf47b BACKPORT: mm/zsmalloc: add statistics support
a555e17 BACKPORT: mm/zpool: add name argument to create zpool
859eb42 UPSTREAM: zram: remove request_queue from struct zram
4cdeb90 BACKPORT: zram: remove init_lock in zram_make_request
f455d3a UPSTREAM: zram: check bd_openers instead of bd_holders
b1c0cff UPSTREAM: zram: rework reset and destroy path
1a41e9e UPSTREAM: zram: fix umount-reset_store-mount race condition
b17dff1 UPSTREAM: zram: free meta table in zram_meta_free
1a1ccb9 UPSTREAM: zram: clean up zram_meta_alloc()
ca51019 BACKPORT: mm/zsmalloc: adjust order of functions
3daa00c UPSTREAM: mm/zsmalloc: allocate exactly size of struct zs_pool
c7b6b10 UPSTREAM: mm/zsmalloc: avoid duplicate assignment of prev_class
8e8aa38 UPSTREAM: mm/zram: correct ZRAM_ZERO flag bit position
653f7e0 UPSTREAM: mm/zsmalloc: support allocating obj with size of ZS_MAX_ALLOC_SIZE
57292b3 UPSTREAM: zsmalloc: correct fragile [kmap|kunmap]_atomic use
69a55fb UPSTREAM: zsmalloc: fix zs_init cpu notifier error handling
ee64903 BACKPORT: zram: change parameter from vaild_io_request()
b03ba79 BACKPORT: zram: remove bio parameter from zram_bvec_rw()
3d9560a UPSTREAM: zsmalloc: merge size_class to reduce fragmentation
cbdd61f BACKPORT: zram: avoid kunmap_atomic() of a NULL pointer
265f365 UPSTREAM: zram: avoid NULL pointer access in concurrent situation
1b2c9a3 UPSTREAM: zsmalloc: simplify init_zspage free obj linking
5189181 UPSTREAM: mm/zsmalloc.c: correct comment for fullness group computation
3cf04ad UPSTREAM: zram: use notify_free to account all free notifications
58fb4db UPSTREAM: zram: report maximum used memory
687b817 UPSTREAM: zram: zram memory size limitation
2dcc27e UPSTREAM: zsmalloc: change return value unit of zs_get_total_size_bytes
c0e90e9 UPSTREAM: zsmalloc: move pages_allocated to zs_pool
545f574 BACKPORT: mm/zpool: use prefixed module loading
668dc8f UPSTREAM: zram: fix incorrect stat with failed_reads
496c1df BACKPORT: mm/zpool: zbud/zsmalloc implement zpool
67e6671 BACKPORT: mm/zpool: implement common zpool api to zbud/zsmalloc
2faf3e6 BACKPORT: zram: replace global tb_lock with fine grain lock
3ef6f8d UPSTREAM: zram: use size_t instead of u16
35917b9 UPSTREAM: zram: remove unused SECTOR_SIZE define
3d80b05 UPSTREAM: zram: rename struct `table' to `zram_table_entry'
f83ed60 UPSTREAM: zram: avoid lockdep splat by revalidate_disk
9b14d53 UPSTREAM: zram: revalidate disk after capacity change
35de54c UPSTREAM: zsmalloc: fixup trivial zs size classes value in comments
3a97c67 UPSTREAM: zram: correct offset usage in zram_bio_discard
dd1cec8 UPSTREAM: zram: doc fixes
fedce3b Revert "zram: fix error return code"
ab087af BACKPORT: Staging: zram: Fix variable dereferenced before check
c56a946 BACKPORT: zsmalloc: add more comment
560e13f UPSTREAM: zsmalloc: add Kconfig for enabling page table method
3c5a081 BACKPORT: Staging: Fixes string split across lines in zram
02ba602 zram/zcomp: do not zero out zcomp private pages
8bed321 zram: pass gfp from zcomp frontend to backend
2431d17 zram: try vmalloc() after kmalloc()
6e3b928 zram/zcomp: use GFP_NOIO to allocate streams
c3fc1cc zsmalloc: add maintainers
17a065e MAINTAINERS: add zswap and zbud maintainer
bb28dd4 zram: fix error return code
97f751d zram: optimize memory operations with clear_page()/copy_page()
50b75e2 zram: allow request end to coincide with disksize
70d119f zram: support REQ_DISCARD
68b75d5 zram: use scnprintf() in attrs show() methods
6911b74 zram: propagate error to user
9dcab59 zram: return error-valued pointer from zcomp_create()
6a1c4be zram: move comp allocation out of init_lock
68f52c2 zram: add lz4 algorithm backend
9492875 zram: make compression algorithm selection possible
72663bf zram: add set_max_streams knob
d926c65 zram: add multi stream functionality
d5334d9 zram: document failed_reads, failed_writes stats
c001b8a zram: factor out single stream compression
9a555d5 zram: use zcomp compressing backends
a5914e5 zram: introduce compressing backend abstraction
f0752be zram: delete zram_init_device()
fa7375a zram: move zram size warning to documentation
92fa020 zram: drop not used table `count' member
2a4e957 zram: report failed read and write stats
d0de851 zram: remove zram stats code duplication
1f30e8d zram: use atomic64_t for all zram stats
7f370f1 zram: remove good and bad compress stats
1e89b07 zram: do not pass rw argument to __zram_make_request()
c59534e zram: drop `init_done' struct zram member
837ac14 zram: avoid null access when fail to alloc meta
3b48abb zram: remove zram->lock in read path and change it with mutex
1cca0df zram: remove workqueue for freeing removed pending slot
b50690c zram: introduce zram->tb_lock
8d2aff3 zram: prevent data loss in error cases of function zram_bvec_write()
c82de3d zram: use atomic operation for stat
b7d71d6 zram: fix race between reset and flushing pending work
d276b24 zram: add copyright
d542c47 zram: remove old private * comment
11e9091 zsmalloc: Fix CPU hotplug callback registration
fe51051 zsmalloc: add copyright
a28f607 zram: promote zram from staging
ac65317 Staging: zram: Fix memory leak by refcount mismatch
a3cfdbb zsmalloc: move it under mm
a401c76 Revert "mm: Backport ZRAM/ZSMALLOC from Google kernel"
ac0910b drivers: mmc: according to the comment left by the original author disabling a cyclic redundancy check on data blocks by yield a a performance improvement hovering ~30%
641df08 UPSTREAM: ppp: take reference on channels netns
5927eba ASoC: check for null function pointer for dummy device read/write
6560fb0 slub: fix incorrect return type of get_any_partial()
a3ab16c cpu: Handle smpboot_unpark_threads() uniformly
db8a353 cpu: Defer smpboot kthread unparking until CPU known to scheduler
631ab52 smpboot: use kmemleak_not_leak for smpboot_thread_data
21fa4e0 dm-verity: run in a WQ_HIGHPRI workqueue
dbbf547 msm_fb: display: Enable display debugging through mdp debugfs
df4d0a9 msm: display: Validate MDP, MDDI and HDMI debug reg offset
61d0716 mm: vmscan: support complete shrinker reclaim
2006e7e PM: don't use [delayed_]work_pending()
fdd0d3a arm: smp: Update the topology masks before calling CPU_STARTING notifiers
72295c6 fs/buffer.c: increase the buffer-head per-CPU LRU size
094cdaa msm: vidc: disable debug logs
b2d4e78 PM / QoS: Fix workqueue deadlock when using pm_qos_update_request_timeout()
0ab0e2d tcp: fix timing issue in CUBIC slope calculation
50ea075 msm: vidc: Check for active handle before updating the QoS request
ce760eb soc: qcom: smd: Fix SMD packet sync loss issue
37eb02a msm: vidc: Initialize kernel space stack variables
951ced1 msm: vidc: disable CPU L2 cache PC during video sessions
4cbfecf mm, vmalloc: remove useless variable in vmap_block
66582e9 mm, vmalloc: use well-defined find_last_bit() func
ec9beaf block: Reserve only one queue tag for sync IO if only 3 tags are available
78f01e9 readahead: make context readahead more conservative
d0afc9e binfmt_elf.c: use get_random_int() to fix entropy depleting
c4adbac writeback: fix writeback cache thrashing
5cfa17c mm: vmscan: If kswapd has been running too long, allow it to sleep
56ea820 CPU hotplug, writeback: Don't call writeback_set_ratelimit() too often during hotplug
de5acab sched, smp: Correctly deal with nested sleeps
6a2b85a sched: fix compilation
da850cb sched/fair: Improve the ->group_imb logic
ecd7b44 sched/fair: Revert sched-domain iteration breakage
6239000 sched/fair: Propagate 'struct lb_env' usage into find_busiest_group
fc841ea sched/fair: Add some serialization to the sched_domain load-balance walk
339df2e sched/fair: Let minimally loaded cpu balance the group
be4eb27 sched: Change rq->nr_running to unsigned int
48abeb0 sched: Fix hrtimer_cancel()/rq->lock deadlock
e0b5708 sched: s/do_each_thread/for_each_process_thread/ in debug.c
a1a5363 sched: s/do_each_thread/for_each_process_thread/ in core.c
f7e5527 sched/fair: Avoid integer overflow
0c4fc31b sched/core: Fix an SMP ordering race in try_to_wake_up() vs. schedule()
2abeac2 sched/fair: rq might've been uninitialized, so fix it
98af317 sched/balancing: Reduce the rate of needless idle load balancing
7e38a6b sched/fair: Stop searching for tasks in newidle balance if there are runnable tasks
0bd984a cpufreq: cpu-boost: set interval between consecutive boosts to be at least the duration of the boost instead of a bigger value
005ffb6 cpufreq: cpu-boost: don't boost over user set max freq
bf38621 cpufreq: cpu-boost: export input_boost_enable to userspace
76590c6 cpufreq: interactive: remove hispeed_freq init restriction. How dare you to force me not to 'disable' hispeed_freq?
b585643 cpufreq: interactive: fix old merge derp
3c21d62 driver: soc: bam_dmux: Fix spinlock lock-up
b2c9e4f msm: bam_dmux: Reduce debug logs to avoid watchdog bite
1220395 tty: fix memleak in alloc_pid
7c0bdcf Input: fix defuzzing logic
54e9d57 msm: kgsl: Report GPU frequency correctly in sysfs
2e58177 sched/idle: Avoid spurious wakeup IPIs
4af618d Revert "cpufreq: make the "scaling_cur_freq" sysfs entry pollable"
d955201 sched/fair: Implement fast idling of CPUs when the system is partially loaded
56cefdc cpuidle: remove cross-cpu IPI by new latency request.
56ba277 mm: slub: Default slub_max_order to 0
e55bf3a sched: LOAD_FREQ (4*HZ+61) avoids loadavg Moire. From http://ripke.com/loadavg/moire
da99842 Input: Send events one packet at a time
9467ae7 ARM: make kernel oops easier to read
b60c6d6 sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking
06ad4a1 sched: Make __update_entity_runnable_avg() fast
03af385 sched: Update_cfs_shares at period edge
663b118 sched: Refactor update_shares_cpu() -> update_blocked_avgs()
2c0995b sched: Replace update_shares weight distribution with per-entity computation
aa535bc sched: Maintain runnable averages across throttled periods
3b5260f sched: Normalize tg load contributions against runnable time
c382007 sched: Compute load contribution by a group entity
4557f17 sched: Aggregate total task_group load
9b3c5a0 sched: Account for blocked load waking back up
80fcacf sched: Add an rq migration call-back to sched_class
ebd5c3a sched: Maintain the load contribution of blocked entities
ef8fb41 sched: Aggregate load contributed by task entities on parenting cfs_rq
969ba62 sched: Maintain per-rq runnable averages
2e6d789 sched: Track the runnable average on a per-task entity basis
b731be4 cpufreq: interactive: squash up tp https://github.com/franciscofranco/onyx/commit/3e80d046cd7c32e638ce1343150bd556d43021a9
345c3f7 cpufreq: Protect against hotplug in cpufreq_register_driver()
399ef34 kthread_work: wake up worker only when the worker is idle
2193722 fs: sync: add missing return if fsync is disabled from userspace.
d9d564f fs: sync: enable fsync by default.
6baf778 Added fsync on/off support.
1d01b49 Revert "sched_avg: add run queue averaging."
d93410f msm: do not compile rq_stats.
e32b381 ARM: mutex: use generic atomic_dec-based implementation for ARMv6+
52b99a8 Shift to full defconfig
dbff0ac change tc directory
d67d8fa Remove '+' symbol from kernel version string
e48dafa msm: mpm: use interruptible wait to reduce system's loadavg
10122c6 msm: slimbus: use interruptible wait to reduce system's load average
986beee cpufreq: cpu-boost: Use one work to remove input boost for all CPUs
99d8c27 cpufreq: cpu-boost: Support separate input_boost_freq for different CPUs
17e2378 cpufreq: cpu-boost: Make the code 64 bit compatible
0fc9e50 Makefile: remove REAL_CC wrapper
a4e107c Add toolchain and arch