{"push_id":897366021,"size":1,"distinct_size":1,"ref":"refs/heads/cm-12.1-caf","head":"7e2154ff5b743a21d86335c7a06f6a98304c7e98","before":"def0848e9c05397f2f715cabfb3b8f9ddbf1d2c4","commits":[{"sha":"7e2154ff5b743a21d86335c7a06f6a98304c7e98","author":{"email":"95dea50491c620faede961f7e6190a98a6df4edf@linaro.org","name":"Paul E. McKenney"},"message":"rcu: Precompute RCU_FAST_NO_HZ timer offsets\n\nWhen a CPU is entering dyntick-idle mode, tick_nohz_stop_sched_tick()\ncalls rcu_needs_cpu() see if RCU needs that CPU, and, if not, computes the\nnext wakeup time based on the timer wheels.  Only later, when actually\nentering the idle loop, rcu_prepare_for_idle() will be invoked.  In some\ncases, rcu_prepare_for_idle() will post timers to wake the CPU back up.\nBut all for naught: The next wakeup time for the CPU has already been\ncomputed, and posting a timer afterwards does not force that wakeup\ntime to be recomputed.  This means that rcu_prepare_for_idle()'s have\nno effect.\n\nThis is not a problem on a busy system because something else will wake\nup the CPU soon enough.  However, on lightly loaded systems, the CPU\nmight stay asleep for a considerable length of time.  If that CPU has\na callback that the rest of the system is waiting on, the system might\nrun very slowly or (in theory) even hang.\n\nThis commit avoids this problem by having rcu_needs_cpu() give\ntick_nohz_stop_sched_tick() an estimate of when RCU will need the CPU\nto wake back up, which tick_nohz_stop_sched_tick() takes into account\nwhen programming the CPU's wakeup time.  An alternative approach is\nfor rcu_prepare_for_idle() to use hrtimers instead of normal timers,\nbut timers are much more efficient than are hrtimers for frequently\nand repeatedly posting and cancelling a given timer, which is exactly\nwhat RCU_FAST_NO_HZ does.\n\nCRs-fixed: 657837\nChange-Id: I45c9163678240ca0b6fcac06b025d4cdb140907c\nReported-by: Pascal Chapperon <pascal.chapperon@wanadoo.fr>\nReported-by: Heiko Carstens <heiko.carstens@de.ibm.com>\nSigned-off-by: Paul E. McKenney <paul.mckenney@linaro.org>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nTested-by: Heiko Carstens <heiko.carstens@de.ibm.com>\nTested-by: Pascal Chapperon <pascal.chapperon@wanadoo.fr>\nGit-commit: aa9b16306e3243229580ff889cc59fd66bf77973\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Ramesh Gupta Guntha <rggupt@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/BambooIV/android_kernel_zte_nx503a/commits/7e2154ff5b743a21d86335c7a06f6a98304c7e98"}]}