{"push_id":2668158932,"size":1,"distinct_size":0,"ref":"refs/heads/caf/3.10/caf/aosp-common/android-4.9-o","head":"1be504019d227b1fcde0ce5a732a145932593c5a","before":"fe8d94d87a7d53fc1c6950f73f67befde3e69d59","commits":[{"sha":"1be504019d227b1fcde0ce5a732a145932593c5a","author":{"name":"Juri Lelli","email":"bdc6bcd4e8b34b4b92413d758024aeca6da0e459@arm.com"},"message":"UPSTREAM: cpufreq: schedutil: use now as reference when aggregating shared policy requests\n\nCurrently, sugov_next_freq_shared() uses last_freq_update_time as a\nreference to decide when to start considering CPU contributions as\nstale.\n\nHowever, since last_freq_update_time is set by the last CPU that issued\na frequency transition, this might cause problems in certain cases. In\npractice, the detection of stale utilization values fails whenever the\nCPU with such values was the last to update the policy. For example (and\nplease note again that the SCHED_CPUFREQ_RT flag is not the problem\nhere, but only the detection of after how much time that flag has to be\nconsidered stale), suppose a policy with 2 CPUs:\n\n               CPU0                |               CPU1\n                                   |\n                                   |     RT task scheduled\n                                   |     SCHED_CPUFREQ_RT is set\n                                   |     CPU1->last_update = now\n                                   |     freq transition to max\n                                   |     last_freq_update_time = now\n                                   |\n\n                        more than TICK_NSEC nsecs\n\n                                   |\n     a small CFS wakes up          |\n     CPU0->last_update = now1      |\n     delta_ns(CPU0) < TICK_NSEC*   |\n     CPU0's util is considered     |\n     delta_ns(CPU1) =              |\n      last_freq_update_time -      |\n      CPU1->last_update = 0        |\n      < TICK_NSEC                  |\n     CPU1 is still considered      |\n     CPU1->SCHED_CPUFREQ_RT is set |\n     we stay at max (until CPU1    |\n     exits from idle)              |\n\n* delta_ns is actually negative as now1 > last_freq_update_time\n\nWhile last_freq_update_time is a sensible reference for rate limiting,\nit doesn't seem to be useful for working around stale CPU states.\n\nFix the problem by always considering now (time) as the reference for\ndeciding when CPUs have stale contributions.\n\nBug: 109836581\nSigned-off-by: Juri Lelli <juri.lelli@arm.com>\nAcked-by: Vincent Guittot <vincent.guittot@linaro.org>\nAcked-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\n(cherry picked from commit d86ab9cff8b936aadde444d0e263a8db5ff0349b)","distinct":false,"url":"https://api.github.com/repos/akhilnarang/kernel_msm-3.18/commits/1be504019d227b1fcde0ce5a732a145932593c5a"}]}
{"actor":{"display_login":"akhilnarang"}}