summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/cpuquiet.c
AgeCommit message (Collapse)Author
2013-04-12ARM: tegra: cpuquiet: Add Margin to Clock CalculationMatt Wagner
Added 30Mhz offset when using the maximum clock on LP due to a rounding issue that causes us to fail entry to LP on high load. Bug 1253920 Change-Id: Ibca5451d426d8e3458a9ad0a91b720238567a752 Signed-off-by: Matt Wagner <mwagner@nvidia.com> Reviewed-on: http://git-master/r/218998 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Peter Boonstoppel <pboonstoppel@nvidia.com> GVS: Gerrit_Virtual_Submit
2013-04-12ARM: tegra: cpuquiet: make no_lp = -1 always force cluster switchPeter Boonstoppel
When setting the no_lp sysfs node to -1 the system would attempt to switch to the LP cluster. This can fail if the frequency or the number of online cores are too high. This change ensure the frequency and number of online cores are first brought down, such that a cluster switch on no_lp = -1 always succeeds. Bug 1247636 Bug 1253920 Change-Id: If6af671e8defdfc8172e8d9356ddf03d54bae98d Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-on: http://git-master/r/218464 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matt Wagner <mwagner@nvidia.com> Tested-by: Matt Wagner <mwagner@nvidia.com>
2013-04-12ARM: tegra: cpuquiet: augment no_lp to force both LP and GSimo Melenius
- tegra_cpuquiet 'no_lp' node now accepts '-1' to force LP cluster on - when a cluster is forced the switches take place immediately without any delay Bug 1247636 Reviewed-on: http://git-master/r/208772 (cherry picked from commit ab16bbb6f581da538448d2a64e03dd272b8fb985) Change-Id: I1ec07acc3cf51419a4770542c6a1c90b92e0bf66 Signed-off-by: Simo Melenius <smelenius@nvidia.com> Reviewed-on: http://git-master/r/215935 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matt Wagner <mwagner@nvidia.com> Tested-by: Matt Wagner <mwagner@nvidia.com>
2013-04-12ARM: tegra: cpuquiet: make userspace governor actions synchronousPeter De Schrijver
Userspace expects changes to happen synchronously. Implement this by waiting with a (configureable) timeout for the action to happen. Bug 1220065 Change-Id: I81301719707e4baf2b3aea62c38fc771ffe1205d Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> (cherry picked from commit 9de8f56142e64ebf388b5427ef7fd142078dfa87) Reviewed-on: http://git-master/r/#change,200013 Reviewed-on: http://git-master/r/215934 GVS: Gerrit_Virtual_Submit Reviewed-by: Matt Wagner <mwagner@nvidia.com> Tested-by: Matt Wagner <mwagner@nvidia.com>
2013-02-18ARM: tegra: cpuquiet: Honor G->LP delay on last core downPeter Boonstoppel
We cluster switch G->LP when 2 conditions are met: 1) we are in single core mode 2) CPU freq reaches idle_bottom_freq After these 2 conditions are met, we wait for down_delay ms before cluster switching. This patch ensures the timeout is also honored when the first condition is met last. Bug 1226607 Change-Id: Ic36f9cab09a5967b71409e44dbe89290f39cb26b Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-on: http://git-master/r/200537 Reviewed-by: Mandar Padmawar <mpadmawar@nvidia.com> Tested-by: Mandar Padmawar <mpadmawar@nvidia.com>
2013-02-18arm: mach-tegra: resolve tegra_cpu_lock race conditionSang-Hun Lee
Problem description: - lock used in cpuquiet, cpu-tegra3.c, tegra2-throttle.c, and tegra3_throttle originate from cpu-tegra.c, tegra_cpu_lock - edp_update_limit and tegra_auto_hotplug_governor need a protection from tegra_cpu_lock. These are also called by tegra_cpu_set_speed_cap - Some callers of tegra_cpu_set_speed_cap do not acquire tegra_cpu_lock, but some do Fix description: - Create a locked variant and unlocked variant of tegra_cpu_set_speed_cap to make it explicit that tegra_cpu_lock is needed for tegra_cpu_set_speed_cap - Replace existing calls with new variants of tegra_cpu_set_speed_cap appropriately Bug 1225764 Change-Id: I8aa6356df278375e3a9105023f66c8286e3fdbef Signed-off-by: Sang-Hun Lee <sanlee@nvidia.com> Reviewed-on: http://git-master/r/199238 Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2013-02-06ARM: tegra: cpuquiet: fix race conditionSang-Hun Lee
Remove race conditions around cpq_state access Bug 1225764 Change-Id: I73f28b81d9488633294eaa04369f15993f742cb0 Signed-off-by: Sang-Hun Lee <sanlee@nvidia.com> Reviewed-on: http://git-master/r/197265 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2013-01-08ARM: tegra: Only check for LP switch on CPU_POST_DEADPeter De Schrijver
Apparently the cpu hotplug notifier can be called when the kernel can't sleep. In those cases blocking operations can cause a kernel panic. Solve this by only doing potentially blocking operations when a CPU has been removed. This shouldn't cause any power regressions as we can only switch to the slow cluster when only CPU0 is online. Bug 1189926 Bug 1211686 Bug 1213817 Change-Id: I54356d2a8a8ae3a5253b9b2c216ada283955e585 Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-on: http://git-master/r/189105 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Ankit Gupta (SW-TEGRA) <ankitgu@nvidia.com> Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
2012-12-26ARM: tegra: only do clusterswitching in 1 CPU modePeter De Schrijver
Only consider clusterswitching when there is a single CPU online. This is done by ignoring frequency changes when there are more cores online and registering a notifier to immediately switch to the slow cluster if there is only 1 CPU online and the frequency is below idle_bottom_freq. bug 1178947 bug 1202877 Change-Id: I1244f866de1d32c268d36c835cd90d9c6cba1481 Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-on: http://git-master/r/172346 (cherry picked from commit 309a2860fa6784d7e35ee114cf061599b19c4d91) Reviewed-on: http://git-master/r/173718 Reviewed-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Tested-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2012-12-17ARM: tegra: Rework timer for clusterswitchingPeter De Schrijver
This patch introduces a separate timer for clusterswitching. The timer will queue the usual workitem on expiry. This allows all other operations to happen immediately without having to cancel a delayed workitem. It also allows the timer itself to be canceled when the conditions for a clusterswitch are no longer fulfilled. bug 1178947 Change-Id: Ieb63baf5a38ebcca29ad938365e46530f755a105 Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> (cherry picked from commit 1dec3e79989d37f46c585a5265276bc2871c87a7) Reviewed-on: http://git-master/r/170634 Reviewed-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User Tested-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2012-12-06ARM: tegra: avoid race condition between cpufreq and clusterswitchPeter De Schrijver
Avoid a race condition between cpufreq and clusterswitch and also make writes to no_lp and enable synchronous operations. bug 1178947 Change-Id: Ib9608f8a0a22be84d3c0916babb7e43c1f6df2e1 Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-on: http://git-master/r/165751 Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com> Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
2012-11-27ARM: tegra11: power: Update core EDP on CPU cluster switchAlex Frid
Update core EDP limits when CPU cluster is switched between fast (G-mode) CPU, and slow (LP-mode) CPU. Bug 1165638 Change-Id: I956eb5ab2d8fbe873f998cca1e22984413cf5743 Signed-off-by: Alex Frid <afrid@nvidia.com> Reviewed-on: http://git-master/r/165617 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
2012-11-19ARM: tegra: cpuquiet: Fix compiler warningsPeter Boonstoppel
Bug 1055406 Change-Id: I5033cc19e170d932c3697821a0f3273957789995 Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-on: http://git-master/r/164384 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Krishna Reddy <vdumpa@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com> Tested-by: Diwakar Tundlam <dtundlam@nvidia.com> Reviewed-by: Peter De Schrijver <pdeschrijver@nvidia.com>
2012-11-15ARM: tegra: refactor cpuquiet driverPeter De Schrijver
Refactor the cpuquiet driver to use 1 workqueue which handles the clusterswitch and cpu online/offline operations. Functional changes compared to the previous driver: + changing no_lp also triggers a clusterswitch if the current cluster is the LP cluster. + removing all QoS constraints will return to the configuration as defined by the governor. + the minimum CPUs online QoS constraint will always prevail above the maximum CPUs online constraint. If both constraints are set, the maximum CPUs online constraint will be clamped to the minimum constraint. bug 1047545 bug 1055406 Change-Id: Ib52de2578254c282f23f972484a6532d24fdc0e9 Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-on: http://git-master/r/134391 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com> Reviewed-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
2012-10-10ARM: tegra: cpuquiet: Bring back hotplug stats supportPeter Boonstoppel
Hotplug stats are needed for dfs_log and Power Signature. Cpuquiet provides similar stats in the core layer, but cannot provide stats for LP cpu, since this is only visible at the driver level. Bug 1045785 (cherry picked from commit ec6f32c8c39b574a6d01596a8d31060e47d20905) Reviewed-on: http://git-master/r/134271 Change-Id: I808c5b9597d32d7297257d4cf8767aa0f9ab0473 Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/143137 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
2012-09-14ARM: tegra: cpuquiet: add min/max_cpus debugfs nodes backPeter Boonstoppel
Bug 1047573 Change-Id: I7209ca87075b3d8a1d53141c48fe8fbdd86c4728 Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-on: http://git-master/r/131606 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Ilan Aelion <iaelion@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2012-09-13ARM: tegra: cpuquiet: Bring back hotplug stats supportPeter Boonstoppel
Hotplug stats are needed for dfs_log and Power Signature. Cpuquiet provides similar stats in the core layer, but cannot provide stats for LP cpu, since this is only visible at the driver level. Bug 1045785 Change-Id: I6c5c26912d1a26637e81c73741637fbd2bee6157 Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-on: http://git-master/r/131210 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Shaoming Feng <shaomingf@nvidia.com> Reviewed-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com> GVS: Gerrit_Virtual_Submit
2012-08-24cpuquiet: Add notifiers for the runnables governorSai Charan Gurrappadi
The governor stops sampling whenever the device is busy and starts its sampling loop when the device is free. Change-Id: Ifdae4a84e56c2734be48e49f6112b537602a02da Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/124680 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
2012-08-23cpuquiet: Enable cpuquiet by defaultSai Charan Gurrappadi
Enable cpuquiet by default if autohotplug is enabled. Cpuquiet will now replace autohotplug as the hotplugging infrastructure. The down_delay in the balanced governor has also been increased to 2s from 500ms to match a similar patch for autohotplug. Change-Id: I36747af67c55547b3dee95f7d435f9ebc075d393 Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/123851 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
2012-08-23cpuquiet: Fix cpuquiet for k3.4Sai Charan Gurrappadi
Change-Id: I75d8dba6c9c4c43152c819e08beeccb1e3c07c0c Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/123850 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
2012-08-16ARM: tegra: Ignore PmQos when disabledSai Charan Gurrappadi
The cpu hotplug drivers should only bother updating state or switching to the G cluster if the driver is not disabled Bug 1032096 Change-Id: Ice938b094bbf48fef47afa3915b1a48362fb256d Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/122859 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2012-07-30ARM: tegra: cpuquiet: Fix cpuquiet notifiersSai Charan Gurrappadi
The notifiers now properly fire on every cluster switch Change-Id: I381301cf62f25b49532326cc7759696c7f6797b7 Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/118376 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
2012-07-30ARM: tegra: cpuquiet: Notify the cpuquiet governor when the driver is busySai Charan Gurrappadi
Added generic busy/free notifiers that the driver can invoke to let the governor know that it cannot process further core online/offline requests (invoked in our case whenever we switch to the LP cluster). Change-Id: I5e3f7f28f38806a7f87050e8d0c8d2f2cf7521aa Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/114807 Reviewed-by: Lokesh Pathak <lpathak@nvidia.com> Tested-by: Lokesh Pathak <lpathak@nvidia.com>
2012-07-16ARM: tegra: Remove duplicate clock initsSai Charan Gurrappadi
Change-Id: I80c384d1aa4b1e45a4542acbde6b904f4a014aff Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/113679 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-by: Peter Boonstoppel <pboonstoppel@nvidia.com> Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com> GVS: Gerrit_Virtual_Submit
2012-07-12ARM: tegra: add sysfs support for tegra cpuquiet driverPeter De Schrijver
Change-Id: I215c5de8e98d139a93113978e1e27adb5a6b252c Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/111283 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
2012-07-12ARM: tegra: cpuquiet driver for Tegra3Peter De Schrijver
Change-Id: Id7427bab50c6e285efe76afa234435bc984fc011 Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/105274 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>