{"push_id":1186026769,"size":8,"distinct_size":8,"ref":"refs/heads/cm-13.0","head":"742be5f903f896368998e26cd43925dca5f39be2","before":"5da78616e8364295263390d22722ac01d4590035","commits":[{"sha":"48b791ff3f0b7c262adba3360accabf5333686d2","author":{"name":"Hanumath Prasad","email":"b97b9bb3ad6aad711a1348416f39eb8991bb67d8@codeaurora.org"},"message":"cpufreq: interactive:call __cpufreq_driver_target() for cur frequency\n\nThere is a race window as explained below when governor tries to change\nthe cpu frequency and some other thread (say thermal mitigation) try to\nchange the policy limits simultaneously.\n\nspeedchange task (ThreadA)\t\t\tThread B(say Thermal)\n\ncpufreq_interactive_speedchange_task()\n\t|\n__cpufreq_driver_target()\n\t|\nset_cpu_freq()\n\t|\n\t\t\t\t\t\tcpufreq_update_policy()\n\t\t\t\t\t\t\t|\n\t\t\t\t\t\tmodified policy_max\n\t\t\t\t\t\t\t|\n\t\t\t\t\t\tcheck policy->curr against\n\t\t\t\t\t\tnew policy limits,return\n\t\t\t\t\t\twithout calling\n\t\t\t\t\t\t__cpufreq_driver_target as\n\t\t\t\t\t\tpolicy->curr(which is not\n\t\t\t\t\t\tupdated by ThreadA) is still\n\t\t\t\t\t\twithin the new policy limits.\n\n\t|\nsent CPUFREQ_POSTCHANGE notification\n\t|\nupdated policy->cur which happens to be higher than policy->max\n\nThis results the current frequency being higher than the policy->max and\nviolating the policy limits. This causes thermal impact and in turn high\npower consumption. So Fix this by calling __cpufreq_driver_target() always\nwith current frequency and leave it to __cpufreq_driver_target() to\nguarantee there is no race condition when multiple threads are changing\nfrequencies.\n\nChange-Id: I9136e9245677e8fc90a628d3099aca8d63d3677c\nSigned-off-by: Hanumath Prasad <hpprasad@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/48b791ff3f0b7c262adba3360accabf5333686d2"},{"sha":"6ab0a66cc2ff68b266b3d72637a0af648c763cb1","author":{"name":"Junjie Wu","email":"0075153510835c15ef43801605ef8726aea51938@codeaurora.org"},"message":"cpufreq: Return directly in __cpufreq_get if policy is NULL\n\n__cpufreq_get() checks whether policy->cur matches frequency returned\nby cpufreq device driver and acts accordingly. However, policy could\nbe NULL if the CPU is being hotplugged. Current implementation crashes\nwhen trying to dereference the NULL policy.\n\nReturn the frequency provided by cpufreq device driver directly if\npolicy is not available.\n\nChange-Id: I1f2ba4028c259392bf730db37dbec2d8c5ae3fa4\nSigned-off-by: Junjie Wu <junjiew@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/6ab0a66cc2ff68b266b3d72637a0af648c763cb1"},{"sha":"f2706cc9ec6c6e296d82d6c6ae8e07565febb22e","author":{"name":"Junjie Wu","email":"0075153510835c15ef43801605ef8726aea51938@codeaurora.org"},"message":"cpufreq: interactive: Use target_freq for load calculation\n\nWith per-policy timer implemented, there is no need to use policy->cur\nin load calculation and delay enforcement. Each CPUs in policy will\nnaturally get the cluster frequency in target_freq. Using policy->cur\nhas side effects if second evaluation comes before frequency switch\nrequested by first evaluation is finished. When that occurs, the second\nevalution could enforce delays incorrectly based on the stale\npolicy->cur while the timestamps have been updated when target_freq is\nupdated by earlier evaluation.\n\nFor example, assume current frequency is 1.5GHz, hispeed_freq is 1GHz.\nFirst evaluation drops target_freq to 500MHz. It also resets\nhispeed_validate_time. While frequency switch is still underway and\npolicy->cur is still 1.5GHz, a second evaluation happens, and the\nevaluation result is 1GHz. Current evaluation would enforce\nhispeed_delay for 1.5GHz using the updated hispeed_validate_time and\nthus incorrectly delaying the ramp up to 1GHz.\n\nChange from policy->cur to target_freq in load calculation and delay\nenforcement.\n\nChange-Id: I416e1d524e14b2c082944b88678eb3105bd70d88\nSigned-off-by: Junjie Wu <junjiew@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/f2706cc9ec6c6e296d82d6c6ae8e07565febb22e"},{"sha":"db652e116a0b6e8b0ce8337f75e38559940864cb","author":{"name":"Zhao Wei Liew","email":"253f3717312c1bfbdbf2baa671d02018f93d0a79@gmail.com"},"message":"cpufreq: Add cpufreq limit driver\n\nThis allows userspace to specify a min/max limit to the CPU\nfrequency, working around the standard scaling_[max|min]_freq\nsysfs interfaces.\n\nInitially based on Paul's cpufreq_limit driver.\n\nChange-Id: I87dd8a0f67aadce0ca0f5cb668d7ee16c616deb0","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/db652e116a0b6e8b0ce8337f75e38559940864cb"},{"sha":"ccfc078c79409d0b668a89b8ecd3b8ef5a5fc403","author":{"name":"Viresh Kumar","email":"4ca49bc1dcfdfc376d29da1eb07a3e0b3cd46daa@linaro.org"},"message":"cpufreq: Manage only online cpus\n\ncpufreq core doesn't manage offline cpus and if driver->init() has returned\nmask including offline cpus, it may result in unwanted behavior by cpufreq core\nor governors.\n\nWe need to get only online cpus in this mask. There are two places to fix this\nmask, cpufreq core and cpufreq driver. It makes sense to do this at common place\nand hence is done in core.\n\nChange-Id: I51cd5928818b669095468379de5f55534b239154\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/ccfc078c79409d0b668a89b8ecd3b8ef5a5fc403"},{"sha":"62082161f1a16ba9e53b962d03281e2c769d6d9a","author":{"name":"Viresh Kumar","email":"4ca49bc1dcfdfc376d29da1eb07a3e0b3cd46daa@linaro.org"},"message":"cpufreq: Notify governors when cpus are hot-[un]plugged\n\nBecause cpufreq core and governors worry only about the online cpus, if a cpu is\nhot [un]plugged, we must notify governors about it, otherwise be ready to expect\nsomething unexpected.\n\nWe already have notifiers in the form of CPUFREQ_GOV_START/CPUFREQ_GOV_STOP, we\njust need to call them now.\n\nChange-Id: I46e78a1d171a652dcc6b91abfbf22cfaaecdd4a5\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/62082161f1a16ba9e53b962d03281e2c769d6d9a"},{"sha":"74c6d4e1465635f21712a638165c7d84d79150f7","author":{"name":"Viresh Kumar","email":"4ca49bc1dcfdfc376d29da1eb07a3e0b3cd46daa@linaro.org"},"message":"cpufreq: interactive: Remove unnecessary cpu_online() check\n\nCpufreq no longer calls governor callback for offlined cpus. i.e. All\npolicy->cpus are guaranteed to be online. Hence we don't need explicit check to\nsee if cpu is online or not.\n\nChange-Id: I9ad85ea4addd5b4a40952e59ed730dd15e328690\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/74c6d4e1465635f21712a638165c7d84d79150f7"},{"sha":"742be5f903f896368998e26cd43925dca5f39be2","author":{"name":"Zhao Wei Liew","email":"253f3717312c1bfbdbf2baa671d02018f93d0a79@gmail.com"},"message":"cpufreq: cpu-boost: Remove policy update for source CPU\n\nThis is unnecessary now as the corresponding functionality\nhas long been removed.\n\nChange-Id: If0ada068d656f0d6ff0758f30f7ed06fccba8ca8","distinct":true,"url":"https://api.github.com/repos/daedroza/android_kernel_sony_apq8064/commits/742be5f903f896368998e26cd43925dca5f39be2"}]}
{"actor":{"display_login":"daedroza"}}