)]}'
{
  "log": [
    {
      "commit": "7ec9df1fdd1ebbca765d82eeed7dda11e052b294",
      "tree": "b8689f4e74d21ac78f42d0cc840a13a775d41d65",
      "parents": [
        "56a32fec794e088244241868de1c01f2f5bbc0ea"
      ],
      "author": {
        "name": "Kaushal Kumar",
        "email": "kaushalk@codeaurora.org",
        "time": "Thu May 15 19:19:04 2014 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:36:08 2016 -0500"
      },
      "message": "sched: Remove synchronize rcu/sched calls from _cpu_down\n\nThere is no need for sync_sched() in _cpu_down as stop_machine()\nprovides that barrier implicitly. Removing it also helps improve\nhot-unplug latency.\n\nThe sync_sched/rcu were earlier removed for the same reason by the\ncommit 9ee349ad6d32 (\"sched: Fix set_cpu_active() in cpu_down()\"),\nbut recently got added as part of commit 6acce3ef8452 (\"sched:\nRemove get_online_cpus() usage.\").\n\nCRs-Fixed: 667325\nChange-Id: I97763004454d082d3cc2d9d9dbef7da923608600\nSigned-off-by: Kaushal Kumar \u003ckaushalk@codeaurora.org\u003e\n[mattw@codeaurora.org: fix-up commit hashes in commit text]\nSigned-off-by: Matt Wagantall \u003cmattw@codeaurora.org\u003e\n"
    },
    {
      "commit": "56a32fec794e088244241868de1c01f2f5bbc0ea",
      "tree": "aaf9518752eebc8d333828590aa2e8401ee91e03",
      "parents": [
        "db7eb0fa96d255d6d5905f9777f2a85afcd99dee"
      ],
      "author": {
        "name": "Michael wang",
        "email": "wangyun@linux.vnet.ibm.com",
        "time": "Wed Nov 13 11:10:56 2013 +0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:36:02 2016 -0500"
      },
      "message": "sched: Fix endless sync_sched/rcu() loop inside _cpu_down()\n\nCommit 6acce3ef8:\n\n\tsched: Remove get_online_cpus() usage\n\ntries to do sync_sched/rcu() inside _cpu_down() but triggers:\n\n\tINFO: task swapper/0:1 blocked for more than 120 seconds.\n\t...\n\t[\u003cffffffff811263dc\u003e] synchronize_rcu+0x2c/0x30\n\t[\u003cffffffff81d1bd82\u003e] _cpu_down+0x2b2/0x340\n\t...\n\nIt was caused by that in the rcu boost case we rely on smpboot thread to\nfinish the rcu callback, which has already been parked before sync in here\nand leads to the endless sync_sched/rcu().\n\nThis patch exchanges the sequence of smpboot_park_threads() and\nsync_sched/rcu() to fix the bug.\n\nCRs-fixed: 647141\nChange-Id: Ia8b325d7c3c778f428d9fb51271977c849df32ad\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nTested-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Michael Wang \u003cwangyun@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/5282EDC0.6060003@linux.vnet.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nGit-commit: 106dd5afde3cd10db7e1370b6ddc77f0b2496a75\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Kaushal Kumar \u003ckaushalk@codeaurora.org\u003e\n"
    },
    {
      "commit": "db7eb0fa96d255d6d5905f9777f2a85afcd99dee",
      "tree": "ab9e548efc7ffd9641debf70490a5242d497eccf",
      "parents": [
        "efeac5e81fadd63d38142a555375265640d155cc"
      ],
      "author": {
        "name": "Michael wang",
        "email": "wangyun@linux.vnet.ibm.com",
        "time": "Mon Oct 28 10:50:22 2013 +0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:55 2016 -0500"
      },
      "message": "sched: Remove extra put_online_cpus() inside sched_setaffinity()\n\nCommit 6acce3ef8:\n\n\tsched: Remove get_online_cpus() usage\n\nhas left one extra put_online_cpus() inside sched_setaffinity(),\nremove it to fix the WARN:\n\n   ------------[ cut here ]------------\n   WARNING: CPU: 0 PID: 3166 at kernel/cpu.c:84 put_online_cpus+0x43/0x70()\n   ...\n   [\u003cffffffff810c3fef\u003e] put_online_cpus+0x43/0x70 [\n   [\u003cffffffff810efd59\u003e] sched_setaffinity+0x7d/0x1f9 [\n   ...\n\nCRs-fixed: 647141\nChange-Id: I33f799f30a963db3e9459832832e9c786931c8c2\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nTested-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Michael Wang \u003cwangyun@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/526DD0EE.1090309@linux.vnet.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nGit-commit: ac9ff7997b6f2b31949dcd2495ac671fd9ddc990\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Kaushal Kumar \u003ckaushalk@codeaurora.org\u003e\n"
    },
    {
      "commit": "efeac5e81fadd63d38142a555375265640d155cc",
      "tree": "788bb9c6fac4cee222e58fe3a6cffd1384375ccc",
      "parents": [
        "106cf7e2a55ad474d05fe63bd4831821d35f42e2"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Fri Oct 11 14:38:20 2013 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:49 2016 -0500"
      },
      "message": "sched: Remove get_online_cpus() usage\n\nRemove get_online_cpus() usage from the scheduler; there\u0027s 4 sites that\nuse it:\n\n - sched_init_smp(); where its completely superfluous since we\u0027re in\n   \u0027early\u0027 boot and there simply cannot be any hotplugging.\n\n - sched_getaffinity(); we already take a raw spinlock to protect the\n   task cpus_allowed mask, this disables preemption and therefore\n   also stabilizes cpu_online_mask as that\u0027s modified using\n   stop_machine. However switch to active mask for symmetry with\n   sched_setaffinity()/set_cpus_allowed_ptr(). We guarantee active\n   mask stability by inserting sync_rcu/sched() into _cpu_down.\n\n - sched_setaffinity(); we don\u0027t appear to need get_online_cpus()\n   either, there\u0027s two sites where hotplug appears relevant:\n    * cpuset_cpus_allowed(); for the !cpuset case we use possible_mask,\n      for the cpuset case we hold task_lock, which is a spinlock and\n      thus for mainline disables preemption (might cause pain on RT).\n    * set_cpus_allowed_ptr(); Holds all scheduler locks and thus has\n      preemption properly disabled; also it already deals with hotplug\n      races explicitly where it releases them.\n\n - migrate_swap(); we can make stop_two_cpus() do the heavy lifting for\n   us with a little trickery. By adding a sync_sched/rcu() after the\n   CPU_DOWN_PREPARE notifier we can provide preempt/rcu guarantees for\n   cpu_active_mask. Use these to validate that both our cpus are active\n   when queueing the stop work before we queue the stop_machine works\n   for take_cpu_down().\n\nCRs-fixed: 647141\nChange-Id: Id41e66659574f716de0e7c29f477e56a86db9404\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: \"Srivatsa S. Bhat\" \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20131011123820.GV3081@twins.programming.kicks-ass.net\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nGit-commit: 6acce3ef84520537f8a09a12c9ddbe814a584dd2\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\n[kaushalk@codeaurora.org: get_online_cpus has only 3 sites of usage in\n kernel/sched/core.c of msm-3.10 so migrate_swap changes are not\n applicable here. stop_two_cpus related change is not applicable to\n msm-3.10, so skip it.]\nSigned-off-by: Kaushal Kumar \u003ckaushalk@codeaurora.org\u003e\n"
    },
    {
      "commit": "106cf7e2a55ad474d05fe63bd4831821d35f42e2",
      "tree": "8977d5e64db1516ebbaf21f4b0a6821fa713d161",
      "parents": [
        "b219576f0d2f8268076e0a71310710dd92a5dde2"
      ],
      "author": {
        "name": "Junjie Wu",
        "email": "junjiew@codeaurora.org",
        "time": "Tue Nov 18 16:49:42 2014 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:41 2016 -0500"
      },
      "message": "cpufreq: Protect against hotplug in cpufreq_register_driver()\n\ncpufreq_register_driver() could race with CPU hotplug during\nbootup. Since hotplug notification is not registered when\nsubsys_interface_register() is being executed, it\u0027s possible\ncpufreq\u0027s view of online CPUs becomes stale before it registers\nfor hotplug notification.\n\nRegister for hotplug notification first and protect\nsubsys_interface_register() against hotplug using\nget/put_online_cpus().\n\nChange-Id: I26b2908f1d167c2becc4e8664c357bb7c6162406\nSigned-off-by: Junjie Wu \u003cjunjiew@codeaurora.org\u003e\n"
    },
    {
      "commit": "b219576f0d2f8268076e0a71310710dd92a5dde2",
      "tree": "62b764c111d821a04489c0f165cc85b9139eeb01",
      "parents": [
        "e9d06d154ca283ccadf7aea01eef13b4f03cbea4"
      ],
      "author": {
        "name": "Junjie Wu",
        "email": "junjiew@codeaurora.org",
        "time": "Wed Dec 03 18:29:35 2014 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:33 2016 -0500"
      },
      "message": "cpufreq: Return directly in __cpufreq_get if policy is NULL\n\n__cpufreq_get() checks whether policy-\u003ecur 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 \u003cjunjiew@codeaurora.org\u003e\n"
    },
    {
      "commit": "e9d06d154ca283ccadf7aea01eef13b4f03cbea4",
      "tree": "a6a6b43a7b142912fc6a689c884a6dcc8b155042",
      "parents": [
        "9ef2cf81d281bb82d0a6faf2f18ff02271b197b0"
      ],
      "author": {
        "name": "Junjie Wu",
        "email": "junjiew@codeaurora.org",
        "time": "Wed Apr 09 13:01:26 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:26 2016 -0500"
      },
      "message": "msm: rq_stats: Fix wrong usage of cpufreq_quick_get()\n\ncpufreq_quick_get() returns frequency in KHz, which is exactly what\ncur_freq expect. Remove the wrong multiplication.\n\nCRs-fixed: 645518\nChange-Id: Ia8b080a188023964f5eee77c8586828097d11ad4\nSigned-off-by: Junjie Wu \u003cjunjiew@codeaurora.org\u003e\n"
    },
    {
      "commit": "9ef2cf81d281bb82d0a6faf2f18ff02271b197b0",
      "tree": "e2a5de1ba4124552c7ddb8f0a0bda565d119eb21",
      "parents": [
        "ed4ba50489496bc2532895efca6d8c62bce0f827"
      ],
      "author": {
        "name": "Archana Sathyakumar",
        "email": "asathyak@codeaurora.org",
        "time": "Fri Feb 07 09:21:09 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:18 2016 -0500"
      },
      "message": "msm: rq_stats: Use cpufreq API to get the current frequency\n\nSince the acpuclock APIs are deprecated, use the cpufreq to\nget the current frequency of CPUs to calculate the cpu\nnormalized load value.\n\nChange-Id: I6e381d584d6725ef964bad86c835d44f3046e9c3\nSigned-off-by: Archana Sathyakumar \u003casathyak@codeaurora.org\u003e\n[zhaoweiliew: Overwrite Samsung\u0027s changes with CAF\u0027s original tree]\nSigned-off-by: Zhao Wei Liew \u003czhaoweiliew@gmail.com\u003e\n"
    },
    {
      "commit": "ed4ba50489496bc2532895efca6d8c62bce0f827",
      "tree": "051a465050d962ca890e04abfcbf742a3b987079",
      "parents": [
        "1a39587b3535798200dcc09fd3750133f59d2b30"
      ],
      "author": {
        "name": "Anji Jonnala",
        "email": "anjir@codeaurora.org",
        "time": "Tue May 20 20:02:34 2014 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:11 2016 -0500"
      },
      "message": "soc: qcom: rq_stats: remove the redundant iowait check\n\nIowait_time check is redundant and it would lead to heavy load\ndue to miscaluculation of idle time. Hence remove this check\nas iowait will considered based on io_busy flag.\n\nChange-Id: I4dd9f9c79205eca588daea8cc0fe892394a83391\nCRs-fixed: 662052\nSigned-off-by: Anji Jonnala \u003canjir@codeaurora.org\u003e\n"
    },
    {
      "commit": "1a39587b3535798200dcc09fd3750133f59d2b30",
      "tree": "d431e769cfa80e87d099cdf360d02224c9583cb0",
      "parents": [
        "ddeb06e48d6fcd9917b4db5a81f5181f727dc3cb"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Mon Dec 08 18:21:24 2014 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:05 2016 -0500"
      },
      "message": "soc: qcom: rq_stats: Always show idle time left\n\nThe def_timer_ms file indicates how much time has passed since we\nwrote to the file to start the timer, but the time is only\nupdated when the work runs, instead of on demand when the file is\nread. If we\u0027re poll(3)ing this file and another file and the\nother file wakes our process up from sleep we won\u0027t know without\nmeasuring time ourselves. Make this easier on userspace by always\nshowing the amount of time since we wrote the file so that we can\nfigure out how long we were asleep for.\n\nChange-Id: I06135a94a41a5cd13454a92f2de7e63683ede4a5\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\n"
    },
    {
      "commit": "ddeb06e48d6fcd9917b4db5a81f5181f727dc3cb",
      "tree": "28a2d248ea9a32873de165efccc69c316065f561",
      "parents": [
        "7f4c7bb0b2c9ae7a3163dfbc6d436d0239af7d3f"
      ],
      "author": {
        "name": "Zhao Wei Liew",
        "email": "zhaoweiliew@gmail.com",
        "time": "Thu Jul 28 16:54:15 2016 +0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:35:00 2016 -0500"
      },
      "message": "perf: Pass appropriate parameters when removing event\n\nSince commit 4b2cfc9508d9e509708f85748548e03db696dbcd, the parameters\nwe passed to perf_retry_remove were somewhat duplicated.\n\nPass the remove_event pointer instead of re-creating one\nin the perf_retry_remove function.\n\nChange-Id: I2895643488e87623d8982f2d27a1e5acb76e51fa\n"
    },
    {
      "commit": "7f4c7bb0b2c9ae7a3163dfbc6d436d0239af7d3f",
      "tree": "4c925eb1652de3bdaef89c1b5588732ea66410f5",
      "parents": [
        "a3927fa42d08cc1d029e0e52b1ff9ea658666083"
      ],
      "author": {
        "name": "Neil Leeder",
        "email": "nleeder@codeaurora.org",
        "time": "Fri Sep 20 12:15:38 2013 -0400"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:55 2016 -0500"
      },
      "message": "msm: perf: clean up duplicate constraint events\n\nEvents with a duplicate constraint are set to state\u003dOFF when detected,\nso that their duplicate counts are not read. However, they were not being\ncleaned up because the core code only cleaned up ACTIVE events.\nThis resulted in counters not being freed and eventually running out\nof resources.\n\nClean up the events with state\u003d\u003dOFF that were marked that way because of\nconstraint duplication.\nEnsure counts are not updated for OFF events.\n\nChange-Id: If532801c79e6ad6809869eb0a3063774f00c92c3\nSigned-off-by: Neil Leeder \u003cnleeder@codeaurora.org\u003e\n[zhaoweiliew: Merge the missing bits due to Linux 3.4.y mismerge]\nSigned-off-by: Zhao Wei Liew \u003czhaoweiliew@gmail.com\u003e\n"
    },
    {
      "commit": "a3927fa42d08cc1d029e0e52b1ff9ea658666083",
      "tree": "4c92def29811aa03a09a74429c22c6791bcfbd9e",
      "parents": [
        "180a5e3805dc2bbc0c252f8c289e05f472b6ecf7"
      ],
      "author": {
        "name": "Anji Jonnala",
        "email": "anjir@codeaurora.org",
        "time": "Mon Jul 20 18:18:52 2015 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:46 2016 -0500"
      },
      "message": "rpm-smd: Optimize smd data read\n\nReplace completion event for tasklets such that the data read happens on\nthe same cpu and that there is no delay in scheduling the task.\n\nChange-Id: I47e3bc5436c1734a2c88df3b01197bc7b22fef99\nSigned-off-by: Archana Sathyakumar \u003casathyak@codeaurora.org\u003e\nSigned-off-by: Anji Jonnala \u003canjir@codeaurora.org\u003e\n"
    },
    {
      "commit": "180a5e3805dc2bbc0c252f8c289e05f472b6ecf7",
      "tree": "b3630f3cc0f6051b0ac75b985c0f2ade17d7ce4f",
      "parents": [
        "634b19b953fd1746249bc395f6fbacf0abb53e94"
      ],
      "author": {
        "name": "Mahesh Sivasubramanian",
        "email": "msivasub@codeaurora.org",
        "time": "Fri Nov 09 15:47:12 2012 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:41 2016 -0500"
      },
      "message": "msm: rpm_smd: Fix issue of RPM ACK not getting processed\n\nWhen RPM driver receives a notification of a SMD data event, it queues\nwork on a workqueue. However, if the event arrives when the workqueue\nis in process, work does not get queued. This results in the last ACK\nnever getting processed or having to wait until another ACK arrives.\nThe fix is to start the workqueue at init time and let it wait\non a completion event that gets triggered by the SMD data event.\n\nAlso, before returning from msm_rpm_wait_for_ack_noirq, trigger the\ncompletion event if there is pending data in the SMD buffer ready for\nprocessing.\n\nCRs-fixed: 418918\nChange-Id: I8c962aadc553faee2a0b05ac6dc8b6c143e5d4ce\nSigned-off-by: Mahesh Sivasubramanian \u003cmsivasub@codeaurora.org\u003e\n"
    },
    {
      "commit": "634b19b953fd1746249bc395f6fbacf0abb53e94",
      "tree": "3ebef2d087d80c25f0ace1ea4c0fc76d49e0965e",
      "parents": [
        "2a41c3c44d04dd7805f0881e830f123dd4bb95fb"
      ],
      "author": {
        "name": "Mahesh Sivasubramanian",
        "email": "msivasub@codeaurora.org",
        "time": "Fri Sep 28 14:17:05 2012 -0600"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:36 2016 -0500"
      },
      "message": "msm: rpm-smd: Fix locking performance issues\n\nFix a issue where primary core could get starved resulting in a\nwatchdog. The issue happens when a client holds a spinlock while\npolling for an ACK from RPM in an atomic context. The ack would also\ntrigger an interrupt handler that schedules a workqueue to process the\ndata. However, the workqueue ends up waiting on the spinlock held by\nthe client invoking the API in atomic context.\n\nSwitch to using mutexes to provide concurrency between sleepable tasks\nwhen waiting on a RPM transaction. This frees up the CPUs for scheduling\nwhen waiting on a mutex.\n\nChange-Id: I381bcb91da01cbfe9f4045ec46898bb42e52c142\nSigned-off-by: Mahesh Sivasubramanian \u003cmsivasub@codeaurora.org\u003e\n"
    },
    {
      "commit": "2a41c3c44d04dd7805f0881e830f123dd4bb95fb",
      "tree": "35af8b677f980a68c7297ca50ecf393cc495a59c",
      "parents": [
        "2bf1c8f66507fde33516820264638a101420329b"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Mon Oct 08 23:28:20 2012 +0000"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:29 2016 -0500"
      },
      "message": "CPU hotplug, debug: detect imbalance between get_online_cpus() and put_online_cpus()\n\nThe synchronization between CPU hotplug readers and writers is achieved\nby means of refcounting, safeguarded by the cpu_hotplug.lock.\n\nget_online_cpus() increments the refcount, whereas put_online_cpus()\ndecrements it.  If we ever hit an imbalance between the two, we end up\ncompromising the guarantees of the hotplug synchronization i.e, for\nexample, an extra call to put_online_cpus() can end up allowing a\nhotplug reader to execute concurrently with a hotplug writer.\n\nSo, add a WARN_ON() in put_online_cpus() to detect such cases where the\nrefcount can go negative, and also attempt to fix it up, so that we can\ncontinue to run.\n\nChange-Id: I144efeaa5899a2e8a3cddd21f010679cbaaa2459\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nReviewed-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nGit-commit: 075663d19885eb3738fd2d7dbdb8947e12563b68\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Osvaldo Banuelos \u003cosvaldob@codeaurora.org\u003e\n"
    },
    {
      "commit": "2bf1c8f66507fde33516820264638a101420329b",
      "tree": "de678d4c0fdfa741b792a73034dbe44e5f44ebef",
      "parents": [
        "4de4afc7eac758a72dc4b9c9113613676610757d"
      ],
      "author": {
        "name": "wyun",
        "email": "wyun@codeaurora.org",
        "time": "Tue Dec 15 13:17:39 2015 -0500"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:19 2016 -0500"
      },
      "message": "msm: vidc: Enable dynamic debug level \u0026 out for video kernel driver\n\n\"level\" has an option of FATAL, ERROR, HIGH, MED, LOW.\n  \u003e\u003eusage for all levels: adb shell \"echo 0xF \u003e /d/vidc/vidc_debug_level\"\n\"out\" has an option of printk or trace_printk.\n  \u003e\u003eusage for terminal window: adb shell \"echo 1 \u003e /d/vidc/vidc_debug_out\"\n\nChange-Id: I0ea3ed2999cc80e691ea86667401eff6c1bf88a8\nSigned-off-by: wyun@codeaurora.org\n"
    },
    {
      "commit": "4de4afc7eac758a72dc4b9c9113613676610757d",
      "tree": "448a9662e0802fa13767798fdc26d8bc830c2a41",
      "parents": [
        "6c4824b2b1050e7b247f74341c30db528e6556bb"
      ],
      "author": {
        "name": "Arun KS",
        "email": "arunks@codeaurora.org",
        "time": "Wed May 11 10:11:36 2016 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:13 2016 -0500"
      },
      "message": "msm: perf: Do not allocate new hw_event if event is duplicate.\n\nDuring a perf_event_enable, kernel/events/core.c calls pmu-\u003eadd() which\nis platform implementation(arch/arm/kernel/perf_event.c). Due to the\nduplicate constraints, arch/arm/mach-msm/perf_event_msm_krait_l2.c\ndrivers marks the event as OFF but returns TRUE to perf_event.c which\ngoes ahead and allocates the hw_event and enables it.\n\nSince event is marked OFF, kernel events core will try to enable this event\nagain during next perf_event_enable. Which results in same event enabled\non multiple hw_events. But during the perf_release, event struct is freed\nand only one hw_event is released. This results in dereferencing the\ninvalid pointer and hence the crash.\n\nFix this by returning error in case of constraint event duplicate. Hence\navoiding the same event programmed on multiple hw event counters.\n\nChange-Id: Ia3360be027dfe87ac753191ffe7e0bc947e72455\nSigned-off-by: Arun KS \u003carunks@codeaurora.org\u003e\n"
    },
    {
      "commit": "6c4824b2b1050e7b247f74341c30db528e6556bb",
      "tree": "95ff0ac54866282b26287815aba4c064b0cd2efb",
      "parents": [
        "58ca0c90e52a44d795ca422d190ce826e688156b"
      ],
      "author": {
        "name": "Kishor PK",
        "email": "kpbhat@codeaurora.org",
        "time": "Fri Jan 29 11:13:25 2016 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:07 2016 -0500"
      },
      "message": "trace: prevent NULL pointer dereference\n\nPrevent unintended NULL pointer dereference in trace_event_perf.\n\nChange-Id: I35151c460b4350ebd414b67c655684c2019f799f\nSigned-off-by: Kishor PK \u003ckpbhat@codeaurora.org\u003e\nSigned-off-by: Srinivasarao P \u003cspathi@codeaurora.org\u003e\n"
    },
    {
      "commit": "58ca0c90e52a44d795ca422d190ce826e688156b",
      "tree": "f4578a75a92763121b47d1dad579a8745691b211",
      "parents": [
        "5f7931e4447b340b3e9effc38ff5cafd2713bb27"
      ],
      "author": {
        "name": "Jaiju Yesudasan",
        "email": "cjaijuy@codeaurora.org",
        "time": "Wed Mar 23 15:51:54 2016 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:34:02 2016 -0500"
      },
      "message": "msm: clock: Fix potential NULL pointer dereference\n\nPointer \u0027b-\u003ectl_reg\u0027 may be dereferenced at function\n__branch_disable_reg()\n\nChange-Id: I5655389e3bab06feb56a5851019fe4cf19f0a93c\nSigned-off-by: Jaiju Yesudasan \u003ccjaijuy@codeaurora.org\u003e\n"
    },
    {
      "commit": "5f7931e4447b340b3e9effc38ff5cafd2713bb27",
      "tree": "44d49c85bb9d722cdabee4e149cec0818e26d5ef",
      "parents": [
        "ead202f78a69b842fcc281f8751db3be0bfc1ac5"
      ],
      "author": {
        "name": "Anji Jonnala",
        "email": "anjir@codeaurora.org",
        "time": "Mon Jun 29 18:45:10 2015 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:56 2016 -0500"
      },
      "message": "msm: rpm-smd: Add a check to validate the rpm message length\n\nPrint the msg_id associated with error communication and\nalso leave a print message for fatal errors in rpm_smd_work.\n\nChange-Id: If0f3b1b5b08fb80a9036219bef6c5577f7fadbe8\nSigned-off-by: Achyuth Sai Vadrav \u003cavadra@codeaurora.org\u003e\nSigned-off-by: Maulik Shah \u003cmkshah@codeaurora.org\u003e\n"
    },
    {
      "commit": "ead202f78a69b842fcc281f8751db3be0bfc1ac5",
      "tree": "418247bb2642da3312876d1bfe0761ab2e802cd7",
      "parents": [
        "9a81822109cd8b50b1bbb67cdd59e01908af81b6"
      ],
      "author": {
        "name": "Anil Kumar Mamidala",
        "email": "amami@codeaurora.org",
        "time": "Tue Feb 17 15:48:26 2015 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:50 2016 -0500"
      },
      "message": "qcom: rpm-smd: Add NULL check for input data variable\n\nAdd NULL check to prevent NULL pointer dereference\nduring memcmp.\n\nChange-Id: I942468802b7a0d762d82c06e0705aaffb2c4057d\nSigned-off-by: Anil Kumar Mamidala \u003camami@codeaurora.org\u003e\n"
    },
    {
      "commit": "9a81822109cd8b50b1bbb67cdd59e01908af81b6",
      "tree": "5ac69574ede4e28bbfb7dc33de6f7cdbae2cc5d4",
      "parents": [
        "5f45751afc3f0c9d648a3955e847a1db166c4ba1"
      ],
      "author": {
        "name": "Mahesh Sivasubramanian",
        "email": "msivasub@codeaurora.org",
        "time": "Thu Dec 20 10:19:56 2012 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:45 2016 -0500"
      },
      "message": "msm: rpm-smd: Fix bug of accessing a free\u0027d data structure\n\nIn msm_rpm_wait_for_ack(), the return value is obtained that a data\nstructure that is free\u0027d. Fix the issue by returning the value stored in\na temporary variable.\n\nCRs-fixed: 429943\nChange-Id: I73e598c159df29d824b0bc68c96e6831f0c61f2f\nSigned-off-by: Mahesh Sivasubramanian \u003cmsivasub@codeaurora.org\u003e\n"
    },
    {
      "commit": "5f45751afc3f0c9d648a3955e847a1db166c4ba1",
      "tree": "58fd1fc745fb93584cbeceb05c38d81ad4b6483f",
      "parents": [
        "6e9009837b4dbd271744e2dae44f94b3d53addbb"
      ],
      "author": {
        "name": "Mahesh Sivasubramanian",
        "email": "msivasub@codeaurora.org",
        "time": "Tue Apr 16 14:51:40 2013 -0600"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:38 2016 -0500"
      },
      "message": "msm: rpm-smd: Fix uninitialized variables in a function\n\nThe return variables in certain variables were uninitiliazed and can\nlead to unknown behavior when the caller deferences them.\n\nChange-Id: Ifa92c8f2e2ea1a65940995a124a6c7f198337414\nSigned-off-by: Mahesh Sivasubramanian \u003cmsivasub@codeaurora.org\u003e\n"
    },
    {
      "commit": "6e9009837b4dbd271744e2dae44f94b3d53addbb",
      "tree": "f67d9839643297bb842ece87d38fb2d6595aac7a",
      "parents": [
        "735aab8baaae044135b3dc233ee1b490116d108b"
      ],
      "author": {
        "name": "Mahesh Sivasubramanian",
        "email": "msivasub@codeaurora.org",
        "time": "Fri May 10 09:38:51 2013 -0600"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:33 2016 -0500"
      },
      "message": "msm: rpm-smd: Configure WQ for higer priority\n\nWhen the workqueue runs at a lower priority, it gets starved by higher\npriority threads. Bump the WQ priority to high to ensure rpm smd work\nqueue gets a fair chance\n\nChange-Id: I06b864611cf45afe6931d6030327806032894663\nSigned-off-by: Mahesh Sivasubramanian \u003cmsivasub@codeaurora.org\u003e\n"
    },
    {
      "commit": "735aab8baaae044135b3dc233ee1b490116d108b",
      "tree": "5b4fd030ae9b85fd43ea0d7ea7652a2d1f942990",
      "parents": [
        "f3e7f2d665aaba80f169a3e59acbe6f556da384e"
      ],
      "author": {
        "name": "Vinayak Menon",
        "email": "vinayakm.list@gmail.com",
        "time": "Mon Jun 02 18:17:59 2014 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:28 2016 -0500"
      },
      "message": "staging: binder: add vm_fault handler\n\nAn issue was observed when a userspace task exits.\nThe page which hits error here is the zero page.\nIn binder mmap, the whole of vma is not mapped.\nOn a task crash, when debuggerd reads the binder regions,\nthe unmapped areas fall to do_anonymous_page in handle_pte_fault,\ndue to the absence of a vm_fault handler. This results in\nzero page being mapped. Later in zap_pte_range, vm_normal_page\nreturns zero page in the case of VM_MIXEDMAP and it results in the\nerror.\n\nBUG: Bad page map in process mediaserver  pte:9dff379f pmd:9bfbd831\npage:c0ed8e60 count:1 mapcount:-1 mapping:  (null) index:0x0\npage flags: 0x404(referenced|reserved)\naddr:40c3f000 vm_flags:10220051 anon_vma:  (null) mapping:d9fe0764 index:fd\nvma-\u003evm_ops-\u003efault:   (null)\nvma-\u003evm_file-\u003ef_op-\u003emmap: binder_mmap+0x0/0x274\nCPU: 0 PID: 1463 Comm: mediaserver Tainted: G        W    3.10.17+ #1\n[\u003cc001549c\u003e] (unwind_backtrace+0x0/0x11c) from [\u003cc001200c\u003e] (show_stack+0x10/0x14)\n[\u003cc001200c\u003e] (show_stack+0x10/0x14) from [\u003cc0103d78\u003e] (print_bad_pte+0x158/0x190)\n[\u003cc0103d78\u003e] (print_bad_pte+0x158/0x190) from [\u003cc01055f0\u003e] (unmap_single_vma+0x2e4/0x598)\n[\u003cc01055f0\u003e] (unmap_single_vma+0x2e4/0x598) from [\u003cc010618c\u003e] (unmap_vmas+0x34/0x50)\n[\u003cc010618c\u003e] (unmap_vmas+0x34/0x50) from [\u003cc010a9e4\u003e] (exit_mmap+0xc8/0x1e8)\n[\u003cc010a9e4\u003e] (exit_mmap+0xc8/0x1e8) from [\u003cc00520f0\u003e] (mmput+0x54/0xd0)\n[\u003cc00520f0\u003e] (mmput+0x54/0xd0) from [\u003cc005972c\u003e] (do_exit+0x360/0x990)\n[\u003cc005972c\u003e] (do_exit+0x360/0x990) from [\u003cc0059ef0\u003e] (do_group_exit+0x84/0xc0)\n[\u003cc0059ef0\u003e] (do_group_exit+0x84/0xc0) from [\u003cc0066de0\u003e] (get_signal_to_deliver+0x4d4/0x548)\n[\u003cc0066de0\u003e] (get_signal_to_deliver+0x4d4/0x548) from [\u003cc0011500\u003e] (do_signal+0xa8/0x3b8)\n\nAdd a vm_fault handler which returns VM_FAULT_SIGBUS, and prevents the\nwrong fallback to do_anonymous_page.\n\nChange-Id: I822036bf91cd6136a14fcd1eff1250a0fd0205a3\nSigned-off-by: Vinayak Menon \u003cvinayakm.list@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f3e7f2d665aaba80f169a3e59acbe6f556da384e",
      "tree": "17cb929d8bd47edd457e308656ccfc81ad6f3c25",
      "parents": [
        "aa14be3e4510db2968e37fceeca1893bcec0913c"
      ],
      "author": {
        "name": "Kishor PK",
        "email": "kpbhat@codeaurora.org",
        "time": "Thu Feb 18 15:26:50 2016 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:23 2016 -0500"
      },
      "message": "msm: perf: validate input argument of ev_constraints functions\n\nValidate input argument before writing into\npmu_constraints_codes array.\n\nCRs-Fixed: 975404\nChange-Id: Id68b1d2201ab1af783af2236833b1dc894e08cc7\nSigned-off-by: Kishor PK \u003ckpbhat@codeaurora.org\u003e\n"
    },
    {
      "commit": "aa14be3e4510db2968e37fceeca1893bcec0913c",
      "tree": "5f9b795a1ca55d451782165b0eb54dc6c64cd0e4",
      "parents": [
        "5c50bf7a3e2af43b128ec018d9250e0c3002295b"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Sat Mar 29 16:56:45 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:16 2016 -0500"
      },
      "message": "sched: Introduce CONFIG_SCHED_FREQ_INPUT\n\nIntroduce a compile time flag to enable scheduler guidance of\nfrequency selection. This flag is also used to turn on or off\nwindow-based load stats feature.\n\nHaving a compile time flag will let some platforms avoid any\noverhead that may be present with this scheduler feature.\n\nChange-Id: Id8dec9839f90dcac82f58ef7e2bd0ccd0b6bd16c\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "5c50bf7a3e2af43b128ec018d9250e0c3002295b",
      "tree": "b8e49195407f163d18670c25dd174faa3800d93d",
      "parents": [
        "f33efacd5dc763ba0fe102f5aa47a6090e3543a4"
      ],
      "author": {
        "name": "Girish S Ghongdemath",
        "email": "girishsg@codeaurora.org",
        "time": "Thu Apr 03 12:54:37 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:10 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Consider only task load to decide on sync frequency\n\nCurrently we take the maximum between the source CPU frequency and\nthe calculated frequency based on the migrating task load to decide on\nthe frequency to sync the destination CPU to. This was done to handle\nshort bursts in workloads of tasks which migrated immediately after\ncausing a ramp up on the source CPU. Since their load history wasn\u0027t\nhigh enough, the destination CPU synced to a lower frequency which\nwasn\u0027t sufficient for the spike in workload.\n\nBut as such cases are rare, taking the higher of source and calculated\nfrequency can lead to destination CPU unnecessarily spending a\nconsiderable amount of time at higher frequencies which in turn can\nhurt power.\n\nWith this change we make sure only the migrating task load is used\nto calculate the sync frequency for destination CPU when load based\nsyncing is enabled.\n\nChange-Id: Ib1489d256c42ea7712aad2179aebffc87c549836\nSigned-off-by: Girish Ghongdemath \u003cgirishsg@codeaurora.org\u003e\n"
    },
    {
      "commit": "f33efacd5dc763ba0fe102f5aa47a6090e3543a4",
      "tree": "7d6ec1dff0a732ed67645569178298a45ade1f69",
      "parents": [
        "f906ba019ce0abdf3bfde99109c3d3b0ec1dcbcf"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Thu Mar 13 20:57:32 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:33:04 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Handle wakeup hints received for foreground tasks\n\nA previous change modifies the notification conditions in the scheduler\nto call the notifier chain even on foreground_thread wakeups for tasks\nhaving load more than a threshold value.\n\nIf load_based_syncs is turned OFF then we do not need to perform\ncpu boost for wakeup hints for foreground tasks from scheduler\n\nChange-Id: Ifbdd3eccac5c9892dfc3a3c3edbfc0df766478ed\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "f906ba019ce0abdf3bfde99109c3d3b0ec1dcbcf",
      "tree": "b65bd6bb83ef6f2d44cb0597c71f7852671a3dd4",
      "parents": [
        "7054d49bbcde1124c494b9618bab0f202bcbcc5e"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Sat Mar 29 11:40:16 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:59 2016 -0500"
      },
      "message": "sched: window-based load stats improvements\n\nFollowing cleanups and improvements are made to window-based load\nstats feature:\n\n* Add sysctl to pick max, avg or most recent samples as task\u0027s\n  demand.\n\n* Fix overflow possibility in calculation of sum for average policy.\n\n* Use unscaled statistics when a task is running on a CPU which is\nthermally throttled.\n\nChange-Id: I8293565ca0c2a785dadf8adb6c67f579a445ed29\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "7054d49bbcde1124c494b9618bab0f202bcbcc5e",
      "tree": "df5cd1d4184d4c21f9e625d572dcfb731cefa6fe",
      "parents": [
        "6d536c0d0b094a027ee3b7c68ce5b186b3f45698"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Tue Apr 01 10:57:59 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:51 2016 -0500"
      },
      "message": "sched: Add min_max_freq and rq-\u003emax_possible_freq\n\nrq-\u003emax_possible_freq represents the maximum frequency a cpu is\ncapable of attaining, while rq-\u003emax_freq represents the maximum\nfrequency a cpu can attain at a given instant. rq-\u003emax_freq includes\nconstraints imposed by user or thermal driver.\nrq-\u003emax_freq \u003c\u003d rq-\u003emax_possible_freq.\n\nmax_possible_freq is derived as max(rq-\u003emax_possible_freq) and\nrepresents the \"best\" cpu that can attain best possible frequency.\n\nmin_max_freq is derived as min(rq-\u003emax_possible_freq). For homogeneous\nsystems, max_possible_freq and min_max_freq will be same, while they\ncould be different on heterogeneous systems.\n\nChange-Id: Iec485fde35cfd33f55ebf2c2dce4864faa2083c5\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "6d536c0d0b094a027ee3b7c68ce5b186b3f45698",
      "tree": "b4b9e2555ff84caec026dfaeaca87a74b3a0d8ec",
      "parents": [
        "bc6d706612791d4e83463f58228470cb4ab6c643"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@codeaurora.org",
        "time": "Tue May 20 14:10:18 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:46 2016 -0500"
      },
      "message": "sched: move task load based functions\n\nThe task load based functions will need to make use of LOAD_AVG_MAX\nin a subsequent patch, so move them below the definition of that\nmacro.\n\nChange-Id: I02f18ba069b81033e611f8f8bba6dccd7cd81252\nSigned-off-by: Steve Muckle \u003csmuckle@codeaurora.org\u003e\n"
    },
    {
      "commit": "bc6d706612791d4e83463f58228470cb4ab6c643",
      "tree": "c7459dd55b3c8bdd71c05f7a3911856cb774f3fa",
      "parents": [
        "fac5e0e2237a9dea2f7fb85cca7a8b91f49a5ee2"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@codeaurora.org",
        "time": "Mon Jul 14 03:19:29 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:39 2016 -0500"
      },
      "message": "sched: fix race between try_to_wake_up() and move_task()\n\nUntil a task\u0027s state has been seen as interruptible/uninterruptible\nand it is no longer on_cpu, it is possible that the task may move\nto another CPU (load balancing may cause this). Here is an example\nwhere the race condition results in incorrect operation:\n\n- cpu 0 calls put_prev_task on task A, task A\u0027s state is TASK_RUNNING\n- cpu 0 runs task B, which attempts to wake up A\n- cpu 0 begins try_to_wake_up(), recording src_cpu for task A as cpu 0\n- cpu 1 then pulls task A (perhaps due to idle balance)\n- cpu 1 runs task A, which then sleeps, becoming INTERRUPTIBLE\n- cpu 0 continues in try_to_wake_up(), thinking task A\u0027s previous\n  cpu is 0, where it is actually 1\n- if select_task_rq returns cpu 0, task A will be woken up on cpu 0\n  without properly updating its cpu to 0 in set_task_cpu()\n\nCRs-Fixed: 665958\nChange-Id: Icee004cb320bd8edfc772d9f74e670a9d4978a99\nAuthor: Steve Muckle \u003csmuckle@codeaurora.org\u003e\nSigned-off-by: Steve Muckle \u003csmuckle@codeaurora.org\u003e\n"
    },
    {
      "commit": "fac5e0e2237a9dea2f7fb85cca7a8b91f49a5ee2",
      "tree": "b7b7c07928eac82cef7e8f01c8f0ee2359e6dc65",
      "parents": [
        "8c7a411495d4823fa9c907eba7abf24cb4c7da8b"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Fri May 16 16:15:50 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:32 2016 -0500"
      },
      "message": "sched: Skip load update for idle task\n\nLoad statistics for idle tasks is not useful in any manner. Skip load\nupdate for such idle tasks.\n\nCRs-Fixed: 665706\nChange-Id: If3a908bad7fbb42dcb3d0a1d073a3750cf32fcf9\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "8c7a411495d4823fa9c907eba7abf24cb4c7da8b",
      "tree": "bdd8e0d2f60c604b247821aa1b85d834667234cc",
      "parents": [
        "50c7d47074b390ca2f2cbab2f2b1d6bff122b481"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Thu May 15 19:06:56 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:22 2016 -0500"
      },
      "message": "sched: window-stats: Fix overflow bug\n\nMultiplication over-flow possibility exists in update_task_ravg() when\nupdating task\u0027s window_start. That would lead to incorrect accounting\nof task load. Fix the issue by using 64-bit arithmetic.\n\nCRs-Fixed: 665706\nChange-Id: I92651c41efa6121bb8fe102e495ae956127b237a\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "50c7d47074b390ca2f2cbab2f2b1d6bff122b481",
      "tree": "3d2a8e29a4707398a3f116b4a31491dadc600cf3",
      "parents": [
        "fddadfa9239b2c1648cd91918991190d0f5f7348"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Sat Mar 29 11:40:16 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:17 2016 -0500"
      },
      "message": "sched: Window-based load stat improvements\n\nSome tasks can have a sporadic load pattern such that they can suddenly\nstart running for longer intervals of time after running for shorter\ndurations. To recognize such sharp increase in tasks\u0027 demands, max\nbetween the average of 5 window load samples and the most recent sample\nis chosen as the task demand.\n\nMake the window size (sched_ravg_window) configurable at boot up\ntime. To prevent users from setting inappropriate values for window\nsize, min and max limits are defined. As \u0027ravg\u0027 struct tracks load for\nboth real-time and non real-time tasks it is moved out of sched_entity\nstruct.\n\nIn order to prevent changing function signatures for move_tasks() and\nmove_one_task() per-cpu variables are defined to track the total load\nmoved. In case multiple tasks are selected to migrate in one load\nbalance operation, loads \u003e 100 could be sent through migration notifiers.\nPrevent this scenario by setting mnd.load to 100 in such cases.\n\nDefine wrapper functions to compute cpu demands for tasks and to change\nrq-\u003ecumulative_runnable_avg.\n\nChange-Id: I9abfbf3b5fe23ae615a6acd3db9580cfdeb515b4\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "fddadfa9239b2c1648cd91918991190d0f5f7348",
      "tree": "80598a4beb481a4e61d835fa640fad2ff29b4afe",
      "parents": [
        "1bd9e1f6d3cf6e9e74199045c5801e93796c8996"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Tue Apr 15 19:30:53 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:10 2016 -0500"
      },
      "message": "sched: Disable wakeup hints for foreground tasks by default\n\nBy default sched_wakeup_load_threshold is set to 60 and therefore\nwakeup hints are sent out for those tasks whose loads are higher\nthat value. This might cause unnecessary wakeup boosts to happen\nwhen load based syncing is turned ON for cpu-boost.\nDisable the wake up hints by setting the sched_wakeup_load_threshold\nto a value higher than 100 so that wakeup boost doesnt happen unless\nit is explicitly turned ON from adb shell.\n\nChange-Id: I9b8a594c2bfdf2e092cc645e50c0c21efc514c2f\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "1bd9e1f6d3cf6e9e74199045c5801e93796c8996",
      "tree": "db9ccade7521bdfc32303f3f55828fb21af43fed",
      "parents": [
        "5ec9df8aed606e02404fe434d0f1b751e9d7158a"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Thu Mar 13 20:54:47 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:32:04 2016 -0500"
      },
      "message": "sched: Call the notify_on_migrate notifier chain for wakeups as well\n\nAdd a change to send notify_on_migrate hints on wakeups of\nforeground tasks from scheduler if their load is above\nwakeup_load_thresholds (default value is 60).\nThese hints can be used to choose an appropriate CPU frequency\ncorresponding to the load of the task being woken up.\n\nChange-Id: Ieca413c1a8bd2b14a15a7591e8e15d22925c42ca\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "5ec9df8aed606e02404fe434d0f1b751e9d7158a",
      "tree": "8e1a7b0bbe294175fb5d0ad1ec3930757ff41c97",
      "parents": [
        "7b7fb127f290c789c87b3f1fa2ebaafcc0423211"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Fri Mar 14 18:56:14 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:57 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Introduce scheduler assisted load based syncs\n\nPreviously, on getting a migration notification cpu-boost changed\nthe scaling min of the destination frequency to match that of the\nsource frequency or sync_threshold whichever was minimum.\n\nIf the scheduler migration notification is extended with task load\n(cpu demand) information, the cpu boost driver can use this load to\ncompute a suitable frequency for the migrating task. The required\nfrequency for the task is calculated by taking the load percentage\nof the max frequency and no sync is performed if the load is less\nthan a particular value (migration_load_threshold).This change is\nbeneficial for both perf and power as demand of a task is taken into\nconsideration while making cpufreq decisions and unnecessary syncs\nfor lightweight tasks are avoided.\n\nThe task load information provided by scheduler comes from a\nwindow-based load collection mechanism which also normalizes the\nload collected by the scheduler to the max possible frequency\nacross all CPUs.\n\nChange-Id: Id2ba91cc4139c90602557f9b3801fb06b3c38992\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "7b7fb127f290c789c87b3f1fa2ebaafcc0423211",
      "tree": "1247c2d50dc772490e53a4e369dda811bb106099",
      "parents": [
        "ba7748810ca123f044c16a7f9444106bc988ff0e"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Fri Dec 20 18:56:07 2013 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:52 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Resolve deadlock when waking up sync thread\n\nCPU boost driver receives notification from scheduler when threads\nmigrate towards a cpu and in turn wakes up a sync thread associated\nwith that cpu to handle any required frequency transitions. The wakeup\ncall however can lead to a deadlock inside scheduler under some\ncircumstance. The deadlock is seen when sync thread is the only thread\nrunning on a cpu and goes to sleep (say by calling wait_event() -\u003e\nschedule()). Midway through this sleep (schedule()) call, while cpu is\nstill running in context of sync thread, scheduler attempts a load\nbalance (realizing that cpu is about to become idle) which can result\nin tasks being migrated towards the cpu going idle. This will cause\nmigration notification to be issued and in turn a wakeup on sync\nthread. The wakeup call however gets stuck in below while() loop\ninside scheduler:\n\ntry_to_wake_up(struct task_struct *p, ...)\n{\n\n        /*\n         * If the owning (remote) cpu is still in the middle of\n\t * schedule() with this task as prev, wait until its done\n\t * referencing the task.\n         */\n\twhile (p-\u003eon_cpu)\n\t\tcpu_relax();\n\n}\n\nA possible fix could be to teach try_to_wake_up() about this\nspecial case. Another fix, implemented in this patch and that helps\nminimize scheduler changes, is to have cpu boost driver not issue a\nwakeup under this special circumstance, which was found to occur very\ninfrequently.\n\nChange-Id: I92bc68a22d51595a208673fe2a1eedfa97004f9e\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "ba7748810ca123f044c16a7f9444106bc988ff0e",
      "tree": "390cee9ba9d71925af964b0480827a22a65ee511",
      "parents": [
        "07762c9fea1496e6c6f0e1b563b3874a78bddf55"
      ],
      "author": {
        "name": "Patrick Cain",
        "email": "pcain@codeaurora.org",
        "time": "Wed Mar 12 16:56:16 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:45 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Re-issue boosts above minimum frequency\n\nFrequency boosts where the source CPU frequency is greater than CPU\u0027s\nminimum frequency should always go through regardless of the destination\nCPU\u0027s current frequency. This fixes a performance issue where the governor\nlowers the CPU frequency shortly after a thread is migrated to it because\nthe boost wasn\u0027t re-issued.\n\nChange-Id: I449545a688d84b0a6e834f5a51dcb499caa84d29\nSigned-off-by: Patrick Cain \u003cpcain@codeaurora.org\u003e\n"
    },
    {
      "commit": "07762c9fea1496e6c6f0e1b563b3874a78bddf55",
      "tree": "7c66da2bf6ebe557d1899571d324799b38f97239",
      "parents": [
        "62f5adfc82d7d43944962e58ebe2bd86c401a1a1"
      ],
      "author": {
        "name": "Swetha Chikkaboraiah",
        "email": "schikk@codeaurora.org",
        "time": "Mon Apr 06 14:50:10 2015 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:39 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Resolve deadlock when waking up sync thread\n\nWaking up sync thread recursively for same CPU causes deadlock.\nFix this by avoiding recursive wakeup call to same thread.\n\nCRs-Fixed: 814956\nChange-Id: Iaa789bc8a441e56524e0851274765a07937d83fb\nSigned-off-by: Swetha Chikkaboraiah \u003cschikk@codeaurora.org\u003e\n"
    },
    {
      "commit": "62f5adfc82d7d43944962e58ebe2bd86c401a1a1",
      "tree": "b8478445b1bc7aa8ac879241573b95d435e5bc3f",
      "parents": [
        "a83f6392e665f446ac5e2a5ba71c1943d49025aa"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Wed Jul 23 14:08:42 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:33 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Use one work to remove input boost for all CPUs\n\nCurrently each CPU queues up its own work for removing input boost.\nThis is not really required as boost removal for all the CPUs can\nbe done at the same time. So this patch uses a single work to\nremove input boost for all the CPUs and updates the policy for\nthe online ones.\n\nChange-Id: I37c809f2f155548b1d8c1b9aa7626c8852b3acc6\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "a83f6392e665f446ac5e2a5ba71c1943d49025aa",
      "tree": "8e3ad442a705e50f6118587a47b762b53d2dfae9",
      "parents": [
        "71689d5f432dc3c6f63d7bef30fc403b49e7ad2c"
      ],
      "author": {
        "name": "Junjie Wu",
        "email": "junjiew@codeaurora.org",
        "time": "Wed May 28 16:36:25 2014 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:26 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Support separate input_boost_freq for different CPUs\n\nDifferent types of CPUs could have different frequency to satisfy same\ninput workload. Add support for using different input_boost_freq on\ndifferent CPUs.\n\ninput_boost_freq now either takes a single number which applies to all\nCPUs, or cpuid:freq pairs separated by space for different CPUs.\n\nChange-Id: I20506a9fbdb4d532d94168bbd61744595bebc8e5\nSigned-off-by: Junjie Wu \u003cjunjiew@codeaurora.org\u003e\n"
    },
    {
      "commit": "71689d5f432dc3c6f63d7bef30fc403b49e7ad2c",
      "tree": "6d39f81a5feaff557c8e44ac9fcb8830629ab313",
      "parents": [
        "523788977fdd830469f46b1a21631bbd199d4fce"
      ],
      "author": {
        "name": "Swetha Chikkaboraiah",
        "email": "schikk@codeaurora.org",
        "time": "Tue Jun 10 17:31:23 2014 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:21 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Use interruptible wait to not affect load average\n\nUsing the function wait_event in cpu_boost puts the\nprocess enter to \u0027D\u0027 state which contribute to the\nhigh load average. This change will put the process\nboost_sync in the \u0027S\u0027 state (interruptible sleep).\n\nCRs-Fixed: 655484\nChange-Id: Ie121adbe1fac1d2862ac5342bb97c7c926f7d7a8\nSigned-off-by: Swetha Chikkaboraiah \u003cschikk@codeaurora.org\u003e\n"
    },
    {
      "commit": "523788977fdd830469f46b1a21631bbd199d4fce",
      "tree": "1c31e707d3fc2ea9a7b0f371b1285ddcf26a4781",
      "parents": [
        "553739832a78578bdbf2727961ca1cef7e6733d0"
      ],
      "author": {
        "name": "Dan Pasanen",
        "email": "dan.pasanen@gmail.com",
        "time": "Mon Jul 28 21:56:56 2014 -0500"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:15 2016 -0500"
      },
      "message": "cpu-boost: sync with kk_3.5\n\nChange-Id: I864e545529722a23886dd5a82f66089155d2d193\n"
    },
    {
      "commit": "553739832a78578bdbf2727961ca1cef7e6733d0",
      "tree": "1ace1495619f365d5eabb1c786a3b1264887b0a2",
      "parents": [
        "889de8f2515046d8b897c5663e320e088a7ac1fc"
      ],
      "author": {
        "name": "Saravana Kannan",
        "email": "skannan@codeaurora.org",
        "time": "Thu Feb 13 19:08:21 2014 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:10 2016 -0500"
      },
      "message": "cpufreq: cpu-boost: Don\u0027t register for cpufreq notifiers too early\n\nThe cpufreq notifiers should be registered only after all the data\nstructures used in the notifier callbacks have been initialized. So, move\nthe cpufreq notifier registration to a later point in the init function.\n\nChange-Id: I043ab5bc0ebb98164c40549fe151a8d801c8c186\nSigned-off-by: Saravana Kannan \u003cskannan@codeaurora.org\u003e\n"
    },
    {
      "commit": "889de8f2515046d8b897c5663e320e088a7ac1fc",
      "tree": "dd7660cd292f88e67ed1cc2d9adb6dfe99d41498",
      "parents": [
        "76173dbc06dd1a20b7b6b2c3afbf29ae935b95bd"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Mon Jan 06 16:24:48 2014 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:31:03 2016 -0500"
      },
      "message": "sched: window-based load stats for tasks\n\nProvide a metric per task that specifies how cpu bound a task is. Task\nexecution is monitored over several time windows and the fraction of\nthe window for which task was found to be executing or wanting to run\nis recorded as task\u0027s demand. Windows over which task was sleeping are\nignored. We track last 5 recent windows for every task and the maximum\ndemand seen in any of the previous 5 windows (where task had some\nactivity) drives freq demand for every task.\n\nA per-cpu metric (rq-\u003ecumulative_runnable_avg) is also provided which\nis an aggregation of cpu demand of all tasks currently enqueued on it.\nrq-\u003ecumulative_runnable_avg will be useful to know if cpu frequency\nwill need to be changed to match task demand.\n\nChange-Id: Ib83207b9ba8683cd3304ee8a2290695c34f08fe2\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "76173dbc06dd1a20b7b6b2c3afbf29ae935b95bd",
      "tree": "01cb8e6f452ae972ff6c2e59fb9c60eb251b3167",
      "parents": [
        "5f81291fa85a9386c4135bc254513bf7ea1fd94a"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@codeaurora.org",
        "time": "Thu Dec 12 17:06:11 2013 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:57 2016 -0500"
      },
      "message": "sched: Make scheduler aware of cpu frequency state\n\nCapacity of a cpu (how much performance it can deliver) is partly\ndetermined by its frequency (P) state, both current frequency as well\nas max frequency it can reach.  Knowing frequency state of cpus will\nhelp scheduler optimize various functions such as tracking every\ntask\u0027s cpu demand and placing tasks on various cpus.\n\nThis patch has scheduler registering for cpufreq notifications to\nbecome aware of cpu\u0027s frequency state. Subsequent patches will make\nuse of derived information for various purposes, such as task\u0027s scaled\nload (cpu demand) accounting and task placement.\n\nChange-Id: I376dffa1e7f3f47d0496cd7e6ef8b5642ab79016\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@codeaurora.org\u003e\n"
    },
    {
      "commit": "5f81291fa85a9386c4135bc254513bf7ea1fd94a",
      "tree": "bf4ca1b369b10df81c6350e84e80725ed41ae0e3",
      "parents": [
        "6927616e84bbc0f249ff1c0a49c11baee2199aa8"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:32 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:52 2016 -0500"
      },
      "message": "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking\n\nWhile per-entity load-tracking is generally useful, beyond computing shares\ndistribution, e.g. runnable based load-balance (in progress), governors,\npower-management, etc.\n\nThese facilities are not yet consumers of this data.  This may be trivially\nreverted when the information is required; but avoid paying the overhead for\ncalculations we will not use until then.\n\nChange-Id: I459d52082af636d1181edb7acb3af973e95714f9\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141507.422162369@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "6927616e84bbc0f249ff1c0a49c11baee2199aa8",
      "tree": "487948f457ad9181903219c153e6c0975e9aaa46",
      "parents": [
        "bdda1309760e8bf34af3ec721e49e6d2801e061f"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:32 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:44 2016 -0500"
      },
      "message": "sched: Make __update_entity_runnable_avg() fast\n\n__update_entity_runnable_avg forms the core of maintaining an entity\u0027s runnable\nload average.  In this function we charge the accumulated run-time since last\nupdate and handle appropriate decay.  In some cases, e.g. a waking task, this\ntime interval may be much larger than our period unit.\n\nFortunately we can exploit some properties of our series to perform decay for a\nblocked update in constant time and account the contribution for a running\nupdate in essentially-constant* time.\n\n[*]: For any running entity they should be performing updates at the tick which\ngives us a soft limit of 1 jiffy between updates, and we can compute up to a\n32 jiffy update in a single pass.\n\nC program to generate the magic constants in the arrays:\n\n  #include \u003cmath.h\u003e\n  #include \u003cstdio.h\u003e\n\n  #define N 32\n  #define WMULT_SHIFT 32\n\n  const long WMULT_CONST \u003d ((1UL \u003c\u003c N) - 1);\n  double y;\n\n  long runnable_avg_yN_inv[N];\n  void calc_mult_inv() {\n  \tint i;\n  \tdouble yn \u003d 0;\n\n  \tprintf(\"inverses\\n\");\n  \tfor (i \u003d 0; i \u003c N; i++) {\n  \t\tyn \u003d (double)WMULT_CONST * pow(y, i);\n  \t\trunnable_avg_yN_inv[i] \u003d yn;\n  \t\tprintf(\"%2d: 0x%8lx\\n\", i, runnable_avg_yN_inv[i]);\n  \t}\n  \tprintf(\"\\n\");\n  }\n\n  long mult_inv(long c, int n) {\n  \treturn (c * runnable_avg_yN_inv[n]) \u003e\u003e  WMULT_SHIFT;\n  }\n\n  void calc_yn_sum(int n)\n  {\n  \tint i;\n  \tdouble sum \u003d 0, sum_fl \u003d 0, diff \u003d 0;\n\n  \t/*\n  \t * We take the floored sum to ensure the sum of partial sums is never\n  \t * larger than the actual sum.\n  \t */\n  \tprintf(\"sum y^n\\n\");\n  \tprintf(\"   %8s  %8s %8s\\n\", \"exact\", \"floor\", \"error\");\n  \tfor (i \u003d 1; i \u003c\u003d n; i++) {\n  \t\tsum \u003d (y * sum + y * 1024);\n  \t\tsum_fl \u003d floor(y * sum_fl+ y * 1024);\n  \t\tprintf(\"%2d: %8.0f  %8.0f %8.0f\\n\", i, sum, sum_fl,\n  \t\t\tsum_fl - sum);\n  \t}\n  \tprintf(\"\\n\");\n  }\n\n  void calc_conv(long n) {\n  \tlong old_n;\n  \tint i \u003d -1;\n\n  \tprintf(\"convergence (LOAD_AVG_MAX, LOAD_AVG_MAX_N)\\n\");\n  \tdo {\n  \t\told_n \u003d n;\n  \t\tn \u003d mult_inv(n, 1) + 1024;\n  \t\ti++;\n  \t} while (n !\u003d old_n);\n  \tprintf(\"%d\u003e %ld\\n\", i - 1, n);\n  \tprintf(\"\\n\");\n  }\n\n  void main() {\n  \ty \u003d pow(0.5, 1/(double)N);\n  \tcalc_mult_inv();\n  \tcalc_conv(1024);\n  \tcalc_yn_sum(N);\n  }\n\n[ Compile with -lm ]\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141507.277808946@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n\nChange-Id: Ifc6dd06f234483d376bd752e536a49d3d4ca2115\n"
    },
    {
      "commit": "bdda1309760e8bf34af3ec721e49e6d2801e061f",
      "tree": "4c56ba978446e0d34f7bc812f88cd527e7c59ba3",
      "parents": [
        "9d87ebaf52832a894ce0f06ef2da10992f336f9b"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:31 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:38 2016 -0500"
      },
      "message": "sched: Update_cfs_shares at period edge\n\nNow that our measurement intervals are small (~1ms) we can amortize the posting\nof update_shares() to be about each period overflow.  This is a large cost\nsaving for frequently switching tasks.\n\nChange-Id: I46f9413adf39bd2033f5b84d5134b045d0bf1d4a\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141507.200772172@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "9d87ebaf52832a894ce0f06ef2da10992f336f9b",
      "tree": "508aae19781e216c8d5b61cc02f71e9bfbe5e3ad",
      "parents": [
        "3d608482e16e93a2b6a097e06dc5d223dcc44f98"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:31 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:32 2016 -0500"
      },
      "message": "sched: Refactor update_shares_cpu() -\u003e update_blocked_avgs()\n\nNow that running entities maintain their own load-averages the work we must do\nin update_shares() is largely restricted to the periodic decay of blocked\nentities.  This allows us to be a little less pessimistic regarding our\noccupancy on rq-\u003elock and the associated rq-\u003eclock updates required.\n\nChange-Id: Iecd8d3c194270fd5617c0473b257d9d6904386a5\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141507.133999170@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "3d608482e16e93a2b6a097e06dc5d223dcc44f98",
      "tree": "734f4f5367b4ac58e81b9a00e9e7f54704acf993",
      "parents": [
        "5c1cb8e63e058c28aa5128086a7c8baf644da39b"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:31 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:27 2016 -0500"
      },
      "message": "sched: Replace update_shares weight distribution with per-entity computation\n\nNow that the machinery in place is in place to compute contributed load in a\nbottom up fashion; replace the shares distribution code within update_shares()\naccordingly.\n\nChange-Id: Ib53b4ee8d1c1d3e862ce5174d3b7e6ca12276400\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141507.061208672@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "5c1cb8e63e058c28aa5128086a7c8baf644da39b",
      "tree": "0382ee082ce062ade3c6b8a13ec612895f3adef9",
      "parents": [
        "d36b71a03b77347a09f420851ebf61dd2d8a316b"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:31 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:21 2016 -0500"
      },
      "message": "sched: Maintain runnable averages across throttled periods\n\nWith bandwidth control tracked entities may cease execution according to user\nspecified bandwidth limits.  Charging this time as either throttled or blocked\nhowever, is incorrect and would falsely skew in either direction.\n\nWhat we actually want is for any throttled periods to be \"invisible\" to\nload-tracking as they are removed from the system for that interval and\ncontribute normally otherwise.\n\nDo this by moderating the progression of time to omit any periods in which the\nentity belonged to a throttled hierarchy.\n\nChange-Id: I9d2c2d8a0cc984064c37432ecb262178ce0b3d32\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.998912151@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d36b71a03b77347a09f420851ebf61dd2d8a316b",
      "tree": "a5d2ad25f531be843fe86cbb8f8e1ae04b518f44",
      "parents": [
        "fdb1a24e4d446d86a8be696072cb76f296e1ad26"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:31 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:14 2016 -0500"
      },
      "message": "sched: Normalize tg load contributions against runnable time\n\nEntities of equal weight should receive equitable distribution of cpu time.\nThis is challenging in the case of a task_group\u0027s shares as execution may be\noccurring on multiple cpus simultaneously.\n\nTo handle this we divide up the shares into weights proportionate with the load\non each cfs_rq.  This does not however, account for the fact that the sum of\nthe parts may be less than one cpu and so we need to normalize:\n  load(tg) \u003d min(runnable_avg(tg), 1) * tg-\u003eshares\nWhere runnable_avg is the aggregate time in which the task_group had runnable\nchildren.\n\nChange-Id: I6f8d2ff1e61c1559c892ed9e2da670aed92dbbeb\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e.\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.930124292@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "fdb1a24e4d446d86a8be696072cb76f296e1ad26",
      "tree": "0456bc95326e13dad91425dcedf99ff143d7ad8a",
      "parents": [
        "679f45f82e88be237ce242d77d966e5f2aceef17"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:31 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:07 2016 -0500"
      },
      "message": "sched: Compute load contribution by a group entity\n\nUnlike task entities who have a fixed weight, group entities instead own a\nfraction of their parenting task_group\u0027s shares as their contributed weight.\n\nCompute this fraction so that we can correctly account hierarchies and shared\nentity nodes.\n\nChange-Id: If61e926bb72f56c543b5b85841355f9f6997c51d\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.855074415@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "679f45f82e88be237ce242d77d966e5f2aceef17",
      "tree": "c840d147c1f5cc7ff0ef27f4f12e2b176430c56a",
      "parents": [
        "0fe5038d2a7444df1aef6343bc6e52710da783df"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:30 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:30:01 2016 -0500"
      },
      "message": "sched: Aggregate total task_group load\n\nMaintain a global running sum of the average load seen on each cfs_rq belonging\nto each task group so that it may be used in calculating an appropriate\nshares:weight distribution.\n\nChange-Id: If2726cb0037ddffce651ea17c46cbc4924cca7a2\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.792901086@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "0fe5038d2a7444df1aef6343bc6e52710da783df",
      "tree": "5af38e0c6377251ba07bc2f608581d049734b7d7",
      "parents": [
        "635704dd72526deba57c08b2745edfc34ca251d9"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:30 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:56 2016 -0500"
      },
      "message": "sched: Account for blocked load waking back up\n\nWhen a running entity blocks we migrate its tracked load to\ncfs_rq-\u003eblocked_runnable_avg.  In the sleep case this occurs while holding\nrq-\u003elock and so is a natural transition.  Wake-ups however, are potentially\nasynchronous in the presence of migration and so special care must be taken.\n\nWe use an atomic counter to track such migrated load, taking care to match this\nwith the previously introduced decay counters so that we don\u0027t migrate too much\nload.\n\nChange-Id: Ied949a2a42f68e4d4d16275351fd1240939dd519\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.726077467@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "635704dd72526deba57c08b2745edfc34ca251d9",
      "tree": "ed9c3a6bb452424071e2ca83cad66165192d76e0",
      "parents": [
        "5f7c4c5219e97f83a952f1748c065df78fce45c6"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:30 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:46 2016 -0500"
      },
      "message": "sched: Add an rq migration call-back to sched_class\n\nSince we are now doing bottom up load accumulation we need explicit\nnotification when a task has been re-parented so that the old hierarchy can be\nupdated.\n\nAdds: migrate_task_rq(struct task_struct *p, int next_cpu)\n\n(The alternative is to do this out of __set_task_cpu, but it was suggested that\nthis would be a cleaner encapsulation.)\n\nChange-Id: Icc4111cd4159f804186dd7c05f0c36f4e368288e\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.660023400@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "5f7c4c5219e97f83a952f1748c065df78fce45c6",
      "tree": "4022e076f170b88667c57015bfddfcb648804a79",
      "parents": [
        "1c5465d1d1d5aea96eb71318c361d434e0a7cce7"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:30 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:40 2016 -0500"
      },
      "message": "sched: Maintain the load contribution of blocked entities\n\nWe are currently maintaining:\n\n  runnable_load(cfs_rq) \u003d \\Sum task_load(t)\n\nFor all running children t of cfs_rq.  While this can be naturally updated for\ntasks in a runnable state (as they are scheduled); this does not account for\nthe load contributed by blocked task entities.\n\nThis can be solved by introducing a separate accounting for blocked load:\n\n  blocked_load(cfs_rq) \u003d \\Sum runnable(b) * weight(b)\n\nObviously we do not want to iterate over all blocked entities to account for\ntheir decay, we instead observe that:\n\n  runnable_load(t) \u003d \\Sum p_i*y^i\n\nand that to account for an additional idle period we only need to compute:\n\n  y*runnable_load(t).\n\nThis means that we can compute all blocked entities at once by evaluating:\n\n  blocked_load(cfs_rq)` \u003d y * blocked_load(cfs_rq)\n\nFinally we maintain a decay counter so that when a sleeping entity re-awakens\nwe can determine how much of its load should be removed from the blocked sum.\n\nChange-Id: Ib0b29b3d1ca872a13d7236ed142156ef0a35dc9a\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.585389902@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "1c5465d1d1d5aea96eb71318c361d434e0a7cce7",
      "tree": "060d3fff882c4888cba9fb2fdd3c7c06afc9e53e",
      "parents": [
        "b9283adf8c4c2dcbe1fd5a6171c658bc7924bc65"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:30 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:34 2016 -0500"
      },
      "message": "sched: Aggregate load contributed by task entities on parenting cfs_rq\n\nFor a given task t, we can compute its contribution to load as:\n\n  task_load(t) \u003d runnable_avg(t) * weight(t)\n\nOn a parenting cfs_rq we can then aggregate:\n\n  runnable_load(cfs_rq) \u003d \\Sum task_load(t), for all runnable children t\n\nMaintain this bottom up, with task entities adding their contributed load to\nthe parenting cfs_rq sum.  When a task entity\u0027s load changes we add the same\ndelta to the maintained sum.\n\nChange-Id: If3b74d345354a340836bbc356002982e25ab3244\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.514678907@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "b9283adf8c4c2dcbe1fd5a6171c658bc7924bc65",
      "tree": "49340484990b18a85f0ec60eb473e070cbce2f65",
      "parents": [
        "e4079d2be87ac03bacdf2ad4076366b9099f1043"
      ],
      "author": {
        "name": "Ben Segall",
        "email": "bsegall@google.com",
        "time": "Thu Oct 04 12:51:20 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:29 2016 -0500"
      },
      "message": "sched: Maintain per-rq runnable averages\n\nSince runqueues do not have a corresponding sched_entity we instead embed a\nsched_avg structure directly.\n\nChange-Id: Ib2a80c77f6b4e017eaa72b31004630c7d95e4b94\nSigned-off-by: Ben Segall \u003cbsegall@google.com\u003e\nReviewed-by: Paul Turner \u003cpjt@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.442637130@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "e4079d2be87ac03bacdf2ad4076366b9099f1043",
      "tree": "7666d57c41be488b79b7de50fe65cc11d7acca2e",
      "parents": [
        "2f9d485e1a6c66b5a27495ca1e86b1df1dda2213"
      ],
      "author": {
        "name": "Paul Turner",
        "email": "pjt@google.com",
        "time": "Thu Oct 04 13:18:29 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:24 2016 -0500"
      },
      "message": "sched: Track the runnable average on a per-task entity basis\n\nInstead of tracking averaging the load parented by a cfs_rq, we can track\nentity load directly. With the load for a given cfs_rq then being the sum\nof its children.\n\nTo do this we represent the historical contribution to runnable average\nwithin each trailing 1024us of execution as the coefficients of a\ngeometric series.\n\nWe can express this for a given task t as:\n\n  runnable_sum(t) \u003d \\Sum u_i * y^i, runnable_avg_period(t) \u003d \\Sum 1024 * y^i\n  load(t) \u003d weight_t * runnable_sum(t) / runnable_avg_period(t)\n\nWhere: u_i is the usage in the last i`th 1024us period (approximately 1ms)\n~ms and y is chosen such that y^k \u003d 1/2.  We currently choose k to be 32 which\nroughly translates to about a sched period.\n\nChange-Id: Iafc090fe18ed1835cc501949e8ba1e4ed78c5de1\nSigned-off-by: Paul Turner \u003cpjt@google.com\u003e\nReviewed-by: Ben Segall \u003cbsegall@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120823141506.372695337@google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "2f9d485e1a6c66b5a27495ca1e86b1df1dda2213",
      "tree": "5391f10ee845437e3fbe7bdf81694b9ddfb0c085",
      "parents": [
        "023faa64ad5a4dbf4635e04a6b7faa7a9e88b9f6"
      ],
      "author": {
        "name": "Murali Nalajala",
        "email": "mnalajal@codeaurora.org",
        "time": "Wed Jan 08 16:18:48 2014 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:17 2016 -0500"
      },
      "message": "msm: msm_rq_stats: remove is_smp() API\n\nis_smp() API is unavailable on few target codes.\nUntil this API is defined use CONFIG_SMP to know\nwhether target supports SPM are not.\n\nCRs-fixed: 579034\nChange-Id: I5bd5c208b18aae27d7f36e77e9d5b38639c2c00e\nSigned-off-by: Murali Nalajala \u003cmnalajal@codeaurora.org\u003e\n"
    },
    {
      "commit": "023faa64ad5a4dbf4635e04a6b7faa7a9e88b9f6",
      "tree": "803ecd4828398b9cefb7861207a1f69f6ccbe1b6",
      "parents": [
        "9775141e935cee4719ed4b0224e0a9c49d06e3b6"
      ],
      "author": {
        "name": "Prasad Sodagudi",
        "email": "psodagud@codeaurora.org",
        "time": "Tue Nov 25 19:50:48 2014 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:08 2016 -0500"
      },
      "message": "msm: rq_stats: Pass correct cpu id to update_average_load function\n\nPass correct cpu number to update_average_load function\nfrom cpufreq_transition_handler function. Also avoid div by zero\ncondition in update_average_load function.\n\nCRs-Fixed: 708310\nChange-Id: I4ec3e54b92c760ac5fa910542524fdfe919f55e9\nSigned-off-by: Prasad Sodagudi \u003cpsodagud@codeaurora.org\u003e\n"
    },
    {
      "commit": "9775141e935cee4719ed4b0224e0a9c49d06e3b6",
      "tree": "f94e09e1771b7565e68e926462d42c2b990d4382",
      "parents": [
        "b1a98e2fc61371a8462a7f437028fb67f6b842a5"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jun 11 15:07:08 2012 +0200"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:29:03 2016 -0500"
      },
      "message": "smpboot: Remove leftover declaration\n\nChange-Id: Ibeb1176232101cf889cd3212b19d2173b2a8ee58\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b1a98e2fc61371a8462a7f437028fb67f6b842a5",
      "tree": "2f7154589e951ba504753db27d344e3a5ac83322",
      "parents": [
        "f07da6943406f2fe2277d4d7ded70547f1ee7d02"
      ],
      "author": {
        "name": "Vignesh Radhakrishnan",
        "email": "vigneshr@codeaurora.org",
        "time": "Mon May 11 16:41:54 2015 +0530"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:58 2016 -0500"
      },
      "message": "smpboot: use kmemleak_not_leak for smpboot_thread_data\n\nKmemleak reports the following memory leak :\n\n    [\u003cffffffc0002faef8\u003e] create_object+0x140/0x274\n    [\u003cffffffc000cc3598\u003e] kmemleak_alloc+0x80/0xbc\n    [\u003cffffffc0002f707c\u003e] kmem_cache_alloc_trace+0x148/0x1d8\n    [\u003cffffffc00024504c\u003e] __smpboot_create_thread.part.2+0x2c/0xec\n    [\u003cffffffc0002452b4\u003e] smpboot_register_percpu_thread+0x90/0x118\n    [\u003cffffffc0016067c0\u003e] spawn_ksoftirqd+0x1c/0x30\n    [\u003cffffffc000200824\u003e] do_one_initcall+0xb0/0x14c\n    [\u003cffffffc001600820\u003e] kernel_init_freeable+0x84/0x1e0\n    [\u003cffffffc000cc273c\u003e] kernel_init+0x10/0xcc\n    [\u003cffffffc000203bbc\u003e] ret_from_fork+0xc/0x50\n\nThis memory allocated here points to smpboot_thread_data.\nData is used as an argument for this kthread.\n\nThis will be used when smpboot_thread_fn runs. Therefore,\nis not a leak.\n\nCall kmemleak_not_leak for smpboot_thread_data pointer\nto ensure that kmemleak doesn\u0027t report it as a memory\nleak.\n\nChange-Id: I02b0a7debea3907b606856e069d63d7991b67cd9\nSigned-off-by: Vignesh Radhakrishnan \u003cvigneshr@codeaurora.org\u003e\nSigned-off-by: Prasad Sodagudi \u003cpsodagud@codeaurora.org\u003e\n"
    },
    {
      "commit": "f07da6943406f2fe2277d4d7ded70547f1ee7d02",
      "tree": "41a5903b57957a12d0efd6129205db3facccd639",
      "parents": [
        "1dc72590e398501cd6e28f53b18b94a3eef0b1a6"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Jul 31 11:30:17 2014 +0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:53 2016 -0500"
      },
      "message": "smpboot: Add missing get_online_cpus() in smpboot_register_percpu_thread()\n\ncommit 4bee96860a65c3a62d332edac331b3cf936ba3ad upstream.\n\nThe following race exists in the smpboot percpu threads management:\n\nCPU0\t      \t   \t     CPU1\ncpu_up(2)\n  get_online_cpus();\n  smpboot_create_threads(2);\n\t\t\t     smpboot_register_percpu_thread();\n\t\t\t     for_each_online_cpu();\n\t\t\t       __smpboot_create_thread();\n  __cpu_up(2);\n\nThis results in a missing per cpu thread for the newly onlined cpu2 and\nin a NULL pointer dereference on a consecutive offline of that cpu.\n\nProctect smpboot_register_percpu_thread() with get_online_cpus() to\nprevent that.\n\n[ tglx: Massaged changelog and removed the change in\n        smpboot_unregister_percpu_thread() because that\u0027s an\n        optimization and therefor not stable material. ]\n\nChange-Id: If9ee9e290f13ce909b3deafec0e3e0a805942320\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nLink: http://lkml.kernel.org/r/1406777421-12830-1-git-send-email-laijs@cn.fujitsu.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1dc72590e398501cd6e28f53b18b94a3eef0b1a6",
      "tree": "ef9609674478312b3b1f956fa142fa1c2495b468",
      "parents": [
        "f21320b9195694f87dfb530eec511a2d4436d71a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Apr 15 12:45:41 2015 +0300"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:48 2016 -0500"
      },
      "message": "cpu: Handle smpboot_unpark_threads() uniformly\n\nCommit 8d33fe6 (cpu: Defer smpboot kthread unparking until CPU known\nto scheduler) put the online path\u0027s call to smpboot_unpark_threads()\ninto a CPU-hotplug notifier.  This commit places the offline-failure\npaths call into the same notifier for the sake of uniformity.\n\nNote that it is not currently possible to place the offline path\u0027s call to\nsmpboot_park_threads() into an existing notifier because the CPU_DYING\nnotifiers run in a restricted environment, and the CPU_UP_PREPARE\nnotifiers run too soon.\n\nChange-Id: I43546fdab4cb921f8210bad39da56e85e72a2122\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f21320b9195694f87dfb530eec511a2d4436d71a",
      "tree": "d17b9d73d0ae425f917cee536d74672c11c5cb97",
      "parents": [
        "e0cdcf8dc3c926e44406624aaf70924b58d90f3c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Apr 12 08:06:55 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:42 2016 -0500"
      },
      "message": "cpu: Defer smpboot kthread unparking until CPU known to scheduler\n\nCurrently, smpboot_unpark_threads() is invoked before the incoming CPU\nhas been added to the scheduler\u0027s runqueue structures.  This might\npotentially cause the unparked kthread to run on the wrong CPU, since the\ncorrect CPU isn\u0027t fully set up yet.\n\nThat causes a sporadic, hard to debug boot crash triggering on some\nsystems, reported by Borislav Petkov, and bisected down to:\n\n  2a442c9c6453 (\"x86: Use common outgoing-CPU-notification code\")\n\nThis patch places smpboot_unpark_threads() in a CPU hotplug\nnotifier with priority set so that these kthreads are unparked just after\nthe CPU has been added to the runqueues.\n\nChange-Id: I8921987de9c2a2f475cc63dc82662d6ebf6e8725\nReported-and-tested-by: Borislav Petkov \u003cbp@suse.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nGit-commit: 00df35f991914db6b8bde8cf09808e19a9cffc3d\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Matt Wagantall \u003cmattw@codeaurora.org\u003e\n"
    },
    {
      "commit": "e0cdcf8dc3c926e44406624aaf70924b58d90f3c",
      "tree": "32b74cb431970eea9812aa2bfda805973d1f1080",
      "parents": [
        "18e9860b522d2b45c3ff98887d99f30e70a715e6"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Jul 05 22:12:36 2016 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:37 2016 -0500"
      },
      "message": "UPSTREAM: ppp: defer netns reference release for ppp channel\n\n(cherry pick from commit 205e1e255c479f3fd77446415706463b282f94e4)\n\nMatt reported that we have a NULL pointer dereference\nin ppp_pernet() from ppp_connect_channel(),\ni.e. pch-\u003echan_net is NULL.\n\nThis is due to that a parallel ppp_unregister_channel()\ncould happen while we are in ppp_connect_channel(), during\nwhich pch-\u003echan_net set to NULL. Since we need a reference\nto net per channel, it makes sense to sync the refcnt\nwith the life time of the channel, therefore we should\nrelease this reference when we destroy it.\n\nFixes: 1f461dcdd296 (\"ppp: take reference on channels netns\")\nReported-by: Matt Bennett \u003cMatt.Bennett@alliedtelesis.co.nz\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: linux-ppp@vger.kernel.org\nCc: Guillaume Nault \u003cg.nault@alphalink.fr\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nReviewed-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n\nFixes: Change-Id: Iee0015eca5bd181954bb4896a3720f7549c5ed0b (\"UPSTREAM:\nppp: take reference on channels netns\")\nSigned-off-by: Amit Pundir \u003camit.pundir@linaro.org\u003e\nChange-Id: I24d0bb6f349ab3829f63cfe935ed97b6913a3508\n"
    },
    {
      "commit": "18e9860b522d2b45c3ff98887d99f30e70a715e6",
      "tree": "97eee1c8183d26fc02debec483119bd008e3a74a",
      "parents": [
        "963cd9ae820d4b66e2f2cd5867b933315ccb2d19"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Sun Nov 29 19:37:57 2015 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:31 2016 -0500"
      },
      "message": "UPSTREAM: ipv6: add complete rcu protection around np-\u003eopt\n\n[ Upstream commit 45f6fad84cc305103b28d73482b344d7f5b76f39 ]\n\nThis patch addresses multiple problems :\n\nUDP/RAW sendmsg() need to get a stable struct ipv6_txoptions\nwhile socket is not locked : Other threads can change np-\u003eopt\nconcurrently. Dmitry posted a syzkaller\n(http://github.com/google/syzkaller) program desmonstrating\nuse-after-free.\n\nStarting with TCP/DCCP lockless listeners, tcp_v6_syn_recv_sock()\nand dccp_v6_request_recv_sock() also need to use RCU protection\nto dereference np-\u003eopt once (before calling ipv6_dup_options())\n\nThis patch adds full RCU protection to np-\u003eopt\n\nReported-by: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Hannes Frederic Sowa \u003channes@stressinduktion.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nChange-Id: I81775b2269a8263c4e4760b94b9fdd0d5916b31e\nBug: 28746669\n"
    },
    {
      "commit": "963cd9ae820d4b66e2f2cd5867b933315ccb2d19",
      "tree": "5f3a39a8263d3017921cc6e8251ce2a6d0fe06d4",
      "parents": [
        "e191974eb1ee190f3e3530fb22751a821c397260"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Tue Mar 22 18:02:50 2016 +0100"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:25 2016 -0500"
      },
      "message": "UPSTREAM: netfilter: x_tables: make sure e-\u003enext_offset covers remaining blob size\n\n(cherry pick from commit 6e94e0cfb0887e4013b3b930fa6ab1fe6bb6ba91)\n\nOtherwise this function may read data beyond the ruleset blob.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: Pablo Neira Ayuso \u003cpablo@netfilter.org\u003e\nChange-Id: I9d19ecf3e00a2d52817b35b9042623927895c005\nBug: 29637687\n"
    },
    {
      "commit": "e191974eb1ee190f3e3530fb22751a821c397260",
      "tree": "d0d5ff5f2d8a65bee42c0870feb64711db4d52bb",
      "parents": [
        "bbaf3283c16067276bdf4f835ad599c02e49f5b0"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Tue Mar 22 18:02:49 2016 +0100"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:19 2016 -0500"
      },
      "message": "UPSTREAM: netfilter: x_tables: validate e-\u003etarget_offset early\n\n(cherry pick from commit bdf533de6968e9686df777dc178486f600c6e617)\n\nWe should check that e-\u003etarget_offset is sane before\nmark_source_chains gets called since it will fetch the target entry\nfor loop detection.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: Pablo Neira Ayuso \u003cpablo@netfilter.org\u003e\nChange-Id: Ic2dbc31c9525d698e94d4d8875886acf3524abbd\nBug: 29637687\n"
    },
    {
      "commit": "bbaf3283c16067276bdf4f835ad599c02e49f5b0",
      "tree": "4cda1306347e63913e0aa08c0dfc740fc1fd7967",
      "parents": [
        "513d87b573e3e97222706ff429efa1d13d25d0aa"
      ],
      "author": {
        "name": "D.S. Ljungmark",
        "email": "ljungmark@modio.se",
        "time": "Mon Jul 11 16:36:12 2016 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:14 2016 -0500"
      },
      "message": "BACKPORT: ipv6: Don\u0027t reduce hop limit for an interface\n\n(cherry pick from commit 6fd99094de2b83d1d4c8457f2c83483b2828e75a)\n\nA local route may have a lower hop_limit set than global routes do.\n\nRFC 3756, Section 4.2.7, \"Parameter Spoofing\"\n\n\u003e   1.  The attacker includes a Current Hop Limit of one or another\n\u003e   small\n\u003e       number which the attacker knows will cause legitimate packets to\n\u003e       be dropped before they reach their destination.\n\n\u003e   As an example, one possible approach to mitigate this threat is to\n\u003e   ignore very small hop limits.  The nodes could implement a\n\u003e   configurable minimum hop limit, and ignore attempts to set it below\n\u003e   said limit.\n\nSigned-off-by: D.S. Ljungmark \u003cljungmark@modio.se\u003e\nAcked-by: Hannes Frederic Sowa \u003channes@stressinduktion.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nChange-Id: I24ee5723e4bcb3fbdbf4308531ab58e9ff215e82\nBug: 29409847\n"
    },
    {
      "commit": "513d87b573e3e97222706ff429efa1d13d25d0aa",
      "tree": "1b187e4a8223e9a46fbde3e96e63d0cf4caa0053",
      "parents": [
        "8a56c4fff0de334cbade44e2dfe5ab4d0f71bac7"
      ],
      "author": {
        "name": "Andrey Vagin",
        "email": "avagin@openvz.org",
        "time": "Wed Feb 27 17:03:12 2013 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:08 2016 -0500"
      },
      "message": "BACKPORT: signal: allow to send any siginfo to itself\n\n(cherry picked from commit 66dd34ad31e5963d72a700ec3f2449291d322921)\n\nThe idea is simple.  We need to get the siginfo for each signal on\ncheckpointing dump, and then return it back on restore.\n\nThe first problem is that the kernel doesn\u0027t report complete siginfos to\nuserspace.  In a signal handler the kernel strips SI_CODE from siginfo.\nWhen a siginfo is received from signalfd, it has a different format with\nfixed sizes of fields.  The interface of signalfd was extended.  If a\nsignalfd is created with the flag SFD_RAW, it returns siginfo in a raw\nformat.\n\nrt_sigqueueinfo looks suitable for restoring signals, but it can\u0027t send\nsiginfo with a positive si_code, because these codes are reserved for\nthe kernel.  In the real world each person has right to do anything with\nhimself, so I think a process should able to send any siginfo to itself.\n\nThis patch:\n\nThe kernel prevents sending of siginfo with positive si_code, because\nthese codes are reserved for kernel.  I think we can allow a task to\nsend such a siginfo to itself.  This operation should not be dangerous.\n\nThis functionality is required for restoring signals in\ncheckpoint/restart.\n\nChange-Id: I40101d87eeb53ae05cfa0949439577a8f3f58f94\nSigned-off-by: Andrey Vagin \u003cavagin@openvz.org\u003e\nCc: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a56c4fff0de334cbade44e2dfe5ab4d0f71bac7",
      "tree": "5ede1693105d659303d2dbba2c595d79b9edd91c",
      "parents": [
        "d4117cd7bc8131671b26d343334e850f5b98ca78"
      ],
      "author": {
        "name": "liping.zhang",
        "email": "liping.zhang@spreadtrum.com",
        "time": "Thu Feb 18 12:16:53 2016 +0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:28:02 2016 -0500"
      },
      "message": "net: tcp: fix rtable leak in tcp_is_local[6]\n\nip_rt_put/ip6_rt_put call is missed after route lookup routine.\nSo if lookup returns ok, rtable leak will happen.\n\nChange-Id: Ica137043879b4305b70401cf7e8efda24405e3ff\nSigned-off-by: Liping Zhang \u003cliping.zhang@spreadtrum.com\u003e\n"
    },
    {
      "commit": "d4117cd7bc8131671b26d343334e850f5b98ca78",
      "tree": "7d18b9dc28ee974403d5988b7301ab1ca91decfb",
      "parents": [
        "a9084a0d907255dd7300bb785403e6383d32ed81"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Mon Nov 23 16:07:41 2015 -0500"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:58 2016 -0500"
      },
      "message": "UPSTREAM: selinux: fix bug in conditional rules handling\n\n(cherry picked from commit commit f3bef67992e8698897b584616535803887c4a73e)\n\ncommit fa1aa143ac4a (\"selinux: extended permissions for ioctls\")\nintroduced a bug into the handling of conditional rules, skipping the\nprocessing entirely when the caller does not provide an extended\npermissions (xperms) structure.  Access checks from userspace using\n/sys/fs/selinux/access do not include such a structure since that\ninterface does not presently expose extended permission information.\nAs a result, conditional rules were being ignored entirely on userspace\naccess requests, producing denials when access was allowed by\nconditional rules in the policy.  Fix the bug by only skipping\ncomputation of extended permissions in this situation, not the entire\nconditional rules processing.\n\nChange-Id: I6f81765f6cdb9ce72f93c290d7987d93688651a0\nReported-by: Laurent Bigonville \u003cbigon@debian.org\u003e\nSigned-off-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n[PM: fixed long lines in patch description]\nCc: stable@vger.kernel.org # 4.3\nSigned-off-by: Paul Moore \u003cpmoore@redhat.com\u003e\n"
    },
    {
      "commit": "a9084a0d907255dd7300bb785403e6383d32ed81",
      "tree": "199b34dfb89e9e577f4a2fbf8d64d34c01ce59c8",
      "parents": [
        "9c60b9ea998b7e70551371b554a3cc1c92af24b6"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Thu Jan 14 14:33:52 2016 +0100"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:49 2016 -0500"
      },
      "message": "UPSTREAM: memcg: Only free spare array when readers are done\n\nA spare array holding mem cgroup threshold events is kept around\nto make sure we can always safely deregister an event and have an\narray to store the new set of events in.\n\nIn the scenario where we\u0027re going from 1 to 0 registered events, the\npointer to the primary array containing 1 event is copied to the spare\nslot, and then the spare slot is freed because no events are left.\nHowever, it is freed before calling synchronize_rcu(), which means\nreaders may still be accessing threshold-\u003eprimary after it is freed.\n\nFixed by only freeing after synchronize_rcu().\n\nChange-Id: Id324c5c15cc6aaa684c6e84c1049f723c6c6d984\nSigned-off-by: Martijn Coenen \u003cmaco@google.com\u003e\n"
    },
    {
      "commit": "9c60b9ea998b7e70551371b554a3cc1c92af24b6",
      "tree": "3cdd0677674405ce59796bd3cb3005f67fd09fe5",
      "parents": [
        "accef775d1bdf690ffff927016d26da9859d543c"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Tue Nov 17 08:35:54 2015 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:42 2016 -0500"
      },
      "message": "ANDROID: exec_domains: Disable request_module() call for personalities\n\n(cherry pick from commit a9ac1262ce80c287562e604f3bb24f232fcb686e)\n\nWith Android M, Android environments use a separate execution\ndomain for 32bit processes.\nSee:\nhttps://android-review.googlesource.com/#/c/122131/\n\nThis results in systems that use kernel modules to see selinux\naudit noise like:\n  type\u003d1400 audit(28.989:15): avc: denied { module_request } for\n  pid\u003d1622 comm\u003d\"app_process32\" kmod\u003d\"personality-8\"\n  scontext\u003du:r:zygote:s0 tcontext\u003du:r:kernel:s0 tclass\u003dsystem\n\nWhile using kernel modules is unadvised, some systems do require\nthem.\n\nThus to avoid developers adding sepolicy exceptions to allow for\nrequest_module calls, this patch disables the logic which tries\nto call request_module for the 32bit personality (ie:\npersonality-8), which doesn\u0027t actually exist.\n\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nChange-Id: I9cb90bd1291f0a858befa7d347c85464346702db\n"
    },
    {
      "commit": "accef775d1bdf690ffff927016d26da9859d543c",
      "tree": "a2b09c7f8d8ea23243214fb3874cd04af23c5118",
      "parents": [
        "ecf1088a677b3526db4903a96b796939c9ca8d4f"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Thu Oct 22 09:30:40 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:35 2016 -0500"
      },
      "message": "selinux: Android kernel compatibility with M userspace\n\nNOT intended for new Android devices - this commit is unnecessary\nfor a target device that does not have a previous M variant.\n\nDO NOT upstream. Android only.\n\nMotivation:\n\nThis commit mitigates a mismatch between selinux kernel and\nselinux userspace. The selinux ioctl white-listing binary policy\nformat that was accepted into Android M differs slightly from what\nwas later accepted into the upstream kernel. This leaves Android\nmaster branch kernels incompatible with Android M releases. This\npatch restores backwards compatibility. This is important because:\n\n1. kernels may be updated on a different cycle than the rest of the\n   OS e.g. security patching.\n2. Android M bringup may still be ongoing for some devices. The\n   same kernel should work for both M and master.\n\nBackwards compatibility is achieved by checking for an Android M\npolicy characteristic during initial policy read and converting to\nupstream policy format. The inverse conversion is done for policy\nwrite as required for CTS testing.\n\nBug: 22846070\nChange-Id: I2f1ee2eee402f37cf3c9df9f9e03c1b9ddec1929\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\n"
    },
    {
      "commit": "ecf1088a677b3526db4903a96b796939c9ca8d4f",
      "tree": "952282f6ad9e273075337638d19aaef02c0630d0",
      "parents": [
        "29ea3244f7ee375a4af4d776caf721663dd4293d"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Fri Jul 10 17:19:56 2015 -0400"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:27 2016 -0500"
      },
      "message": "selinux: extended permissions for ioctls\n\n(cherry picked from commit fa1aa143ac4a682c7f5fd52a3cf05f5a6fe44a0a)\n\nAdd extended permissions logic to selinux. Extended permissions\nprovides additional permissions in 256 bit increments. Extend the\ngeneric ioctl permission check to use the extended permissions for\nper-command filtering. Source/target/class sets including the ioctl\npermission may additionally include a set of commands. Example:\n\nallowxperm \u003csource\u003e \u003ctarget\u003e:\u003cclass\u003e ioctl unpriv_app_socket_cmds\nauditallowxperm \u003csource\u003e \u003ctarget\u003e:\u003cclass\u003e ioctl priv_gpu_cmds\n\nWhere unpriv_app_socket_cmds and priv_gpu_cmds are macros\nrepresenting commonly granted sets of ioctl commands.\n\nWhen ioctl commands are omitted only the permissions are checked.\nThis feature is intended to provide finer granularity for the ioctl\npermission that may be too imprecise. For example, the same driver\nmay use ioctls to provide important and benign functionality such as\ndriver version or socket type as well as dangerous capabilities such\nas debugging features, read/write/execute to physical memory or\naccess to sensitive data. Per-command filtering provides a mechanism\nto reduce the attack surface of the kernel, and limit applications\nto the subset of commands required.\n\nThe format of the policy binary has been modified to include ioctl\ncommands, and the policy version number has been incremented to\nPOLICYDB_VERSION_XPERMS_IOCTL\u003d30 to account for the format\nchange.\n\nThe extended permissions logic is deliberately generic to allow\ncomponents to be reused e.g. netlink filters\n\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\nAcked-by: Nick Kralevich \u003cnnk@google.com\u003e\nSigned-off-by: Paul Moore \u003cpmoore@redhat.com\u003e\nBug: 22846070\nChange-Id: I299dc776d2f98d593ecc051707110c92a085350f\n"
    },
    {
      "commit": "29ea3244f7ee375a4af4d776caf721663dd4293d",
      "tree": "73bcd568996ad1950f1870c508ac35beef242f3f",
      "parents": [
        "b0cde1e4b20d5be5b79eba284358bdff1283612b"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Fri Jul 10 17:19:55 2015 -0400"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:22 2016 -0500"
      },
      "message": "security: add ioctl specific auditing to lsm_audit\n\n(cherry pick from commit 671a2781ff01abf4fdc8904881fc3abd3a8279af)\n\nAdd information about ioctl calls to the LSM audit data. Log the\nfile path and command number.\n\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\nAcked-by: Nick Kralevich \u003cnnk@google.com\u003e\n[PM: subject line tweak]\nSigned-off-by: Paul Moore \u003cpmoore@redhat.com\u003e\nBug: 22846070\nChange-Id: I4a7678294e0a3075f57bd77c76fd17e6f0d33e75\n"
    },
    {
      "commit": "b0cde1e4b20d5be5b79eba284358bdff1283612b",
      "tree": "1f6126a84a86289bcc33905b9ea8574d9559fdbd",
      "parents": [
        "94bdaadcca0aa203549385016b26cb5c6c31fe56"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Thu Feb 26 13:54:17 2015 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:16 2016 -0500"
      },
      "message": "selinux: remove unnecessary pointer reassignment\n\n(cherry pick from commit 83d4a806ae46397f606de7376b831524bd3a21e5)\n\nCommit f01e1af445fa (\"selinux: don\u0027t pass in NULL avd to avc_has_perm_noaudit\")\nmade this pointer reassignment unnecessary. Avd should continue to reference\nthe stack-based copy.\n\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n[PM: tweaked subject line]\nSigned-off-by: Paul Moore \u003cpmoore@redhat.com\u003e\nBug: 22846070\nChange-Id: Ie33688d163870705272607309a27fb7c8f870748\n"
    },
    {
      "commit": "94bdaadcca0aa203549385016b26cb5c6c31fe56",
      "tree": "8f3ecd3bed66653cec28ea4070da85e46affbe54",
      "parents": [
        "8c4c81bd0040ba7054fc6c8b6ff17f4856a28db9"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Wed Jul 29 18:37:24 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:07 2016 -0500"
      },
      "message": "Revert \"security: lsm_audit: add ioctl specific auditing\"\n\nThis reverts commit 643ce43c226cdfa73bcac2fa91f1f8a3dfd171a2.\n\nBug: 22846070\nChange-Id: I5dde1878e5baac43b4968141c0dc60b70e042183\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\n"
    },
    {
      "commit": "8c4c81bd0040ba7054fc6c8b6ff17f4856a28db9",
      "tree": "ee77a4514ab8b305c312f3fb70c910e0e6c41a6f",
      "parents": [
        "f636525feee1d47035b972ad87d397f727b2ed5b"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Wed Jul 29 18:36:41 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:27:02 2016 -0500"
      },
      "message": "Revert \"SELinux: per-command whitelisting of ioctls\"\n\nThis reverts commit bc84b4adb1469e3d05ad76c304a4c545feaf1f88.\n\nBug: 22846070\nChange-Id: Ib4cb130b2225ea2e22556ff852313e0de7dddcab\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\n"
    },
    {
      "commit": "f636525feee1d47035b972ad87d397f727b2ed5b",
      "tree": "fab2f0eccd40abd34cfe7fadc7028dac6f399573",
      "parents": [
        "97df93a063d060bcf2c8fa4baaf0094cb8e256a0"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Wed Jul 29 18:35:33 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:56 2016 -0500"
      },
      "message": "Revert \"SELinux: use deletion-safe iterator to free list\"\n\nThis reverts commit c9a8571249fa3a55a0490bd571eaf0cea097fab0.\n\nBug: 22846070\nChange-Id: I85e2b6322f98bd584ed523b0bd0291375dbc35dc\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\n"
    },
    {
      "commit": "97df93a063d060bcf2c8fa4baaf0094cb8e256a0",
      "tree": "0de22ddb1e60f17afd79ab2b47145fa7b8ff5417",
      "parents": [
        "3c22c9a2b6b280f82fe03aa15113982158238b0a"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Wed Jul 29 18:33:33 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:51 2016 -0500"
      },
      "message": "Revert \"SELinux: ss: Fix policy write for ioctl operations\"\n\nThis reverts commit c06168226f5eaaaad93af5b2811f213b01382363.\n\nBug: 22846070\nChange-Id: I665c1f2350e10ce890e7c4be1a06e666929d5d7a\nSigned-off-by: Jeff Vander Stoep \u003cjeffv@google.com\u003e\n"
    },
    {
      "commit": "3c22c9a2b6b280f82fe03aa15113982158238b0a",
      "tree": "8c4fec4bedbb2930452aa36af84283fec1e03b29",
      "parents": [
        "1c2e92bf560db190afbdfddf7a88807e0bc64a22"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed Jan 20 16:25:01 2016 -0800"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:46 2016 -0500"
      },
      "message": "net: diag: support v4mapped sockets in inet_diag_find_one_icsk()\n\nLorenzo reported that we could not properly find v4mapped sockets\nin inet_diag_find_one_icsk(). This patch fixes the issue.\n\n[Backport of net 7c1306723ee916ea9f1fa7d9e4c7a6d029ca7aaf]\n[lorenzo@google.com: changed init_net to net]\n\nChange-Id: I632b21e9e590cd0ebd38a09d8405140dcf942591\nReported-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1c2e92bf560db190afbdfddf7a88807e0bc64a22",
      "tree": "0dda726afdb6baed43e838b62724f72fcc5265f0",
      "parents": [
        "1f1f52073160a2b1856b3904df80d84dc829ecdf"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Sun Dec 20 02:39:43 2015 +0900"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:41 2016 -0500"
      },
      "message": "net: tcp: deal with listen sockets properly in tcp_abort.\n\nWhen closing a listen socket, tcp_abort currently calls\ntcp_done without clearing the request queue. If the socket has a\nchild socket that is established but not yet accepted, the child\nsocket is then left without a parent, causing a leak.\n\nFix this by setting the socket state to TCP_CLOSE and calling\ninet_csk_listen_stop with the socket lock held, like tcp_close\ndoes.\n\nTested using net_test. With this patch, calling SOCK_DESTROY on a\nlisten socket that has an established but not yet accepted child\nsocket results in the parent and the child being closed, such\nthat they no longer appear in sock_diag dumps.\n\n[Backport of net-next 2010b93e9317cc12acd20c4aed385af7f9d1681e]\n\nChange-Id: Iaccc56465f159144566b579dbebbbb6e1e943bc7\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1f1f52073160a2b1856b3904df80d84dc829ecdf",
      "tree": "f6f78c669b2914d5ee325b72613c17eed16bd166",
      "parents": [
        "5cfac143dbcc96119300c5b1793f41d121eda857"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Dec 16 12:30:05 2015 +0900"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:33 2016 -0500"
      },
      "message": "net: diag: Support destroying TCP sockets.\n\nThis implements SOCK_DESTROY for TCP sockets. It causes all\nblocking calls on the socket to fail fast with ECONNABORTED and\ncauses a protocol close of the socket. It informs the other end\nof the connection by sending a RST, i.e., initiating a TCP ABORT\nas per RFC 793. ECONNABORTED was chosen for consistency with\nFreeBSD.\n\n[Backport of net-next c1e64e298b8cad309091b95d8436a0255c84f54a]\n\nChange-Id: Ic5410d3a2f39db28a322c30f4b3b2bffd35ec2de\nSigned-off-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5cfac143dbcc96119300c5b1793f41d121eda857",
      "tree": "c0e573f13f41eb2cfa98e6fddc77fcf5a4022556",
      "parents": [
        "33a38ccbbdf78696bdcd5be644fddf0fdd5bd81d"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Dec 16 12:30:04 2015 +0900"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:27 2016 -0500"
      },
      "message": "net: diag: Support SOCK_DESTROY for inet sockets.\n\nThis passes the SOCK_DESTROY operation to the underlying protocol\ndiag handler, or returns -EOPNOTSUPP if that handler does not\ndefine a destroy operation.\n\nMost of this patch is just renaming functions. This is not\nstrictly necessary, but it would be fairly counterintuitive to\nhave the code to destroy inet sockets be in a function whose name\nstarts with inet_diag_get.\n\n[Backport of net-next 6eb5d2e08f071c05ecbe135369c9ad418826cab2]\n\nChange-Id: I70a700ec66e0ea8526a17137ba6cb5a3f2dce45f\nSigned-off-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33a38ccbbdf78696bdcd5be644fddf0fdd5bd81d",
      "tree": "0fe522ed6c7a7776bfa69113f3d3fe28aafd4f4b",
      "parents": [
        "707ab355d2e29f90e2b2f5ec1f593127291dbee7"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Dec 16 12:30:03 2015 +0900"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:21 2016 -0500"
      },
      "message": "net: diag: Add the ability to destroy a socket.\n\nThis patch adds a SOCK_DESTROY operation, a destroy function\npointer to sock_diag_handler, and a diag_destroy function\npointer.  It does not include any implementation code.\n\n[Backport of net-next 64be0aed59ad519d6f2160868734f7e278290ac1]\n\nChange-Id: I1d998e1c5f836b2f5638c0f79244c372c8d2d9d9\nSigned-off-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "707ab355d2e29f90e2b2f5ec1f593127291dbee7",
      "tree": "6166e95dd2e507bc3b0128c6d19354a2b56a642a",
      "parents": [
        "bebcb1a93337ff2eebc6501af0ebc866bd938bbf"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Dec 16 12:30:02 2015 +0900"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Wed Aug 10 16:26:15 2016 -0500"
      },
      "message": "net: diag: split inet_diag_dump_one_icsk into two\n\nCurrently, inet_diag_dump_one_icsk finds a socket and then dumps\nits information to userspace. Split it into a part that finds the\nsocket and a part that dumps the information.\n\n[Backport of net-next b613f56ec9baf30edf5d9d607b822532a273dad7]\n\nChange-Id: I6b570c35a4928ea072de3e31f9f3ca89668a5244\nSigned-off-by: Lorenzo Colitti \u003clorenzo@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bebcb1a93337ff2eebc6501af0ebc866bd938bbf",
      "tree": "6ede9bc501ffb369966b81c70ebf82ddae525e10",
      "parents": [
        "fa615e969a46429e1d6009c6d499e7de9994c6d0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Wed Jun 10 08:01:20 2015 -0600"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Fri Aug 05 22:24:03 2016 -0500"
      },
      "message": "cfq-iosched: fix the setting of IOPS mode on SSDs\n\nA previous commit wanted to make CFQ default to IOPS mode on\nnon-rotational storage, however it did so when the queue was\ninitialized and the non-rotational flag is only set later on\nin the probe.\n\nAdd an elevator hook that gets called off the add_disk() path,\nat that point we know that feature probing has finished, and\nwe can reliably check for the various flags that drivers can\nset.\n\nFixes: 41c0126b (\"block: Make CFQ default to IOPS mode on SSDs\")\nTested-by: Romain Francoise \u003cromain@orebokech.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "fa615e969a46429e1d6009c6d499e7de9994c6d0",
      "tree": "051eee1b0e8147893c081b8455aa400161e70f87",
      "parents": [
        "956baceefb8ae3bf85bfcee19c59d640106941ff"
      ],
      "author": {
        "name": "Tahsin Erdogan",
        "email": "tahsin@google.com",
        "time": "Tue May 19 13:55:21 2015 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Fri Aug 05 22:23:57 2016 -0500"
      },
      "message": "block: Make CFQ default to IOPS mode on SSDs\n\nCFQ idling causes reduced IOPS throughput on non-rotational disks.\nSince disk head seeking is not applicable to SSDs, it doesn\u0027t really\nhelp performance by anticipating future near-by IO requests.\n\nBy turning off idling (and switching to IOPS mode), we allow other\nprocesses to dispatch IO requests down to the driver and so increase IO\nthroughput.\n\nFollowing FIO benchmark results were taken on a cloud SSD offering with\nidling on and off:\n\nIdling     iops    avg-lat(ms)    stddev            bw\n------------------------------------------------------\n    On     7054    90.107         38.697     28217KB/s\n   Off    29255    21.836         11.730    117022KB/s\n\nfio --name\u003dtemp --size\u003d100G --time_based --ioengine\u003dlibaio \\\n    --randrepeat\u003d0 --direct\u003d1 --invalidate\u003d1 --verify\u003d0 \\\n    --verify_fatal\u003d0 --rw\u003drandread --blocksize\u003d4k --group_reporting\u003d1 \\\n    --filename\u003d/dev/sdb --runtime\u003d10 --iodepth\u003d64 --numjobs\u003d10\n\nAnd the following is from a local SSD run:\n\nIdling     iops    avg-lat(ms)    stddev            bw\n------------------------------------------------------\n    On    19320    33.043         14.068     77281KB/s\n   Off    21626    29.465         12.662     86507KB/s\n\nfio --name\u003dtemp --size\u003d5G --time_based --ioengine\u003dlibaio \\\n    --randrepeat\u003d0 --direct\u003d1 --invalidate\u003d1 --verify\u003d0 \\\n    --verify_fatal\u003d0 --rw\u003drandread --blocksize\u003d4k --group_reporting\u003d1 \\\n    --filename\u003d/fio_data --runtime\u003d10 --iodepth\u003d64 --numjobs\u003d10\n\nReviewed-by: Nauman Rafique \u003cnauman@google.com\u003e\nSigned-off-by: Tahsin Erdogan \u003ctahsin@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "956baceefb8ae3bf85bfcee19c59d640106941ff",
      "tree": "fc40401ecb5ed3b93be95489d9cb263cef57d950",
      "parents": [
        "721cc5b4a637c20241562487ff49ee308a3948e0"
      ],
      "author": {
        "name": "franciscofranco",
        "email": "franciscofranco.1990@gmail.com",
        "time": "Mon Dec 09 02:35:51 2013 +0000"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Fri Aug 05 22:23:50 2016 -0500"
      },
      "message": "block: row: add magic values.\n\nChange-Id: Ib6e19fad75b8c35c83a6d75c03f741791b81f267\nSigned-off-by: franciscofranco \u003cfranciscofranco.1990@gmail.com\u003e\nSigned-off-by: engstk \u003ceng.stk@sapo.pt\u003e\n"
    },
    {
      "commit": "721cc5b4a637c20241562487ff49ee308a3948e0",
      "tree": "2f65b8c85830d778468818bf69dfc37b5d8adf72",
      "parents": [
        "19d00ddd4343c5d83874f81c61d9af1faae913c5"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Thu Jul 28 15:38:41 2016 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Fri Aug 05 22:23:45 2016 -0500"
      },
      "message": "f2fs: sync with upstream\n\n https://kernel.googlesource.com/pub/scm/linux/kernel/git/jaegeuk/f2fs-stable/+/linux-3.4.y\n\n last commit: fscrypto: no support for v3.4\n\nChange-Id: Id300fb1564cc2d91a9a7982b823b42cbe431055e\n"
    }
  ],
  "next": "19d00ddd4343c5d83874f81c61d9af1faae913c5"
}
