The order in which resources were freed in wm8994_device_exit() isn't
correct. The regulators are removed before they are disabled.
Fix it by reordering code a bit, which makes it exact opposite of
wm8994_device_init() as well.
Signed-off-by: Viresh Kumar <viresh.kumar(a)linaro.org>
---
drivers/mfd/wm8994-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c
index 7eec619a6023..1e644aa53a2d 100644
--- a/drivers/mfd/wm8994-core.c
+++ b/drivers/mfd/wm8994-core.c
@@ -604,10 +604,10 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq)
static void wm8994_device_exit(struct wm8994 *wm8994)
{
pm_runtime_disable(wm8994->dev);
- mfd_remove_devices(wm8994->dev);
wm8994_irq_exit(wm8994);
regulator_bulk_disable(wm8994->num_supplies,
wm8994->supplies);
+ mfd_remove_devices(wm8994->dev);
}
static const struct of_device_id wm8994_of_match[] = {
--
2.7.1.410.g6faf27b
Tree/Branch: v4.7.4
Git describe: v4.7.4
Commit: bd333da7f0 Linux 4.7.4
Build Time: 70 min 32 sec
Passed: 9 / 9 (100.00 %)
Failed: 0 / 9 ( 0.00 %)
Errors: 0
Warnings: 2
Section Mismatches: 0
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
2 warnings 0 mismatches : arm64-allmodconfig
1 warnings 0 mismatches : arm-allmodconfig
-------------------------------------------------------------------------------
Warnings Summary: 2
2 ../include/linux/dynamic_debug.h:86:3: warning: 'virq' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../fs/reiserfs/ibalance.c:1156:2: warning: 'new_insert_key' may be used uninitialized in this function [-Wmaybe-uninitialized]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm64-allmodconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
../include/linux/dynamic_debug.h:86:3: warning: 'virq' may be used uninitialized in this function [-Wmaybe-uninitialized]
../fs/reiserfs/ibalance.c:1156:2: warning: 'new_insert_key' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
arm-allmodconfig : PASS, 0 errors, 1 warnings, 0 section mismatches
Warnings:
../include/linux/dynamic_debug.h:86:3: warning: 'virq' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
arm64-allnoconfig
arm-multi_v5_defconfig
arm-multi_v7_defconfig
x86_64-defconfig
arm-allnoconfig
x86_64-allnoconfig
arm64-defconfig
Hi Alex, Mark,
Please consider following linaro-android pull request for
"linux-linaro-lsk-v4.4-android" LSK branch.
EAS landed in aosp/android-4.4 last week. So heads up for this pretty
big pull request.
As usual build tested for x86_64(allmodconfig), arm64(defconfig +
android configs), arm(vexpress + android configs) and boot tested on
Qemu with Android M.
Regards,
Amit Pundir
The following changes since commit b56111f481e16510558a892d5d56cb90cadd96c0:
Merge branch 'linux-linaro-lsk-v4.4' into
linux-linaro-lsk-v4.4-android (2016-08-30 10:27:13 +0800)
are available in the git repository at:
git://android.git.linaro.org/kernel/linaro-android.git lsk-v4.4-android
for you to fetch changes up to d3a1d035ef89cfb89cf6e2128d44b95771f2c7b4:
UPSTREAM: audit: fix a double fetch in audit_log_single_execve_arg()
(2016-09-14 15:17:01 +0530)
----------------------------------------------------------------
Amit Pundir (4):
ANDROID: base-cfg: drop SECCOMP_FILTER config
sched/walt: include missing header for arm_timer_read_counter()
DEBUG: cpufreq: fix cpu_capacity tracing build for non-smp systems
sched/walt: use do_div instead of division operator
Ard Biesheuvel (1):
BACKPORT: arm64: mm: fix location of _etext
Badhri Jagan Sridharan (1):
ANDROID: dm: android-verity: Allow android-verity to be compiled
as an independent module
Balbir Singh (1):
RFC: FROMLIST: cgroup: reduce read locked section of
cgroup_threadgroup_rwsem during fork
Benjamin Tissoires (1):
UPSTREAM: HID: core: prevent out-of-bound readings
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
Dan Carpenter (1):
UPSTREAM: [media] xc2028: unlock on error in xc2028_set_config()
Dietmar Eggemann (17):
cpufreq: Frequency invariant scheduler load-tracking support
arm: Enable 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
arm: Cpu invariant scheduler load-tracking and capacity support
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
arm: Enable max freq invariant scheduler load-tracking and
capacity support
arm64: Enable max freq invariant scheduler load-tracking and
capacity support
sched: Do eas idle balance regardless of the rq avg idle value
DEBUG: sched: add energy procfs interface
arm: topology: Define TC2 energy and provide it to the scheduler
Eric Biggers (1):
UPSTREAM: usercopy: avoid potentially undefined behavior in pointer math
Eric Dumazet (1):
UPSTREAM: tcp: fix use after free in tcp_xmit_retransmit_queue()
Guenter Roeck (1):
ANDROID: rcu_sync: Export rcu_sync_lockdep_assert
Hannes Frederic Sowa (1):
ipv6: fix endianness error in icmpv6_err
John Stultz (1):
cpufreq: Kconfig: Fixup incorrect selection by CPU_FREQ_DEFAULT_GOV_SCHED
Jon Medhurst (1):
arm: Fix #if/#ifdef typo in topology.c
Joonsoo Kim (1):
UPSTREAM: mm/slub: support left redzone
Joseph Lo (1):
CHROMIUM: sched: update the average of nr_running
Josh Poimboeuf (1):
UPSTREAM: usercopy: fix overlap check for kernel text
Jungseung Lee (1):
UPSTREAM: ARM: 8494/1: mm: Enable PXN when running non-LPAE
kernel on LPAE processor
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
Kees Cook (5):
BACKPORT: ARM: 8583/1: mm: fix location of _etext
UPSTREAM: x86/uaccess: force copy_*_user() to be inlined
BACKPORT: usercopy: fold builtin_const check into inline function
UPSTREAM: usercopy: force check_object_size() inline
UPSTREAM: usercopy: remove page-spanning test for now
Linus Torvalds (2):
UPSTREAM: unsafe_[get|put]_user: change interface to use a error
target label
UPSTREAM: Make the hardened user-copy code depend on having a
hardened allocator
Lorenzo Colitti (1):
net: ipv6: Fix ping to link-local addresses.
Mark Salyzyn (1):
FROMLIST: pstore: drop pmsg bounce buffer
Matt Wagantall (2):
sched/rt: print RT tasks when RT throttling is activated
sched/rt: Add Kconfig option to enable panicking for RT throttling
Mauro Carvalho Chehab (1):
UPSTREAM: [media] xc2028: avoid use after free
Michael Turquette (2):
cpufreq: introduce cpufreq_driver_is_slow
sched: scheduler-driven cpu frequency selection
Mohamad Ayyash (1):
BACKPORT: Don't show empty tag stats for unprivileged uids
Mohan Srinivasan (2):
Android: MMC/UFS IO Latency Histograms.
Android: Fix build breakages.
Morten Rasmussen (20):
arm: Update arch_scale_cpu_capacity() to reflect change to define
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
Patrick Bellasi (31):
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
DEBUG: schedtune: add tracepoint for SchedTune configuration update
DEBUG: schedtune: add tracepoint for CPU boost signal
DEBUG: schedtune: add tracepoint for schedtune_tasks_update() values
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
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
FIXUP: sched/tune: add fixes missing from a previous patch
FIXUP: sched/tune: update accouting before CPU capacity
Paul Moore (1):
UPSTREAM: audit: fix a double fetch in audit_log_single_execve_arg()
Peter Hurley (1):
UPSTREAM: tty: Prevent ldisc drivers from re-using stale tty fields
Peter Zijlstra (3):
RFC: FROMLIST: locking/percpu-rwsem: Optimize readers and reduce
global impact
RFC: FROMLIST: cgroup: avoid synchronize_sched() in __cgroup_procs_write()
UPSTREAM: sched: Fix a race between __kthread_bind() and
sched_setaffinity()
Phil Turnbull (1):
UPSTREAM: netfilter: nfnetlink: correctly validate length of
batch messages
Ricky Liang (1):
FIXUP: sched: scheduler-driven cpu frequency selection
Riley Andrews (1):
cpuset: Make cpusets restore on hotplug
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
Srinath Sridharan (7):
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/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 (3):
sched/fair: jump to max OPP when crossing UP threshold
sched/cpufreq_sched: add trace events
arm: Fix build error "conflicting types for 'scale_cpu_capacity'"
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 (3):
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
Waiman Long (1):
sched/fair: Avoid redundant idle_cpu() call in update_sg_lb_stats()
Yongqin Liu (1):
ANDROID: base-cfg: enable SECCOMP config
Yuyang Du (1):
sched/fair: Fix new task's load avg removed from source CPU in
wake_up_new_task()
Documentation/devicetree/bindings/scheduler/sched-energy-costs.txt |
360 +++++++++++++++++++++++++
Documentation/scheduler/sched-energy.txt |
362 +++++++++++++++++++++++++
Documentation/scheduler/sched-tune.txt |
366 +++++++++++++++++++++++++
android/configs/android-base.cfg | 1 +
arch/arm/include/asm/topology.h | 7 +
arch/arm/kernel/setup.c | 2 +-
arch/arm/kernel/topology.c |
149 ++++++++++-
arch/arm/kernel/vmlinux.lds.S | 4 +-
arch/arm/mm/mmu.c | 2 +-
arch/arm64/include/asm/topology.h | 9 +
arch/arm64/kernel/setup.c | 2 +-
arch/arm64/kernel/topology.c |
81 ++++++
arch/arm64/kernel/vmlinux.lds.S | 7 +-
arch/arm64/mm/init.c | 4 +-
arch/arm64/mm/mmu.c | 20 +-
arch/x86/include/asm/uaccess.h | 20 +-
block/blk-core.c |
84 ++++++
drivers/cpufreq/Kconfig | 21 ++
drivers/cpufreq/cpufreq.c | 64 +++++
drivers/cpuidle/cpuidle.c | 4 +-
drivers/hid/hid-core.c | 3 +
drivers/md/Kconfig | 3 +-
drivers/md/Makefile | 5 +-
drivers/md/dm-linear.c | 6 +
drivers/md/dm-verity-target.c | 7 +
drivers/media/tuners/tuner-xc2028.c | 6 +-
drivers/mmc/core/core.c | 66 ++++-
drivers/mmc/core/host.c | 6 +-
drivers/mmc/core/host.h | 5 +
drivers/scsi/ufs/ufshcd.c |
81 ++++++
drivers/scsi/ufs/ufshcd.h | 3 +
drivers/tty/tty_ldisc.c | 7 +
fs/pstore/platform.c | 36 +++
fs/pstore/pmsg.c | 35 +--
fs/pstore/ram.c | 19 ++
fs/pstore/ram_core.c | 47 +++-
include/linux/blkdev.h |
76 ++++++
include/linux/cgroup_subsys.h | 4 +
include/linux/cpufreq.h | 16 ++
include/linux/cpuidle.h | 2 +-
include/linux/mmc/core.h | 2 +
include/linux/mmc/host.h | 6 +
include/linux/percpu-rwsem.h |
84 +++++-
include/linux/pstore.h | 11 +-
include/linux/pstore_ram.h | 7 +-
include/linux/rcu_sync.h | 1 +
include/linux/sched.h |
86 ++++++
include/linux/sched/sysctl.h | 26 ++
include/linux/sched_energy.h | 44 +++
include/linux/slub_def.h | 1 +
include/linux/thread_info.h | 7 +-
include/linux/uaccess.h | 4 +-
include/linux/vmstat.h | 2 +
include/net/tcp.h | 2 +
include/trace/events/cpufreq_sched.h |
87 ++++++
include/trace/events/power.h | 7 +
include/trace/events/sched.h |
498 ++++++++++++++++++++++++++++++++++
init/Kconfig | 53 ++++
kernel/auditsc.c |
332 ++++++++++++-----------
kernel/cgroup.c | 6 +
kernel/cpuset.c | 33 ++-
kernel/exit.c | 5 +
kernel/fork.c | 4 +-
kernel/locking/percpu-rwsem.c |
229 +++++++++-------
kernel/rcu/sync.c | 13 +
kernel/sched/Makefile | 5 +-
kernel/sched/core.c |
345 +++++++++++++++++++++++-
kernel/sched/cpufreq_sched.c |
499 ++++++++++++++++++++++++++++++++++
kernel/sched/cputime.c | 16 ++
kernel/sched/deadline.c | 33 ++-
kernel/sched/energy.c |
124 +++++++++
kernel/sched/fair.c |
1322 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
kernel/sched/features.h | 5 +
kernel/sched/idle.c | 4 +-
kernel/sched/rt.c |
106 +++++++-
kernel/sched/sched.h |
265 ++++++++++++++++++-
kernel/sched/stop_task.c | 3 +
kernel/sched/tune.c |
951 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
kernel/sched/tune.h | 55 ++++
kernel/sched/walt.c |
1171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
kernel/sched/walt.h | 62 +++++
kernel/sysctl.c | 73 +++++
lib/Kconfig.debug | 9 +
lib/strncpy_from_user.c | 8 +-
lib/strnlen_user.c | 7 +-
mm/slub.c |
100 +++++--
mm/usercopy.c | 65 +++--
mm/vmstat.c | 69 +++--
net/ipv6/icmp.c | 2 +-
net/ipv6/ping.c | 38 ++-
net/netfilter/nfnetlink.c | 10 +-
net/netfilter/xt_qtaguid.c | 5 +-
security/Kconfig | 12 +
93 files changed, 8306 insertions(+), 610 deletions(-)
create mode 100644
Documentation/devicetree/bindings/scheduler/sched-energy-costs.txt
create mode 100644 Documentation/scheduler/sched-energy.txt
create mode 100644 Documentation/scheduler/sched-tune.txt
create mode 100644 include/linux/sched_energy.h
create mode 100644 include/trace/events/cpufreq_sched.h
create mode 100644 kernel/sched/cpufreq_sched.c
create mode 100644 kernel/sched/energy.c
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
Hi Rafael et. al.,
We had some discussions [1] earlier on the PM mailing about
upstreaming the cpufreq governor most widely used on Android Mobile
phones and tablets: Interactive governor.
People (including Rafael) mostly agreed that we better get it upstreamed
and here is an attempt to upstream most of it (idle notifiers aren't
included in this series).
I picked the latest code spread over 70-80 patches from [2]. The
unmodified code, based over mainline is pushed [4] for reference.
I have updated the governor to align it with the current practices
followed with mainline governors, like using utilization hooks from the
scheduler and handling kobject (for governor's sysfs directory) in a
race free manner. And of course this included general cleanup of the
governor as well. This version is pushed here [3] for testing.
The Android version of interactive governor also uses idle EXIT
notifiers, but that code isn't part of this series and will be sent
separately later. For people interested in looking at that, those are 3
minor patches on top of this series and are pushed here [5].
I haven't changed the core logic of the governor intentionally, as that
rather requires more in-depth knowledge of the use case for which the
optimizations have been done. So, we should do any such thing later on
with new patches, so that people can fix regressions easily.
I also haven't tried to change the userspace interface as that may have
broken the userspace that already exists and uses this governor.
This has been lightly tested on my Exynos board (dual ARM A15), where
the governor gets inserted/removed multiple times, the sysfs files are
all functional. The frequency gets changed with load, etc.
Amit Pundir (Linaro) has done extensive testing with Android and
compared results of both Original Interactive governor and the modified
one (in this series) and found them to be comparable.
This series is based of pm/bleeding-edge branch.
V1->V2:
- Changes to fix compilation issues with latest mainline
- Timer APIs got updated
- s/mod_timer_pinned/mod_timer
- s/init_timer/init_timer_pinned
- Updated prototypes of cpufreq_frequency_table_target() and
update_util_handler()
--
viresh
[1] http://marc.info/?l=linux-pm&m=146301864519072
[2] https://android.googlesource.com/kernel/common remotes/android/android-4.4
[3] git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/interactive
[4] git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/interactive-orig
[5] git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/intearctive-idle-notifier
Viresh Kumar (2):
cpufreq: Move gov_attr_* macros to cpufreq.h
cpufreq: Add android's 'interactive' governor
Documentation/cpu-freq/governors.txt | 86 ++
drivers/cpufreq/Kconfig | 30 +
drivers/cpufreq/Makefile | 1 +
drivers/cpufreq/cpufreq_governor.h | 8 -
drivers/cpufreq/cpufreq_interactive.c | 1363 ++++++++++++++++++++++++++++
include/linux/cpufreq.h | 12 +
include/trace/events/cpufreq_interactive.h | 112 +++
kernel/sched/cpufreq_schedutil.c | 8 +-
8 files changed, 1608 insertions(+), 12 deletions(-)
create mode 100644 drivers/cpufreq/cpufreq_interactive.c
create mode 100644 include/trace/events/cpufreq_interactive.h
--
2.7.1.410.g6faf27b
This is leftover from an earlier patch which removed the usage of
platform data but forgot to remove this line. Remove it now.
Signed-off-by: Viresh Kumar <viresh.kumar(a)linaro.org>
---
drivers/cpufreq/cpufreq-dt.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c
index 3957de801ae8..2bd20534155d 100644
--- a/drivers/cpufreq/cpufreq-dt.c
+++ b/drivers/cpufreq/cpufreq-dt.c
@@ -366,8 +366,6 @@ static int dt_cpufreq_probe(struct platform_device *pdev)
if (ret)
return ret;
- dt_cpufreq_driver.driver_data = dev_get_platdata(&pdev->dev);
-
ret = cpufreq_register_driver(&dt_cpufreq_driver);
if (ret)
dev_err(&pdev->dev, "failed register driver: %d\n", ret);
--
2.7.1.410.g6faf27b