Commit graph

575133 commits

Author SHA1 Message Date
Olav Haugan
59f16ae034 core_ctrl: Move core control into kernel
Move core control from out-of-tree module into the kernel proper.

Core control monitors load on CPUs and controls how many CPUs are
available for the system to use at any point in time. This can help save
power. Core control can be configured through sysfs interface.

Change-Id: Ia78e701468ea3828195c2a15c9cf9fafd099804a
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 11:00:03 -07:00
Olav Haugan
7f2c523643 core_ctl_helper: Remove code since it is not used anymore
Remove the core control helper code since this is not needed anymore
with subsequent patches that moves core control into the kernel.

Change-Id: I62acddeb707fc7d5626580166b3466e63f45fd89
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 11:00:02 -07:00
Olav Haugan
75c9d1833a defconfig: msm: Disable core control helper
Core control helper is not needed anymore with subsequent patches
that moves core control into the kernel.

Change-Id: I2c62af441fb9e5ba9f29719853a63e4c8f2d031b
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 11:00:01 -07:00
Olav Haugan
ca2c4c6518 sched/tick: Ensure timers does not get queued on isolated cpus
Timers should not be queued on isolated cpus. Instead try to find
other cpus to queue timer on.

Change-Id: I5d849dfd29aa5bb594454473768d7db1da258028
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 11:00:00 -07:00
Olav Haugan
639c8ad52d perf: Add cpu isolation awareness
Ensure perf events does not wake up idle cores when core is isolated.

Change-Id: Ifefb2f1cf6c24af7bc46fc62797955b8c8ad5815
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:59 -07:00
Olav Haugan
e38c1ce123 smp: Do not wake up all idle CPUs
Do not wake up cpus that are isolated.

Change-Id: I07702bb5b738c1c75c49a2ca4cb08be0231ccb12
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:58 -07:00
Olav Haugan
bc24c063ef pmqos: Enable cpu isolation awareness
Set long latency requirement for isolated cores to ensure LPM logic will
select a deep sleep state.

Change-Id: I83e9fbb800df259616a145d311b50627dc42a5ff
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:57 -07:00
Olav Haugan
287b1a8c1c vmstat: Add cpu isolation awareness
Ensure vmstat updates do not run on isolated cpus.

Change-Id: I401de0b52fa6d20573187265ee56edd543b1419e
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:56 -07:00
Olav Haugan
4400ef145f irq: Make irq affinity function cpu isolation aware
Prohibit setting the affinity of an IRQ to an isolated core.

Change-Id: I7b50778615541a64f9956573757c7f28748c4f69
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:55 -07:00
Olav Haugan
de1a32cd14 drivers/base: cpu: Add node for cpu isolation
Add a new per-cpu node to control isolation of CPU.

Usage:
echo 1 > isolate - Isolate the core
echo 0 > isolate - Unisolate the core

Change-Id: I6a13e8dda99130ca794e5b6f51600f4c57a3e921
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:54 -07:00
Olav Haugan
0a17b36a20 sched/core: Add trace point for cpu isolation
Add tracepoint to capture the cpu isolation event including KPI for
time it took to isolate.

Change-Id: If2d30000f068afc50db953940f4636ef6a089b24
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:59:42 -07:00
Olav Haugan
e33c24bfec sched: add cpu isolation support
This adds cpu isolation APIs to the scheduler to isolate and unisolate
CPUs. Isolating and unisolating a CPU can be used in place of hotplug.
Isolating and unisolating a CPU is faster than hotplug and can thus be
used to optimize the performance and power of multi-core CPUs.

Isolating works by migrating non-pinned IRQs and tasks to other CPUS and
marking the CPU as not available to the scheduler and load balancer.
Pinned tasks and IRQs are still allowed to run but it is expected that
this would be minimal.

Unisolation works by just marking the CPU available for scheduler and
load balancer.

Change-Id: I0bbddb56238c2958c5987877c5bfc3e79afa67cc
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-24 10:55:17 -07:00
Olav Haugan
3fe956359c watchdog: Add support for cpu isolation
Open up interface to allow external subsystem to enable and disable hard
lockup detector.

Change-Id: I88a728ee1d54aaa887fab52e5e40d1d4e4fc69ca
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:13 -07:00
Olav Haugan
dcf716301e soc: qcom: watchdog_v2: Add support for cpu isolation
Ensure watchdog does not wake up isolated cpu.

Change-Id: Ie4c6cb1496ae3490d81681f1ad51c8103caa0014
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:13 -07:00
Olav Haugan
fc70615291 cpumask: Add cpu isolation support
Add bitmask and corresponding supporting functions for cpu isolation.

Change-Id: Ice1a9503666a2b720bdb324289ca55ceb33097cd
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:13 -07:00
Olav Haugan
922fed628c timer: Do not require CPUSETS to be enabled for migration
Do not require CPUSETS to be enabled to allow migration of timers and
hrtimers.

Change-Id: Ib911a0d34c250c4df020bdb265b92d2b8df8db93
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:13 -07:00
Santosh Shukla
bba552f4fc timer: Add function to migrate timers
Add function to migrate timer that will be used by later patch set.

Change-Id: I370e404001344e635a663822b07557abbe0f6f52
Signed-off-by: Santosh Shukla <santosh.shukla@linaro.org>
[ohaugan@codeaurora.org: Updated commit text and fixed trivial merge conflict]
Git-commit: 3633b88d8fcb4273807574c27c328b6908a741e5
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:12 -07:00
Gary S. Robertson
84e39dcb3b hrtimer.h: prevent pinned timer state from breaking inactive test
An hrtimer may be pinned to a CPU but inactive, so it is no longer valid
to test the hrtimer.state struct member as having no bits set when inactive.
Changed the test function to mask out the HRTIMER_STATE_PINNED bit when
checking for inactive state.

Change-Id: I632f37874ef79887ee1202a028ef734f392d6ed0
Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
[ohaugan@codeaurora.org: Port to 4.4]
Git-commit: 902e4d4eb0d2158d2792166221a72a829caecf07
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:12 -07:00
Viresh Kumar
a66156c83c hrtimer: make sure PINNED flag is cleared after removing hrtimer
Change-Id: Icc4d1c183e993b4b3c9b96ec9779c234e73ecab7
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[forward port to 3.18]
Signed-off-by: Santosh Shukla <santosh.shukla@linaro.org>
Git-commit: d6c894e515b4cd93c3a08e7c60cce0aa5118c656
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:12 -07:00
Viresh Kumar
f461d408ac hrtimer: create hrtimer_quiesce_cpu() to isolate CPU from hrtimers
To isolate CPUs (isolate from hrtimers) from sysfs using cpusets, we need some
support from the hrtimer core. i.e. A routine hrtimer_quiesce_cpu() which would
migrate away all the unpinned hrtimers, but shouldn't touch the pinned ones.

This patch creates this routine.

Change-Id: I51259ea41e3bd5cdba50b718201a6840174a7224
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[forward port to 3.18]
Signed-off-by: Santosh Shukla <santosh.shukla@linaro.org>
[ohaugan@codeaurora.org: Port to 4.4]
Git-commit: d4d50a0ddc35e58ee95137ba4d14e74fea8b682f
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:12 -07:00
Viresh Kumar
d0cea65e27 hrtimer: update timer->state with 'pinned' information
'Pinned' information would be required in migrate_hrtimers() now, as we can
migrate non-pinned timers away without a hotplug (i.e. with cpuset.quiesce). And
so we may need to identify pinned timers now, as we can't migrate them.

This patch reuses the timer->state variable for setting this flag as there were
enough number of free bits available in this variable. And there is no point
increasing size of this struct by adding another field.

Change-Id: If3b3770e547971809e789ea7c8033c48ec2aa92d
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[forward port to 3.18]
Signed-off-by: Santosh Shukla <santosh.shukla@linaro.org>
[ohaugan@codeaurora.org: Port to 4.4]
Git-commit: 62feaf1ed0b64c04868d143d8bdb92d60dc3189b
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:12 -07:00
Viresh Kumar
a7dffd7ffb timer: create timer_quiesce_cpu() to isolate CPU from timers
To isolate CPUs (isolate from timers) from sysfs using cpusets, we need some
support from the timer core. i.e. A routine timer_quiesce_cpu() which would
migrates away all the unpinned timers, but shouldn't touch the pinned ones.

This patch creates this routine.

Change-Id: I8624e0659b86b7b8fa425a3fafdb0784fe005124
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[forward port to 3.18]
Signed-off-by: Santosh Shukla <santosh.shukla@linaro.org>
[ohaugan@codeaurora.org: Port to 4.4. Fixes for compilation error]
Git-commit: 313910b70ea0c73f8789d9189c11e1f339080646
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:11 -07:00
Olav Haugan
6cc98f03ad timer: Ensure timers are not running before migrating
This is needed to support migration of timers during cpu isolation. A
timer might be running on the CPU that we want to isolate so we are
unable to migrate the timers at this point. We are adding a spin-loop to
wait for the timer to finish before migrating the timers.

Change-Id: I24d6e91b6dff468c640c2fe3a37a7f31b6f0c79a
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-09-20 17:47:11 -07:00
Linux Build Service Account
9e2d528dc4 Merge "msm: camera: Add support for reset controller framework" 2016-09-20 10:20:44 -07:00
Linux Build Service Account
bfbc8a0dda Merge "soc: qcom: spss_utils: fix test_fuse_state_show()" 2016-09-20 10:20:44 -07:00
Linux Build Service Account
2b9c9ce4df Merge "msm: msm_bus: introduce bus topology for msmfalcon" 2016-09-20 10:20:42 -07:00
Linux Build Service Account
329685a0d5 Merge "msm: mdss: make hdcp 1.x data part of fb panel" 2016-09-20 10:20:40 -07:00
Linux Build Service Account
e687086cb2 Merge "ARM: dts: reduce on/off time for nt35597 dsc panels" 2016-09-20 10:20:39 -07:00
Linux Build Service Account
ca064b6d44 Merge "msm: mdss: dsi: Configure pll to work only in full rate mode" 2016-09-20 10:20:38 -07:00
Linux Build Service Account
53aba1677d Merge "ARM: dts: msm: add sharp 120 Hz panel support for msmcobalt" 2016-09-20 10:20:37 -07:00
Linux Build Service Account
b2b4bbae8b Merge "clk: msm: mdss: change DP clock rate in order of KHz" 2016-09-20 10:20:36 -07:00
Linux Build Service Account
fb2d62f3eb Merge "msm: mdss: program HDMI/DP core select during interface setup" 2016-09-20 10:20:34 -07:00
Linux Build Service Account
4b91c1a0f7 Merge "ASoC: wcd9335: reduce speaker teardown latency" 2016-09-19 23:28:23 -07:00
Linux Build Service Account
383cee12e4 Merge "phy: qcom-ufs: remove warnings for optional clocks" 2016-09-19 23:28:22 -07:00
Linux Build Service Account
55ef1608c4 Merge "Revert "usb: dwc3: gadget: start requests as soon as they come"" 2016-09-19 23:28:17 -07:00
Linux Build Service Account
f71d743cf0 Merge "Revert "usb: dwc3: gadget: use update transfer command"" 2016-09-19 23:28:16 -07:00
Linux Build Service Account
52915db68d Merge "msm: ipa: add support for new QMI IDL" 2016-09-19 23:28:16 -07:00
Linux Build Service Account
beb17e9e9b Merge "msm: pcie: initialize var in GPIO init function" 2016-09-19 23:28:15 -07:00
Linux Build Service Account
afc144d22c Merge "defconfig: msmcortex: Remove panic on SBE" 2016-09-19 23:28:14 -07:00
Linux Build Service Account
48b6dc8c1e Merge "edac: cortex: Remove WARN_ON messages" 2016-09-19 23:28:13 -07:00
Linux Build Service Account
99a1044389 Merge "msm: mdss: avoid shutting down PHY PMIC regulators" 2016-09-19 23:28:12 -07:00
Linux Build Service Account
6fa5e24922 Merge "msm: mdss: wait for kickoff before executing mode switch changes" 2016-09-19 23:28:11 -07:00
Linux Build Service Account
9518539939 Merge "defconfig: arm64: msmcortex: enable MSM_TZ_LOG for msmcobalt" 2016-09-19 23:28:10 -07:00
Linux Build Service Account
8753bbcdc4 Merge "soc: qcom: ipc_router_glink_xprt: Add larger size receive intents" 2016-09-19 23:28:09 -07:00
Linux Build Service Account
c2b563ce7d Merge "soc: qcom: pil: Correct notification path in subsys_stop" 2016-09-19 23:28:08 -07:00
Linux Build Service Account
3c52ac5339 Merge "power: fg-memif: Clear retry_once flag in IMA read" 2016-09-19 23:28:07 -07:00
Linux Build Service Account
5edc2df030 Merge "qseecom: Change whitelist_support flag to false if TZ failed to check" 2016-09-19 23:28:07 -07:00
Linux Build Service Account
79f28e9426 Merge "icnss: Provide client_id in ind_register request" 2016-09-19 23:28:06 -07:00
Linux Build Service Account
9969c77475 Merge "iommu: msm: use list_for_each_entry_safe for deletion" 2016-09-19 23:28:04 -07:00
Linux Build Service Account
64a9ffd418 Merge "Revert "defconfig: msm: enable common log for msmcobalt"" 2016-09-19 23:28:04 -07:00