)]}'
{
  "commit": "e40468a54882ef7411fb178dbf2e465ec2349af7",
  "tree": "5c7859bb5b325752694b3fd0bccbce7b4997dab2",
  "parents": [
    "99d5f3aac674fe081ffddd2dbb8946ccbc14c410"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Fri May 25 22:08:59 2012 +0000"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Wed Jun 06 13:49:02 2012 +0200"
  },
  "message": "timers: Improve get_next_timer_interrupt()\n\nGilad reported at\n\n http://lkml.kernel.org/r/1336056962-10465-2-git-send-email-gilad@benyossef.com\n\n\"Current timer code fails to correctly return a value meaning that\n there is no future timer event, with the result that the timer keeps\n getting re-armed in HZ one shot mode even when we could turn it off,\n generating unneeded interrupts.\n\n What is happening is that when __next_timer_interrupt() wishes\n to return a value that signifies \"there is no future timer\n event\", it returns (base-\u003etimer_jiffies + NEXT_TIMER_MAX_DELTA).\n\n However, the code in tick_nohz_stop_sched_tick(), which called\n __next_timer_interrupt() via get_next_timer_interrupt(),\n compares the return value to (last_jiffies + NEXT_TIMER_MAX_DELTA)\n to see if the timer needs to be re-armed.\n\n base-\u003etimer_jiffies !\u003d last_jiffies and so tick_nohz_stop_sched_tick()\n interperts the return value as indication that there is a distant\n future event 12 days from now and programs the timer to fire next\n after KTIME_MAX nsecs instead of avoiding to arm it. This ends up\n causing a needless interrupt once every KTIME_MAX nsecs.\"\n\nFix this by using the new active timer accounting. This avoids scans\nwhen no active timer is enqueued completely, so we don\u0027t have to rely\non base-\u003etimer_next and base-\u003etimer_jiffies anymore.\n\nReported-by: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20120525214819.317535385@linutronix.de\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7fada698bd1a54d015ae7a14fc4badb54cf7d624",
      "old_mode": 33188,
      "old_path": "kernel/timer.c",
      "new_id": "a61c09374ebab1fdba0bdd370b56cf70018de62d",
      "new_mode": 33188,
      "new_path": "kernel/timer.c"
    }
  ]
}
