)]}'
{
  "log": [
    {
      "commit": "b62ad9ab181a67207a4c8c373461b587c4861a68",
      "tree": "ace1572964d81f5f9bbc10b7960c1f742832d744",
      "parents": [
        "af390084359a5de20046c901529b2b6a50b941cb",
        "b29230769e3482bbd62a07d6d9485371ee66a18f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 06 13:18:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 06 13:18:29 2010 -0700"
      },
      "message": "Merge branch \u0027timers-timekeeping-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-timekeeping-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  um: Fix read_persistent_clock fallout\n  kgdb: Do not access xtime directly\n  powerpc: Clean up obsolete code relating to decrementer and timebase\n  powerpc: Rework VDSO gettimeofday to prevent time going backwards\n  clocksource: Add __clocksource_updatefreq_hz/khz methods\n  x86: Convert common clocksources to use clocksource_register_hz/khz\n  timekeeping: Make xtime and wall_to_monotonic static\n  hrtimer: Cleanup direct access to wall_to_monotonic\n  um: Convert to use read_persistent_clock\n  timkeeping: Fix update_vsyscall to provide wall_to_monotonic offset\n  powerpc: Cleanup xtime usage\n  powerpc: Simplify update_vsyscall\n  time: Kill off CONFIG_GENERIC_TIME\n  time: Implement timespec_add\n  x86: Fix vtime/file timestamp inconsistencies\n\nTrivial conflicts in Documentation/feature-removal-schedule.txt\n\nMuch less trivial conflicts in arch/powerpc/kernel/time.c resolved as\nper Thomas\u0027 earlier merge commit 47916be4e28c (\"Merge branch\n\u0027powerpc.cherry-picks\u0027 into timers/clocksource\")\n"
    },
    {
      "commit": "8ab4351a4c888016620f43bde605b3d0964af339",
      "tree": "9d92ee7fbf9391bfcfdc1e49fecc31b9fa4e03c0",
      "parents": [
        "9f31f5774961a735687fee17953ab505b3df3abf"
      ],
      "author": {
        "name": "John Stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 13 17:56:25 2010 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 27 12:40:55 2010 +0200"
      },
      "message": "hrtimer: Cleanup direct access to wall_to_monotonic\n\nProvides an accessor function to replace hrtimer.c\u0027s\ndirect access of wall_to_monotonic.\n\nThis will allow wall_to_monotonic to be made static as\nplanned in Documentation/feature-removal-schedule.txt\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c1279068988-21864-9-git-send-email-johnstul@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "83cd4fe27ad8446619b2e030b171b858501de87d",
      "tree": "81c7d26f4f00139ae355017239371d91cc4b2aef",
      "parents": [
        "fdf3e95d3916f18bf8703fb065499fdbc4dfe34c"
      ],
      "author": {
        "name": "Venkatesh Pallipadi",
        "email": "venki@google.com",
        "time": "Fri May 21 17:09:41 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 09 10:34:52 2010 +0200"
      },
      "message": "sched: Change nohz idle load balancing logic to push model\n\nIn the new push model, all idle CPUs indeed go into nohz mode. There is\nstill the concept of idle load balancer (performing the load balancing\non behalf of all the idle cpu\u0027s in the system). Busy CPU kicks the nohz\nbalancer when any of the nohz CPUs need idle load balancing.\nThe kickee CPU does the idle load balancing on behalf of all idle CPUs\ninstead of the normal idle balance.\n\nThis addresses the below two problems with the current nohz ilb logic:\n* the idle load balancer continued to have periodic ticks during idle and\n  wokeup frequently, even though it did not have any rebalancing to do on\n  behalf of any of the idle CPUs.\n* On x86 and CPUs that have APIC timer stoppage on idle CPUs, this\n  periodic wakeup can result in a periodic additional interrupt on a CPU\n  doing the timer broadcast.\n\nAlso currently we are migrating the unpinned timers from an idle to the cpu\ndoing idle load balancing (when all the cpus in the system are idle,\nthere is no idle load balancing cpu and timers get added to the same idle cpu\nwhere the request was made. So the existing optimization works only on semi idle\nsystem).\n\nAnd In semi idle system, we no longer have periodic ticks on the idle load\nbalancer CPU. Using that cpu will add more delays to the timers than intended\n(as that cpu\u0027s timer base may not be uptodate wrt jiffies etc). This was\ncausing mysterious slowdowns during boot etc.\n\nFor now, in the semi idle case, use the nearest busy cpu for migrating timers\nfrom an idle cpu.  This is good for power-savings anyway.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003c1274486981.2840.46.camel@sbs-t61.sc.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "174bd1994ec67a6e6191c4ed8e5dac17fa221b84",
      "tree": "1f1d80d40787dddff4a0b8bc63e70ad2c2981c5c",
      "parents": [
        "2abfb9e1d470f7082e5e20e4b11a271a0124211b"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "stf_xl@wp.pl",
        "time": "Tue May 25 23:49:12 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 26 16:15:37 2010 +0200"
      },
      "message": "hrtimer: Avoid double seqlock\n\nhrtimer_get_softirq_time() has it\u0027s own xtime lock protection, so it\u0027s\nsafe to use plain __current_kernel_time() and avoid the double seqlock\nloop.\n\nSigned-off-by: Stanislaw Gruszka \u003cstf_xl@wp.pl\u003e\nLKML-Reference: \u003c20100525214912.GA1934@r2bh72.net.upc.cz\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "351b3f7a21e413a9b14d0393171497d2373bd702",
      "tree": "8a733b28c37504a0c6d22e64af1e9f7cfc72a40f",
      "parents": [
        "3bbb9ec946428b96657126768f65487a48dd090c"
      ],
      "author": {
        "name": "Carsten Emde",
        "email": "C.Emde@osadl.org",
        "time": "Fri Apr 02 22:40:19 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 06 21:50:03 2010 +0200"
      },
      "message": "hrtimers: Provide schedule_hrtimeout for CLOCK_REALTIME\n\nThe current version of schedule_hrtimeout() always uses the\nmonotonic clock. Some system calls such as mq_timedsend()\nand mq_timedreceive(), however, require the use of the wall\nclock due to the definition of the system call.\n\nThis patch provides the infrastructure to use schedule_hrtimeout() \nwith a CLOCK_REALTIME timer.\n\nSigned-off-by: Carsten Emde \u003cC.Emde@osadl.org\u003e\nTested-by: Pradyumna Sampath \u003cpradysam@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Arjan van de Veen \u003carjan@infradead.org\u003e\nLKML-Reference: \u003c20100402204331.167439615@osadl.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "ecb49d1a639acbacfc3771cae5ec07bed5df3847",
      "tree": "19c8fa91d1f9b1c965cd60653e16d1eb60cd9d3a",
      "parents": [
        "239007b8440abff689632f50cdf0f2b9e895b534"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 16:36:54 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:34 2009 +0100"
      },
      "message": "hrtimers: Convert to raw_spinlocks\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5f201907dfe4ad42c44006ddfcec00ed12e59497",
      "tree": "b796471d44eb588f8d95affaeb0aa6cf6478b460",
      "parents": [
        "41d2e494937715d3150e5c75d01f0e75ae899337"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Dec 10 10:56:29 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Dec 10 13:08:11 2009 +0100"
      },
      "message": "hrtimer: move timer stats helper functions to hrtimer.c\n\nThere is no reason to make timer_stats_hrtimer_set_start_info and\nfriends visible to the rest of the kernel. So move all of them to\nhrtimer.c.  Also make timer_stats_hrtimer_set_start_info a static\ninline function so it gets inlined and we avoid another function call.\nBased on a patch by Thomas Gleixner.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nLKML-Reference: \u003c20091210095629.GC4144@osiris.boeblingen.de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "41d2e494937715d3150e5c75d01f0e75ae899337",
      "tree": "9bc7270aa7b06ed065671a96085fbdf235977d91",
      "parents": [
        "3067e02f8f3ae2f3f02ba76400d03b8bcb4942b0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 17:05:44 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Dec 10 13:08:11 2009 +0100"
      },
      "message": "hrtimer: Tune hrtimer_interrupt hang logic\n\nThe hrtimer_interrupt hang logic adjusts min_delta_ns based on the\nexecution time of the hrtimer callbacks.\n\nThis is error-prone for virtual machines, where a guest vcpu can be\nscheduled out during the execution of the callbacks (and the callbacks\nthemselves can do operations that translate to blocking operations in\nthe hypervisor), which in can lead to large min_delta_ns rendering the\nsystem unusable.\n\nReplace the current heuristics with something more reliable. Allow the\ninterrupt code to try 3 times to catch up with the lost time. If that\nfails use the total time spent in the interrupt handler to defer the\nnext timer interrupt so the system can catch up with other things\nwhich got delayed. Limit that deferment to 100ms.\n\nThe retry events and the maximum time spent in the interrupt handler\nare recorded and exposed via /proc/timer_list\n\nInspired by a patch from Marcelo.\n\nReported-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: kvm@vger.kernel.org\n\n"
    },
    {
      "commit": "60d8ce2cd6c283132928c11f3fd57ff4187287e0",
      "tree": "36d08a2ead7a7d8c3c081d484215ccca00bf6aab",
      "parents": [
        "849e8dea099aafa56db9e74b580b0d858b956533",
        "feae3203d711db0a9965300ee6d592257fdaae4f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 19:27:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 19:27:08 2009 -0800"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  timers, init: Limit the number of per cpu calibration bootup messages\n  posix-cpu-timers: optimize and document timer_create callback\n  clockevents: Add missing include to pacify sparse\n  x86: vmiclock: Fix printk format\n  x86: Fix printk format due to variable type change\n  sparc: fix printk for change of variable type\n  clocksource/events: Fix fallout of generic code changes\n  nohz: Allow 32-bit machines to sleep for more than 2.15 seconds\n  nohz: Track last do_timer() cpu\n  nohz: Prevent clocksource wrapping during idle\n  nohz: Type cast printk argument\n  mips: Use generic mult/shift factor calculation for clocks\n  clocksource: Provide a generic mult/shift factor calculation\n  clockevents: Use u32 for mult and shift factors\n  nohz: Introduce arch_needs_cpu\n  nohz: Reuse ktime in sub-functions of tick_check_idle.\n  time: Remove xtime_cache\n  time: Implement logarithmic time accumulation\n"
    },
    {
      "commit": "97813f2fe77804a4464564c75ba8d8826377feea",
      "tree": "5dc7154c5687edaee5712408c8baf605463ff093",
      "parents": [
        "27185016b806d5a1181ff501cae120582b2b27dd"
      ],
      "author": {
        "name": "Jon Hunter",
        "email": "jon-hunter@ti.com",
        "time": "Tue Aug 18 12:45:11 2009 -0500"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 20:46:24 2009 +0100"
      },
      "message": "nohz: Allow 32-bit machines to sleep for more than 2.15 seconds\n\nIn the dynamic tick code, \"max_delta_ns\" (member of the\n\"clock_event_device\" structure) represents the maximum sleep time\nthat can occur between timer events in nanoseconds.\n\nThe variable, \"max_delta_ns\", is defined as an unsigned long\nwhich is a 32-bit integer for 32-bit machines and a 64-bit\ninteger for 64-bit machines (if -m64 option is used for gcc).\nThe value of max_delta_ns is set by calling the function\n\"clockevent_delta2ns()\" which returns a maximum value of LONG_MAX.\nFor a 32-bit machine LONG_MAX is equal to 0x7fffffff and in\nnanoseconds this equates to ~2.15 seconds. Hence, the maximum\nsleep time for a 32-bit machine is ~2.15 seconds, where as for\na 64-bit machine it will be many years.\n\nThis patch changes the type of max_delta_ns to be \"u64\" instead of\n\"unsigned long\" so that this variable is a 64-bit type for both 32-bit\nand 64-bit machines. It also changes the maximum value returned by\nclockevent_delta2ns() to KTIME_MAX.  Hence this allows a 32-bit\nmachine to sleep for longer than ~2.15 seconds. Please note that this\npatch also changes \"min_delta_ns\" to be \"u64\" too and although this is\nunnecessary, it makes the patch simpler as it avoids to fixup all\ncallers of clockevent_delta2ns().\n\n[ tglx: changed \"unsigned long long\" to u64 as we use this data type\n  \tthrough out the time code ]\n\nSigned-off-by: Jon Hunter \u003cjon-hunter@ti.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c1250617512-23567-3-git-send-email-jon-hunter@ti.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e69a9ac59629db81971a9e03048f9a107712947a",
      "tree": "3b9959180e882009bd3b73f14b9435bc30594088",
      "parents": [
        "0f26ec69f0c4071a8dfa3c2ac8e180a79355f81a",
        "d3f6302e7e51b41af86c6496ffb2f95e8f2179df"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 05 12:04:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 05 12:04:16 2009 -0700"
      },
      "message": "Merge branch \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  hrtimer: Remove overly verbose \"switch to high res mode\" message\n"
    },
    {
      "commit": "6f5071020d5ec89b5d095aa488db604adb921aec",
      "tree": "8d70c104b436d1ab6bdadf4cd618386802c37316",
      "parents": [
        "73964f6bc8e378715887592abe8a512f403db6a8",
        "7403f41f19574d6805197e9b97dfa7592003be10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 10:39:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 10:39:04 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  hrtimer: Eliminate needless reprogramming of clock events device\n"
    },
    {
      "commit": "d3f6302e7e51b41af86c6496ffb2f95e8f2179df",
      "tree": "f3283cb08fd13be12354359d21975dd2a2ea96ff",
      "parents": [
        "89133f93508137231251543d1732da638e6022e1"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "rdreier@cisco.com",
        "time": "Thu Sep 24 14:07:55 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 26 16:58:09 2009 +0200"
      },
      "message": "hrtimer: Remove overly verbose \"switch to high res mode\" message\n\nOn big systems, printing \u003cnumber of CPUs\u003e copies of\n\n    Switched to high resolution mode on CPU nnn\n\nclutters up the kernel log for minimal gain.  Just get rid of them.\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\nLKML-Reference: \u003cada1vlw126s.fsf_-_@cisco.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "31bbb9b58d1e8ebcf2b28c95c2250a9f8e31e397",
      "tree": "6bb0c0490d66d32eca43e73abb28d8b3ab0e7b91",
      "parents": [
        "ff830b8e5f999d1ccbd0282a666520f0b557daa4",
        "3f0a525ebf4b8ef041a332bbe4a73aee94bb064b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:46:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:46:15 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  itimers: Add tracepoints for itimer\n  hrtimer: Add tracepoint for hrtimers\n  timers: Add tracepoints for timer_list timers\n  cputime: Optimize jiffies_to_cputime(1)\n  itimers: Simplify arm_timer() code a bit\n  itimers: Fix periodic tics precision\n  itimers: Merge ITIMER_VIRT and ITIMER_PROF\n\nTrivial header file include conflicts in kernel/fork.c\n"
    },
    {
      "commit": "a03fdb7612874834d6847107198712d18b5242c7",
      "tree": "9ae81170509fd8b1c23d1b7e8edfa7a2203ffce3",
      "parents": [
        "202c4675c55ddf6b443c7e057d2dff6b42ef71aa",
        "12e09337fe238981cb0c87543306e23775d1a143"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 18 09:15:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 18 09:15:24 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (34 commits)\n  time: Prevent 32 bit overflow with set_normalized_timespec()\n  clocksource: Delay clocksource down rating to late boot\n  clocksource: clocksource_select must be called with mutex locked\n  clocksource: Resolve cpu hotplug dead lock with TSC unstable, fix crash\n  timers: Drop a function prototype\n  clocksource: Resolve cpu hotplug dead lock with TSC unstable\n  timer.c: Fix S/390 comments\n  timekeeping: Fix invalid getboottime() value\n  timekeeping: Fix up read_persistent_clock() breakage on sh\n  timekeeping: Increase granularity of read_persistent_clock(), build fix\n  time: Introduce CLOCK_REALTIME_COARSE\n  x86: Do not unregister PIT clocksource on PIT oneshot setup/shutdown\n  clocksource: Avoid clocksource watchdog circular locking dependency\n  clocksource: Protect the watchdog rating changes with clocksource_mutex\n  clocksource: Call clocksource_change_rating() outside of watchdog_lock\n  timekeeping: Introduce read_boot_clock\n  timekeeping: Increase granularity of read_persistent_clock()\n  timekeeping: Update clocksource with stop_machine\n  timekeeping: Add timekeeper read_clock helper functions\n  timekeeping: Move NTP adjusted clock multiplier to struct timekeeper\n  ...\n\nFix trivial conflict due to MIPS lemote -\u003e loongson renaming.\n"
    },
    {
      "commit": "7403f41f19574d6805197e9b97dfa7592003be10",
      "tree": "8d849ac38a64a60fbe06f9f2c8c6b26697fad74f",
      "parents": [
        "12e09337fe238981cb0c87543306e23775d1a143"
      ],
      "author": {
        "name": "Ashwin Chaugule",
        "email": "ashwinc@quicinc.com",
        "time": "Tue Sep 01 23:03:33 2009 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Sep 15 17:09:44 2009 +0200"
      },
      "message": "hrtimer: Eliminate needless reprogramming of clock events device\n\nOn NOHZ systems the following timers,\n\n-  tick_nohz_restart_sched_tick (tick_sched_timer)\n-  hrtimer_start (tick_sched_timer)\n\nare reprogramming the clock events device far more often than needed.\nNo specific test case was required to observe this effect. This\noccurres because there was no check to see if the currently removed or\nrestarted hrtimer was:\n\n1) the one which previously armed the clock events device.\n2) going to be replaced by another timer which has the same expiry time.\n\nAvoid the reprogramming in hrtimer_force_reprogram when the new expiry\nvalue which is evaluated from the clock bases is equal to\ncpu_base-\u003eexpires_next. This results in faster application startup\ntime by ~4%.\n\n[ tglx: simplified initial solution ]\n\nSigned-off-by: Ashwin Chaugule \u003cashwinc@quicinc.com\u003e\nLKML-Reference: \u003c4AA00165.90609@codeaurora.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c6a2a1770245f654f35f60e1458d4356680f9519",
      "tree": "0a015269ca839ac2fe91b3d86955997bf7b8686d",
      "parents": [
        "2b022e3d4bf9885f781221c59d86283a2cdfc2ed"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Mon Aug 10 10:51:23 2009 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 29 14:10:06 2009 +0200"
      },
      "message": "hrtimer: Add tracepoint for hrtimers\n\nAdd tracepoints which cover the life cycle of a hrtimer. The\ntracepoints are integrated with the already existing debug_object\ndebug points as far as possible.\n\n[ tglx: Fixed comments, made output conistent, easier to read and\n  \tparse. Fixed output for 32bit archs which do not use the\n  \tscalar representation of ktime_t. Hand current time to\n  \ttrace_hrtimer_expiry_entry instead of calling get_time()\n  \tinside of the trace assignment. ]\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Anton Blanchard \u003canton@samba.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Zhaolei \u003czhaolei@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A7F8B2B.5020908@cn.fujitsu.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "2bc481cf433879f0e6cdd4d899fc21ee05dcea23",
      "tree": "5afcce7af1511f105699cc74cc9df1b96b471eac",
      "parents": [
        "fd29cf72621071d1d5f9bae634a4505b05f0e58b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Aug 28 23:41:29 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 28 23:41:29 2009 -0700"
      },
      "message": "pktgen: spin using hrtimer\n\nThis changes how the pktgen thread spins/waits between\npackets if delay is configured. It uses a high res timer to\nwait for time to arrive.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4cd1993f0046fbc765dbf20af90966f5661e3789",
      "tree": "8772c03b73159524183f08337b134503ddf8479e",
      "parents": [
        "97fd9ed48ce2b807edc363bef3e817aeeb5cd5e6",
        "64f1607ffbbc772685733ea63e6f7f4183df1b16"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Aug 14 15:59:00 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Aug 14 15:59:30 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into timers/core\n\nReason: Martin\u0027s timekeeping cleanup series depends on both\ntimers/core and mainline changes.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "fbd90375d7531927d312766b548376d909811b4d",
      "tree": "3eff386f9e3d15e8f890c2a1a1cf12e100b6ab0c",
      "parents": [
        "a40f262cc21fbfd781bbddcc40b16b83a75f5f34"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Jul 22 13:40:14 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jul 22 17:12:32 2009 +0200"
      },
      "message": "hrtimer: Remove cb_entry from struct hrtimer\n\nIt\u0027s unused, remove it.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\n"
    },
    {
      "commit": "6ff7041dbfeb3bd7dfe9aa67275c21199ef760d6",
      "tree": "c8897de7ba6c09d51d83557d981ced3da48bba61",
      "parents": [
        "7e0c5086c172ecf8b0c2ad860b02a586967d17d0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 10 14:57:05 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 10 17:32:55 2009 +0200"
      },
      "message": "hrtimer: Fix migration expiry check\n\nThe timer migration expiry check should prevent the migration of a\ntimer to another CPU when the timer expires before the next event is\nscheduled on the other CPU. Migrating the timer might delay it because\nwe can not reprogram the clock event device on the other CPU. But the\ncode implementing that check has two flaws:\n\n- for !HIGHRES the check compares the expiry value with the clock\n  events device expiry value which is wrong for CLOCK_REALTIME based\n  timers.\n\n- the check is racy. It holds the hrtimer base lock of the target CPU,\n  but the clock event device expiry value can be modified\n  nevertheless, e.g. by an timer interrupt firing.\n\nThe !HIGHRES case is easy to fix as we can enqueue the timer on the\ncpu which was selected by the load balancer. It runs the idle\nbalancing code once per jiffy anyway. So the maximum delay for the\ntimer is the same as when we keep the tick on the current cpu going.\n\nIn the HIGHRES case we can get the next expiry value from the hrtimer\ncpu_base of the target CPU and serialize the update with the cpu_base\nlock. This moves the lock section in hrtimer_interrupt() so we can set\nnext_event to KTIME_MAX while we are handling the expired timers and\nset it to the next expiry value after we handled the timers under the\nbase lock. While the expired timers are processed timer migration is\nblocked because the expiry time of the timer is always \u003c\u003d KTIME_MAX.\n\nAlso remove the now useless clockevents_get_next_event() function.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7e0c5086c172ecf8b0c2ad860b02a586967d17d0",
      "tree": "207e1975ea970279e5ad912a094361e2fa169d93",
      "parents": [
        "507e123151149e578c9aae33eb876c49824da5f8"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 09 13:52:32 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 10 17:22:20 2009 +0200"
      },
      "message": "hrtimer: migration: do not check expiry time on current CPU\n\nThe timer migration code needs to check whether the expiry time of the\ntimer is before the programmed clock event expiry time when the timer\nis enqueued on another CPU because we can not reprogram the timer\ndevice on the other CPU. The current logic checks the expiry time even\nif we enqueue on the current CPU when nohz_get_load_balancer() returns\ncurrent CPU. This might lead to an endless loop in the expiry check\ncode when the expiry time of the timer is before the current\nprogrammed next event.\n\nCheck whether nohz_get_load_balancer() returns current CPU and skip\nthe expiry check if this is the case.\n\nThe bug was triggered from the networking code. The patch fixes the\nregression http://bugzilla.kernel.org/show_bug.cgi?id\u003d13738\n(Soft-Lockup/Race in networking in 2.6.31-rc1+195)\n\nCc: Arun Bharadwaj \u003carun@linux.vnet.ibm.com\nTested-by: Joao Correia \u003cjoaomiguelcorreia@gmail.com\u003e\nTested-by: Andres Freund \u003candres@anarazel.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a40f262cc21fbfd781bbddcc40b16b83a75f5f34",
      "tree": "1600f58173be05f561bcad045bca4014ab635d6f",
      "parents": [
        "951ed4d36b77ba9fe1ea08fc3c59d8bb6c9bda32"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 07 13:00:31 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 07 13:00:31 2009 +0200"
      },
      "message": "timekeeping: Move ktime_get() functions to timekeeping.c\n\nThe ktime_get() functions for GENERIC_TIME\u003dn are still located in\nhrtimer.c. Move them to time/timekeeping.c where they belong.\n\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "951ed4d36b77ba9fe1ea08fc3c59d8bb6c9bda32",
      "tree": "870456aff2c513c00608f5416d1b7b440fa5f963",
      "parents": [
        "faf80d62e44dc627efb741f48db50c1858d1667c"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Tue Jul 07 11:27:28 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 07 12:47:33 2009 +0200"
      },
      "message": "timekeeping: optimized ktime_get[_ts] for GENERIC_TIME\u003dy\n\nThe generic ktime_get function defined in kernel/hrtimer.c is suboptimial\nfor GENERIC_TIME\u003dy:\n\n 0)               |  ktime_get() {\n 0)               |    ktime_get_ts() {\n 0)               |      getnstimeofday() {\n 0)               |        read_tod_clock() {\n 0)   0.601 us    |        }\n 0)   1.938 us    |      }\n 0)               |      set_normalized_timespec() {\n 0)   0.602 us    |      }\n 0)   4.375 us    |    }\n 0)   5.523 us    |  }\n\nOverall there are two read_seqbegin/read_seqretry loops and a lot of\nunnecessary struct timespec calculations. ktime_get returns a nano second\nvalue which is the sum of xtime, wall_to_monotonic and the nano second\ndelta from the clock source.\n\nktime_get can be optimized for GENERIC_TIME\u003dy. The new version only calls\nclocksource_read:\n\n 0)               |  ktime_get() {\n 0)               |    read_tod_clock() {\n 0)   0.610 us    |    }\n 0)   1.977 us    |  }\n\nIt uses a single read_seqbegin/readseqretry loop and just adds everthing\nto a nano second value.\n\nktime_get_ts is optimized in a similar fashion.\n\n[ tglx: added WARN_ON(timekeeping_suspended) as in getnstimeofday() ]\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: john stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090707112728.3005244d@skybase\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b7c142dbf1e7422d0be7f7faa3f1163ad9da9788",
      "tree": "6e62c8654bb9c329f89246235062ac2a289960df",
      "parents": [
        "0bd8df908de2aefe312d05bd25cd3abc21a6d1da",
        "f2c5dbd7b7396457efc114f825acfdd4db4608f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 09:46:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 09:46:33 2009 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: start using hrtimers\n  hrtimer: export ktime_add_safe\n  UBIFS: do not forget to register BDI device\n  UBIFS: allow sync option in rootflags\n  UBIFS: remove dead code\n  UBIFS: use anonymous device\n  UBIFS: return proper error code if the compr is not present\n  UBIFS: return error if link and unlink race\n  UBIFS: reset no_space flag after inode deletion\n"
    },
    {
      "commit": "8daa21e61be47a5b136c4ee1be82e391a5788696",
      "tree": "1b8468a8f8d9dde524e140dc0bf068cce8a5bb98",
      "parents": [
        "3f36406f26437afae9f43cc6dcfc264143e21ed0"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 28 16:21:24 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 08 11:14:58 2009 +0300"
      },
      "message": "hrtimer: export ktime_add_safe\n\nWe want to use hrtimers in UBIFS (for write-buffer write-back timer).\nWe need the \u0027hrtimer_set_expires_range_ns()\u0027, which is an in-line\nfunction which uses \u0027ktime_add_safe()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eea08f32adb3f97553d49a4f79a119833036000a",
      "tree": "4e6af5185309d7abe49a8fa19634ea38582381e4",
      "parents": [
        "cd1bb94b4a0531e8211a3774f17de831f8285f76"
      ],
      "author": {
        "name": "Arun R Bharadwaj",
        "email": "arun@linux.vnet.ibm.com",
        "time": "Thu Apr 16 12:16:41 2009 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 13 16:52:42 2009 +0200"
      },
      "message": "timers: Logic to move non pinned timers\n\n* Arun R Bharadwaj \u003carun@linux.vnet.ibm.com\u003e [2009-04-16 12:11:36]:\n\nThis patch migrates all non pinned timers and hrtimers to the current\nidle load balancer, from all the idle CPUs. Timers firing on busy CPUs\nare not migrated.\n\nWhile migrating hrtimers, care should be taken to check if migrating\na hrtimer would result in a latency or not. So we compare the expiry of the\nhrtimer with the next timer interrupt on the target cpu and migrate the\nhrtimer only if it expires *after* the next interrupt on the target cpu.\nSo, added a clockevents_get_next_event() helper function to return the\nnext_event on the target cpu\u0027s clock_event_device.\n\n[ tglx: cleanups and simplifications ]\n\nSigned-off-by: Arun R Bharadwaj \u003carun@linux.vnet.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "597d0275736dad9c3bda6f0a00a1c477dc0f37b1",
      "tree": "7ebbe9f80fb13a3ec34ea997d00c21eecf7699ae",
      "parents": [
        "a04198887658e1d8ae25f5420035c057cb170e67"
      ],
      "author": {
        "name": "Arun R Bharadwaj",
        "email": "arun@linux.vnet.ibm.com",
        "time": "Thu Apr 16 12:13:26 2009 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 13 16:52:42 2009 +0200"
      },
      "message": "timers: Framework for identifying pinned timers\n\n* Arun R Bharadwaj \u003carun@linux.vnet.ibm.com\u003e [2009-04-16 12:11:36]:\n\nThis patch creates a new framework for identifying cpu-pinned timers\nand hrtimers.\n\nThis framework is needed because pinned timers are expected to fire on\nthe same CPU on which they are queued. So it is essential to identify\nthese and not migrate them, in case there are any.\n\nFor regular timers, the currently existing add_timer_on() can be used\nqueue pinned timers and subsequently mod_timer_pinned() can be used\nto modify the \u0027expires\u0027 field.\n\nFor hrtimers, new modes HRTIMER_ABS_PINNED and HRTIMER_REL_PINNED are\nadded to queue cpu-pinned hrtimer.\n\n[ tglx: use .._PINNED mode argument instead of creating tons of new\nfunctions ]\n\nSigned-off-by: Arun R Bharadwaj \u003carun@linux.vnet.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7f1e2ca9f04b02794597f60e7b1d43f0a1317939",
      "tree": "dad1d80ab4232f3ca12d7ff9a58f0dc76133dab1",
      "parents": [
        "7bee946358c3cb957d4aa648fc5ab3cad0b232d0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Mar 13 12:21:27 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 31 14:52:52 2009 +0200"
      },
      "message": "hrtimer: fix rq-\u003elock inversion (again)\n\nIt appears I inadvertly introduced rq-\u003elock recursion to the\nhrtimer_start() path when I delegated running already expired\ntimers to softirq context.\n\nThis patch fixes it by introducing a __hrtimer_start_range_ns()\nmethod that will not use raise_softirq_irqoff() but\n__raise_softirq_irqoff() which avoids the wakeup.\n\nIt then also changes schedule() to check for pending softirqs and\ndo the wakeup then, I\u0027m not quite sure I like this last bit, nor\nam I convinced its really needed.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: paulus@samba.org\nLKML-Reference: \u003c20090313112301.096138802@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b0a9b5111abf60ef07eade834f480e89004c7920",
      "tree": "a74aa7bacf920eb567cd7caa8027a06c96dbb220",
      "parents": [
        "94df7de0289bc2df3d6e85cd2ece52bf42682f45"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Jan 25 11:31:36 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 22:35:34 2009 +0100"
      },
      "message": "hrtimer: prevent negative expiry value after clock_was_set()\n\nImpact: prevent false positive WARN_ON() in clockevents_program_event()\n\nclock_was_set() changes the base-\u003eoffset of CLOCK_REALTIME and\nenforces the reprogramming of the clockevent device to expire timers\nwhich are based on CLOCK_REALTIME. If the clock change is large enough\nthen the subtraction of the timer expiry value and base-\u003eoffset can\nbecome negative which triggers the warning in\nclockevents_program_event().\n\nCheck the subtraction result and set a negative value to 0.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "94df7de0289bc2df3d6e85cd2ece52bf42682f45",
      "tree": "b3f614b015adfb9574959687bb9b7ac4c884e23a",
      "parents": [
        "7f22391cbe82a80a9f891d8bd10fc28ff248d1e2"
      ],
      "author": {
        "name": "Sebastien Dugue",
        "email": "sebastien.dugue@bull.net",
        "time": "Mon Dec 01 14:09:07 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 22:35:29 2009 +0100"
      },
      "message": "hrtimers: allow the hot-unplugging of all cpus\n\nImpact: fix CPU hotplug hang on Power6 testbox\n\nOn architectures that support offlining all cpus (at least powerpc/pseries),\nhot-unpluging the tick_do_timer_cpu can result in a system hang.\n\nThis comes from the fact that if the cpu going down happens to be the\ncpu doing the tick, then as the tick_do_timer_cpu handover happens after the\ncpu is dead (via the CPU_DEAD notification), we\u0027re left without ticks,\njiffies are frozen and any task relying on timers (msleep, ...) is stuck.\nThat\u0027s particularly the case for the cpu looping in __cpu_die() waiting\nfor the dying cpu to be dead.\n\nThis patch addresses this by having the tick_do_timer_cpu handover happen\nearlier during the CPU_DYING notification. For this, a new clockevent\nnotification type is introduced (CLOCK_EVT_NOTIFY_CPU_DYING) which is triggered\nin hrtimer_cpu_notify().\n\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7f22391cbe82a80a9f891d8bd10fc28ff248d1e2",
      "tree": "e0ed719d43c6f03bab7f4dbb6c2224603f7268fa",
      "parents": [
        "f2257b70b0f9b2fe8f2afd83fc6798dca75930b8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 22 02:24:48 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 22:35:10 2009 +0100"
      },
      "message": "hrtimers: increase clock min delta threshold while interrupt hanging\n\nImpact: avoid timer IRQ hanging slow systems\n\nWhile using the function graph tracer on a virtualized system, the\nhrtimer_interrupt can hang the system on an infinite loop.\n\nThis can be caused in several situations:\n\n - the hardware is very slow and HZ is set too high\n\n - something intrusive is slowing the system down (tracing under emulation)\n\n... and the next clock events to program are always before the current time.\n\nThis patch implements a reasonable compromise: if such a situation is\ndetected, we share the CPUs time in 1/4 to process the hrtimer interrupts.\nThis is enough to let the system running without serious starvation.\n\nIt has been successfully tested under VirtualBox with 1000 HZ and 100 HZ\nwith function graph tracer launched. On both cases, the clock events were\nincreased until about 25 ms periodic ticks, which means 40 HZ.\n\nSo we change a hard to debug hang into a warning message and a system that\nstill manages to limp along.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1e70c7f7a9d4a3d2cc78b40e1d7768d99cd79899",
      "tree": "1218c32008412e57314f8f9db8d3b4912e2ecb25",
      "parents": [
        "810ee58de26c9c1255d716b1db7344c4a1093fec",
        "1d4a7f1c4faf53eb9e822743ec8a70b3019a26d2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 26 09:47:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 26 09:47:43 2009 -0800"
      },
      "message": "Merge branch \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  hrtimers: fix inconsistent lock state on resume in hres_timers_resume\n  time-sched.c: tick_nohz_update_jiffies should be static\n  locking, hpet: annotate false positive warning\n  kernel/fork.c: unused variable \u0027ret\u0027\n  itimers: remove the per-cpu-ish-ness\n"
    },
    {
      "commit": "1d4a7f1c4faf53eb9e822743ec8a70b3019a26d2",
      "tree": "a3f54cd702bb48e19aa79e45deb7c4812ed0c177",
      "parents": [
        "934d96eafadcf3eb3ccd094af9919f020907fc41"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Sun Jan 18 16:39:29 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 18 21:31:37 2009 +0100"
      },
      "message": "hrtimers: fix inconsistent lock state on resume in hres_timers_resume\n\nAndrey Borzenkov reported this lockdep assert:\n\n\u003e [17854.688347] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e [17854.688347] [ INFO: inconsistent lock state ]\n\u003e [17854.688347] 2.6.29-rc2-1avb #1\n\u003e [17854.688347] ---------------------------------\n\u003e [17854.688347] inconsistent {in-hardirq-W} -\u003e {hardirq-on-W} usage.\n\u003e [17854.688347] pm-suspend/18240 [HC0[0]:SC0[0]:HE1:SE1] takes:\n\u003e [17854.688347]  (\u0026cpu_base-\u003elock){++..}, at: [\u003cc0136fcc\u003e] retrigger_next_event+0x5c/0xa0\n\u003e [17854.688347] {in-hardirq-W} state was registered at:\n\u003e [17854.688347]   [\u003cc01443cd\u003e] __lock_acquire+0x79d/0x1930\n\u003e [17854.688347]   [\u003cc01455bc\u003e] lock_acquire+0x5c/0x80\n\u003e [17854.688347]   [\u003cc03092e5\u003e] _spin_lock+0x35/0x70\n\u003e [17854.688347]   [\u003cc0136e61\u003e] hrtimer_run_queues+0x31/0x140\n\u003e [17854.688347]   [\u003cc0128d98\u003e] run_local_timers+0x8/0x20\n\u003e [17854.688347]   [\u003cc0128dd3\u003e] update_process_times+0x23/0x60\n\u003e [17854.688347]   [\u003cc013e274\u003e] tick_periodic+0x24/0x80\n\u003e [17854.688347]   [\u003cc013e2e2\u003e] tick_handle_periodic+0x12/0x70\n\u003e [17854.688347]   [\u003cc0104e24\u003e] timer_interrupt+0x14/0x20\n\u003e [17854.688347]   [\u003cc01607b9\u003e] handle_IRQ_event+0x29/0x60\n\u003e [17854.688347]   [\u003cc0161c59\u003e] handle_level_irq+0x69/0xe0\n\u003e [17854.688347]   [\u003cffffffff\u003e] 0xffffffff\n\u003e [17854.688347] irq event stamp: 55771\n\u003e [17854.688347] hardirqs last  enabled at (55771): [\u003cc0309125\u003e] _spin_unlock_irqrestore+0x35/0x60\n\u003e [17854.688347] hardirqs last disabled at (55770): [\u003cc0309419\u003e] _spin_lock_irqsave+0x19/0x80\n\u003e [17854.688347] softirqs last  enabled at (54836): [\u003cc0124f54\u003e] __do_softirq+0xc4/0x110\n\u003e [17854.688347] softirqs last disabled at (54831): [\u003cc01049ae\u003e] do_softirq+0x8e/0xe0\n\u003e [17854.688347]\n\u003e [17854.688347] other info that might help us debug this:\n\u003e [17854.688347] 3 locks held by pm-suspend/18240:\n\u003e [17854.688347]  #0:  (\u0026buffer-\u003emutex){--..}, at: [\u003cc01dd4c5\u003e] sysfs_write_file+0x25/0x100\n\u003e [17854.688347]  #1:  (pm_mutex){--..}, at: [\u003cc015056f\u003e] enter_state+0x4f/0x140\n\u003e [17854.688347]  #2:  (dpm_list_mtx){--..}, at: [\u003cc027880f\u003e] device_pm_lock+0xf/0x20\n\u003e [17854.688347]\n\u003e [17854.688347] stack backtrace:\n\u003e [17854.688347] Pid: 18240, comm: pm-suspend Not tainted 2.6.29-rc2-1avb #1\n\u003e [17854.688347] Call Trace:\n\u003e [17854.688347]  [\u003cc0306248\u003e] ? printk+0x18/0x20\n\u003e [17854.688347]  [\u003cc0141fac\u003e] print_usage_bug+0x16c/0x1d0\n\u003e [17854.688347]  [\u003cc0142bcf\u003e] mark_lock+0x8bf/0xc90\n\u003e [17854.688347]  [\u003cc0106b8f\u003e] ? pit_next_event+0x2f/0x40\n\u003e [17854.688347]  [\u003cc01441b0\u003e] __lock_acquire+0x580/0x1930\n\u003e [17854.688347]  [\u003cc030916d\u003e] ? _spin_unlock+0x1d/0x20\n\u003e [17854.688347]  [\u003cc0106b8f\u003e] ? pit_next_event+0x2f/0x40\n\u003e [17854.688347]  [\u003cc013dd38\u003e] ? clockevents_program_event+0x98/0x160\n\u003e [17854.688347]  [\u003cc0142fe8\u003e] ? mark_held_locks+0x48/0x90\n\u003e [17854.688347]  [\u003cc0309125\u003e] ? _spin_unlock_irqrestore+0x35/0x60\n\u003e [17854.688347]  [\u003cc0143229\u003e] ? trace_hardirqs_on_caller+0x139/0x190\n\u003e [17854.688347]  [\u003cc014328b\u003e] ? trace_hardirqs_on+0xb/0x10\n\u003e [17854.688347]  [\u003cc01455bc\u003e] lock_acquire+0x5c/0x80\n\u003e [17854.688347]  [\u003cc0136fcc\u003e] ? retrigger_next_event+0x5c/0xa0\n\u003e [17854.688347]  [\u003cc03092e5\u003e] _spin_lock+0x35/0x70\n\u003e [17854.688347]  [\u003cc0136fcc\u003e] ? retrigger_next_event+0x5c/0xa0\n\u003e [17854.688347]  [\u003cc0136fcc\u003e] retrigger_next_event+0x5c/0xa0\n\u003e [17854.688347]  [\u003cc013711a\u003e] hres_timers_resume+0xa/0x10\n\u003e [17854.688347]  [\u003cc013aa8e\u003e] timekeeping_resume+0xee/0x150\n\u003e [17854.688347]  [\u003cc0273384\u003e] __sysdev_resume+0x14/0x50\n\u003e [17854.688347]  [\u003cc0273407\u003e] sysdev_resume+0x47/0x80\n\u003e [17854.688347]  [\u003cc02791ab\u003e] device_power_up+0xb/0x20\n\u003e [17854.688347]  [\u003cc015043f\u003e] suspend_devices_and_enter+0xcf/0x150\n\u003e [17854.688347]  [\u003cc0150c2f\u003e] ? freeze_processes+0x3f/0x90\n\u003e [17854.688347]  [\u003cc0150614\u003e] enter_state+0xf4/0x140\n\u003e [17854.688347]  [\u003cc01506dd\u003e] state_store+0x7d/0xc0\n\u003e [17854.688347]  [\u003cc0150660\u003e] ? state_store+0x0/0xc0\n\u003e [17854.688347]  [\u003cc0202da4\u003e] kobj_attr_store+0x24/0x30\n\u003e [17854.688347]  [\u003cc01dd53c\u003e] sysfs_write_file+0x9c/0x100\n\u003e [17854.688347]  [\u003cc019916c\u003e] vfs_write+0x9c/0x160\n\u003e [17854.688347]  [\u003cc0103494\u003e] ? restore_nocheck_notrace+0x0/0xe\n\u003e [17854.688347]  [\u003cc01dd4a0\u003e] ? sysfs_write_file+0x0/0x100\n\u003e [17854.688347]  [\u003cc01992ed\u003e] sys_write+0x3d/0x70\n\u003e [17854.688347]  [\u003cc0103371\u003e] sysenter_do_call+0x12/0x31\n\nAndrey\u0027s analysis:\n\n\u003e timekeeping_resume() is called via class -\u003eresume\n\u003e method; and according to comments in sysdev_resume() and\n\u003e device_power_up(), they are called with interrupts disabled.\n\u003e\n\u003e Looking at suspend_enter, irqs *are* disabled at this point.\n\u003e\n\u003e So it actually looks like something (may be some driver)\n\u003e unconditionally enabled irqs in resume path.\n\nAdd a debug check to test this theory. If it triggers then it\ntriggers because the resume code calls it with irqs enabled,\nwhich is a no-no not just for timekeeping_resume(), but also\nbad for a number of other resume handlers.\n\nReported-by: Andrey Borzenkov \u003carvidjaar@mail.ru\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "58fd3aa288939d3097fa04505b25c2f5e6e144d1",
      "tree": "73d65d8494f80884c765265d78496fba6ef00784",
      "parents": [
        "6673e0c3fbeaed2cd08e2fd4a4aa97382d6fedb0"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:03 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:18 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 01\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "82c5b7b527ccc4b5d3cf832437e842f9d2920a79",
      "tree": "cc7da1c4c75f7ac6fb8dbe63273f2c88f0d12dd8",
      "parents": [
        "e3f1d883740b09e5116d4d4e30a6a6987264a83c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 14:11:10 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 14:11:10 2009 +0100"
      },
      "message": "hrtimer: splitout peek ahead functionality, fix\n\nImpact: build fix on !CONFIG_HIGH_RES_TIMERS\n\nFix:\n\n  kernel/hrtimer.c:1586: error: implicit declaration of function \u0027__hrtimer_peek_ahead_timers\u0027\n\nSignen-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e3f1d883740b09e5116d4d4e30a6a6987264a83c",
      "tree": "cdc2f35a46b094197a9ea8c8280a7c8f209cc501",
      "parents": [
        "a6037b61c2f5fc99c57c15b26d7cfa58bbb34008"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 05 11:28:23 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 13:14:34 2009 +0100"
      },
      "message": "hrtimer: fixup comments\n\nClean up the comments\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a6037b61c2f5fc99c57c15b26d7cfa58bbb34008",
      "tree": "b076de5cc8a75e4227f96dda31a0daa6e895579b",
      "parents": [
        "731a55ba0f17064f85903b7bf8e24849ec6cfa20"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jan 05 11:28:22 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 13:14:33 2009 +0100"
      },
      "message": "hrtimer: fix recursion deadlock by re-introducing the softirq\n\nImpact: fix rare runtime deadlock\n\nThere are a few sites that do:\n\n  spin_lock_irq(\u0026foo)\n  hrtimer_start(\u0026bar)\n    __run_hrtimer(\u0026bar)\n      func()\n        spin_lock(\u0026foo)\n\nwhich obviously deadlocks. In order to avoid this, never call __run_hrtimer()\nfrom hrtimer_start*() context, but instead defer this to softirq context.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "731a55ba0f17064f85903b7bf8e24849ec6cfa20",
      "tree": "e81c1b2c486250460c8850be4da8c320d23b84ba",
      "parents": [
        "d5fd43c4ae04523e1dcd7794f9c511b289851350"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 05 11:28:21 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 13:14:33 2009 +0100"
      },
      "message": "hrtimer: simplify hotplug migration\n\nImpact: cleanup\n\nNo need for a smp function call, which is likely to run on the same\nCPU anyway. We can just call hrtimers_peek_ahead() in the interrupts\ndisabled section of migrate_hrtimers().\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d5fd43c4ae04523e1dcd7794f9c511b289851350",
      "tree": "0334b8b32ef4e5fb780449cbc49bed32a42c515d",
      "parents": [
        "8bdec955b0da2ffbd10eb9b200651dd1f9e366f2"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 05 11:28:20 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 13:14:32 2009 +0100"
      },
      "message": "hrtimer: fix HOTPLUG_CPU\u003dn compile warning\n\nImpact: cleanup\n\n kernel/hrtimer.c: In function \u0027hrtimer_cpu_notify\u0027:\n kernel/hrtimer.c:1574: warning: unused variable \u0027dcpu\u0027\n\nIntroduced by commit 37810659ea7d9572c5ac284ade272f806ef8f788\n(\"hrtimer: removing all ur callback modes, fix hotplug\") from the\ntimers.  dcpu is only used if CONFIG_HOTPLUG_CPU is set.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8bdec955b0da2ffbd10eb9b200651dd1f9e366f2",
      "tree": "8f44e541adf7e6110f064ed70e9f0751be98be95",
      "parents": [
        "fe0bdec68b77020281dc814805edfe594ae89e0f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 05 11:28:19 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 13:14:32 2009 +0100"
      },
      "message": "hrtimer: splitout peek ahead functionality\n\nImpact: cleanup\n\nProvide a peek ahead function that assumes irqs disabled, allows for micro\noptimizations.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "db200df0b3530f673d8e9f5bd535e9e10305842a",
      "tree": "9a94039b8813452c51a50fcb45e95c32a9f0e537",
      "parents": [
        "ec270e59a74eee972006a87c8e12514a20588369",
        "43a256322ac1fc105c181b3cade3b9bfc0b63ca1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 31 09:00:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 31 09:00:59 2008 -0800"
      },
      "message": "Merge branch \u0027irq-fixes-for-linus-4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-fixes-for-linus-4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sparseirq: move __weak symbols into separate compilation unit\n  sparseirq: work around __weak alias bug\n  sparseirq: fix hang with !SPARSE_IRQ\n  sparseirq: set lock_class for legacy irq when sparse_irq is selected\n  sparseirq: work around compiler optimizing away __weak functions\n  sparseirq: fix desc-\u003elock init\n  sparseirq: do not printk when migrating IRQ descriptors\n  sparseirq: remove duplicated arch_early_irq_init()\n  irq: simplify for_each_irq_desc() usage\n  proc: remove ifdef CONFIG_SPARSE_IRQ from stat.c\n  irq: for_each_irq_desc() move to irqnr.h\n  hrtimer: remove #include \u003clinux/irq.h\u003e\n"
    },
    {
      "commit": "51bc39f4ba35bae153b32145077fb1109bcae14c",
      "tree": "e92c920e82779d4862b7ca2b67eca91487323909",
      "parents": [
        "860cf8894b326e4b89720f520540604834337b72"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Dec 26 12:23:00 2008 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 26 09:48:16 2008 +0100"
      },
      "message": "hrtimer: remove #include \u003clinux/irq.h\u003e\n\nImpact: cleanup\n\n\u003clinux/irq.h\u003e can be removed and should be, because:\n\n  - hrtimer doesn\u0027t use any irq feature.\n  - \u003clinux/irq.h\u003e shouldn\u0027t be include from generic code.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b2e3c0adec918ea22b6c9d7c76193dd3aaba9bd4",
      "tree": "1ef1bc12934820143ac49f2432fbc933090eabe3",
      "parents": [
        "a0a99b227da57f81319dd239bc4de811b0f530ec"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 19 00:48:27 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 19 00:45:32 2008 +0100"
      },
      "message": "hrtimers: fix warning in kernel/hrtimer.c\n\nthis warning:\n\n  kernel/hrtimer.c: In function ‘hrtimer_cpu_notify’:\n  kernel/hrtimer.c:1574: warning: unused variable ‘dcpu’\n\nis caused because \u0027dcpu\u0027 is only used in the CONFIG_HOTPLUG_CPU case.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a0a99b227da57f81319dd239bc4de811b0f530ec",
      "tree": "04f15a69f565f90c9f6fb27646921a82fa91a39d",
      "parents": [
        "37810659ea7d9572c5ac284ade272f806ef8f788"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Dec 08 17:13:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 08 17:20:38 2008 +0100"
      },
      "message": "hrtimer: removing all ur callback modes, fix\n\n\u003e Ingo, this addition fixes the hotplug issue on my machine\n\nAnd because we\u0027re all human...\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "37810659ea7d9572c5ac284ade272f806ef8f788",
      "tree": "7e251f9b8eb0552773702ecf45f8348f2b5b2e2f",
      "parents": [
        "ca109491f612aab5c8152207631c0444f63da97f"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Thu Dec 04 11:17:10 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 11:31:25 2008 +0100"
      },
      "message": "hrtimer: removing all ur callback modes, fix hotplug\n\nImpact: fix hrtimer locking (reported by lockdep) in the CPU hotplug case\n\nThis addition fixes the hotplug locking issue on my machine\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ca109491f612aab5c8152207631c0444f63da97f",
      "tree": "46d0a90e79c75fc039bda7d01862062e0ac39900",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue Nov 25 12:43:51 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 25 15:45:46 2008 +0100"
      },
      "message": "hrtimer: removing all ur callback modes\n\nImpact: cleanup, move all hrtimer processing into hardirq context\n\nThis is an attempt at removing some of the hrtimer complexity by\nreducing the number of callback modes to 1.\n\nThis means that all hrtimer callback functions will be ran from HARD-irq\ncontext.\n\nI went through all the 30 odd hrtimer callback functions in the kernel\nand saw only one that I\u0027m not quite sure of, which is the one in\nnet/can/bcm.c - hence I\u0027m CC-ing the folks responsible for that code.\n\nFurthermore, the hrtimer core now calls callbacks directly with IRQs\ndisabled in case you try to enqueue an expired timer. If this timer is a\nperiodic timer (which should use hrtimer_forward() to advance its time)\nthen it might be possible to end up in an inf. recursive loop due to the\nfact that hrtimer_forward() doesn\u0027t round up to the next timer\ngranularity, and therefore keeps on calling the callback - obviously\nthis needs a fix.\n\nAside from that, this seems to compile and actually boot on my dual core\ntest box - although I\u0027m sure there are some bugs in, me not hitting any\nmakes me certain :-)\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "621a0d5207c18012cb39932f2d9830a11a6cb03d",
      "tree": "0e18c30c91620108b413197f9bc153ceb6e430ec",
      "parents": [
        "f21f237cf55494c3a4209de323281a3b0528da10"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Nov 12 09:36:35 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 09:54:40 2008 +0100"
      },
      "message": "hrtimer: clean up unused callback modes\n\nImpact: cleanup\n\ngit grep HRTIMER_CB_IRQSAFE revealed half the callback modes are actually\nunused.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5d5254f0d3b9bebc47d97e357374c0ad0c291a7d",
      "tree": "fea216db5914228fe80139f5e31621de86cc9e5d",
      "parents": [
        "ae99286b4f1be7788f2d6947c66a91dbd6351eec"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Sat Oct 25 10:22:38 2008 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 11 10:46:42 2008 +0100"
      },
      "message": "timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context\n\nImpact: fix incorrect locking triggered during hotplug-intense stress-tests\n\nWhile migrating the the CB_IRQSAFE_UNLOCKED timers during a cpu-offline,\nwe queue them on the cb_pending list, so that they won\u0027t go\nstale.\n\nThus, when the callbacks of the timers run from the softirq context,\nthey could run into potential deadlocks, since these callbacks\nassume that they\u0027re running with irq\u0027s disabled, thereby annoying\nlockdep!\n\nFix this by emulating hardirq context while running these callbacks from\nthe hrtimer softirq.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: inconsistent lock state ]\n2.6.27 #2\n--------------------------------\ninconsistent {in-hardirq-W} -\u003e {hardirq-on-W} usage.\nksoftirqd/0/4 [HC0[0]:SC1[1]:HE1:SE0] takes:\n (\u0026rq-\u003elock){++..}, at: [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n{in-hardirq-W} state was registered at:\n  [\u003cc014103c\u003e] __lock_acquire+0x549/0x121e\n  [\u003cc0107890\u003e] native_sched_clock+0x88/0x99\n  [\u003cc013aa12\u003e] clocksource_get_next+0x39/0x3f\n  [\u003cc0139abc\u003e] update_wall_time+0x616/0x7df\n  [\u003cc0141d6b\u003e] lock_acquire+0x5a/0x74\n  [\u003cc0121724\u003e] scheduler_tick+0x3a/0x18d\n  [\u003cc047ed45\u003e] _spin_lock+0x1c/0x45\n  [\u003cc0121724\u003e] scheduler_tick+0x3a/0x18d\n  [\u003cc0121724\u003e] scheduler_tick+0x3a/0x18d\n  [\u003cc012c436\u003e] update_process_times+0x3a/0x44\n  [\u003cc013c044\u003e] tick_periodic+0x63/0x6d\n  [\u003cc013c062\u003e] tick_handle_periodic+0x14/0x5e\n  [\u003cc010568c\u003e] timer_interrupt+0x44/0x4a\n  [\u003cc0150c9f\u003e] handle_IRQ_event+0x13/0x3d\n  [\u003cc0151c14\u003e] handle_level_irq+0x79/0xbd\n  [\u003cc0105634\u003e] do_IRQ+0x69/0x7d\n  [\u003cc01041e4\u003e] common_interrupt+0x28/0x30\n  [\u003cc047007b\u003e] aac_probe_one+0x1a3/0x3f3\n  [\u003cc047ec2d\u003e] _spin_unlock_irqrestore+0x36/0x39\n  [\u003cc01512b4\u003e] setup_irq+0x1be/0x1f9\n  [\u003cc065d70b\u003e] start_kernel+0x259/0x2c5\n  [\u003cffffffff\u003e] 0xffffffff\nirq event stamp: 50102\nhardirqs last  enabled at (50102): [\u003cc047ebf4\u003e] _spin_unlock_irq+0x20/0x23\nhardirqs last disabled at (50101): [\u003cc047edc2\u003e] _spin_lock_irq+0xa/0x4b\nsoftirqs last  enabled at (50088): [\u003cc0128ba6\u003e] do_softirq+0x37/0x4d\nsoftirqs last disabled at (50099): [\u003cc0128ba6\u003e] do_softirq+0x37/0x4d\n\nother info that might help us debug this:\nno locks held by ksoftirqd/0/4.\n\nstack backtrace:\nPid: 4, comm: ksoftirqd/0 Not tainted 2.6.27 #2\n [\u003cc013f6cb\u003e] print_usage_bug+0x13e/0x147\n [\u003cc013fef5\u003e] mark_lock+0x493/0x797\n [\u003cc01410b1\u003e] __lock_acquire+0x5be/0x121e\n [\u003cc0141d6b\u003e] lock_acquire+0x5a/0x74\n [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n [\u003cc047ed45\u003e] _spin_lock+0x1c/0x45\n [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n [\u003cc01210fd\u003e] finish_task_switch+0x41/0xbd\n [\u003cc0107890\u003e] native_sched_clock+0x88/0x99\n [\u003cc011dae6\u003e] sched_rt_period_timer+0x0/0x1fc\n [\u003cc0136dda\u003e] run_hrtimer_pending+0x54/0xe5\n [\u003cc011dae6\u003e] sched_rt_period_timer+0x0/0x1fc\n [\u003cc0128afb\u003e] __do_softirq+0x7b/0xef\n [\u003cc0128ba6\u003e] do_softirq+0x37/0x4d\n [\u003cc0128c12\u003e] ksoftirqd+0x56/0xc5\n [\u003cc0128bbc\u003e] ksoftirqd+0x0/0xc5\n [\u003cc0134649\u003e] kthread+0x38/0x5d\n [\u003cc0134611\u003e] kthread+0x0/0x5d\n [\u003cc0104477\u003e] kernel_thread_helper+0x7/0x10\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "268a3dcfea2077fca60d3715caa5c96f9b5e6ea7",
      "tree": "c2232774508424e677e27f296090a68c775e4669",
      "parents": [
        "c4bd822e7b12a9008241d76db45b665f2fef180c",
        "592aa999d6a272856c9bfbdaac0cfba1bb37c24c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 22 09:48:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 22 09:48:06 2008 +0200"
      },
      "message": "Merge branch \u0027timers/range-hrtimers\u0027 into v28-range-hrtimers-for-linus-v2\n\nConflicts:\n\n\tkernel/time/tick-sched.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "643bdf68f92a8516574ed7ca3713f9334c331b8d",
      "tree": "3f903134457f3fd633d13c632fa6b8222667cf20",
      "parents": [
        "e1dd7bc58578ebfcaba989608017fe5156c29c86"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:38:11 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:38:11 2008 +0200"
      },
      "message": "hrtimers: simplify hrtimer_peek_ahead_timers()\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e1dd7bc58578ebfcaba989608017fe5156c29c86",
      "tree": "9e626eacaefc53d6cf3b84ffc16d475b063a3797",
      "parents": [
        "b6a4b7de4cb45ccf7157fc58de09c96f84d67108"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:33:36 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:33:36 2008 +0200"
      },
      "message": "hrtimers: fix docbook comments\n\nhrtimer_start() and hrtimer_start_range_ns() handle relative and\nabsolute timers.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c465a76af658b443075d6efee1c3131257643020",
      "tree": "63c28c9fab02dedec7f03cee4a3ef7fe4dc1c072",
      "parents": [
        "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
        "1b02469088ac7a13d7e622b618b7410d0f1ce5ec",
        "fb02fbc14d17837b4b7b02dbb36142c16a7bf208",
        "d40e944c25fb4642adb2a4c580a48218a9f3f824",
        "1508487e7f16d992ad23cabd3712563ff912f413",
        "322acf6585f3c4e82ee32a246b0483ca0f6ad3f4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/debug\u0027 into v28-timers-for-linus\n"
    },
    {
      "commit": "651dab4264e4ba0e563f5ff56f748127246e9065",
      "tree": "016630974bdcb00fe529b673f96d389e0fd6dc94",
      "parents": [
        "40b8606253552109815786e5d4b0de98782d31f5",
        "2e532d68a2b3e2aa6b19731501222069735c741c"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Oct 17 09:20:26 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Oct 17 09:20:26 2008 -0700"
      },
      "message": "Merge commit \u0027linus/master\u0027 into merge-linus\n\nConflicts:\n\n\tarch/x86/kvm/i8254.c\n"
    },
    {
      "commit": "dc4304f7deee29fcdf6a2b62f7146ea7f505fd42",
      "tree": "118c222aa98b61a48529b6678b5eb0ee95db211a",
      "parents": [
        "030aebd2e439a2ebcca2b0ce30a02ed84feb043e"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Oct 13 10:32:15 2008 -0400"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Oct 13 11:08:34 2008 -0400"
      },
      "message": "rangetimers: fix the bug reported by Ingo for real\n\nand please hand me a brown paper bag\n\n(thanks to Thomas for pointing out this very obvious bug)\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "030aebd2e439a2ebcca2b0ce30a02ed84feb043e",
      "tree": "2a6e0ce9fbd690dd8d8be1b615dcedeaefffcc23",
      "parents": [
        "2075eb8d95612cadde91ef5be82691d97a2ea6c5"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Oct 11 12:25:45 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Oct 11 12:25:45 2008 -0700"
      },
      "message": "rangetimer: fix BUG_ON reported by Ingo\n\nThere\u0027s a small race/chance that, while hrtimers are enabled globally,\nthey\u0027re later not enabled when we\u0027re calling the hrtimer_interrupt() function,\nwhich then BUG_ON()\u0027s for that. This patch closes that race/gap.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "ccc7dadf736639da86f3e0c86832c11a66fc8221",
      "tree": "3f1c0df0a291fec4a10d72cc1ab278ad81e697c5",
      "parents": [
        "b00c1a99e7758f794923c61e5cd55268d61c9469"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 15:47:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 17:09:14 2008 +0200"
      },
      "message": "hrtimer: prevent migration of per CPU hrtimers\n\nImpact: per CPU hrtimers can be migrated from a dead CPU\n\nThe hrtimer code has no knowledge about per CPU timers, but we need to\nprevent the migration of such timers and warn when such a timer is\nactive at migration time.\n\nExplicitely mark the timers as per CPU and use a more understandable\nmode descriptor for the interrupts safe unlocked callback mode, which\nis used by hrtimer_sleeper and the scheduler code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b00c1a99e7758f794923c61e5cd55268d61c9469",
      "tree": "aace17598caf3dfaa01f8f2f4c6e587bb1f9a2f8",
      "parents": [
        "41e1022eae71707f1ce6801a746f70b1e57b7567"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 15:44:46 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 17:09:14 2008 +0200"
      },
      "message": "hrtimer: mark migration state\n\nImpact: during migration active hrtimers can be seen as inactive\n\nThe migration code removes the hrtimers from the queues of the dead\nCPU and sets the state temporary to INACTIVE. The enqueue code sets it\nto ACTIVE/PENDING again.\n\nPrevent that the wrong state can be seen by using a separate migration\nstate bit.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "41e1022eae71707f1ce6801a746f70b1e57b7567",
      "tree": "97f8a258adcaa0123f143c1f5c53f178d96d76e8",
      "parents": [
        "7659e349672bb0d378ef8d7d62bae4c53d2bdd18"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 14:09:39 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 17:09:14 2008 +0200"
      },
      "message": "hrtimer: fix migration of CB_IRQSAFE_NO_SOFTIRQ hrtimers\n\nImpact: Stale timers after a CPU went offline.\n\ncommit 37bb6cb4097e29ffee970065b74499cbf10603a3\n       hrtimer: unlock hrtimer_wakeup\n\nchanged the hrtimer sleeper callback mode to CB_IRQSAFE_NO_SOFTIRQ due\nto locking problems. A result of this change is that when enqueue is\ncalled for an already expired hrtimer the callback function is not\nlonger called directly from the enqueue code. The normal callers have\nbeen fixed in the code, but the migration code which moves hrtimers\nfrom a dead CPU to a live CPU was not made aware of this.\n\nThis can be fixed by checking the timer state after the call to\nenqueue in the migration code.\n\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7659e349672bb0d378ef8d7d62bae4c53d2bdd18",
      "tree": "d1cf1862c214dc9eb93b46cbc3d123a465ce7b4f",
      "parents": [
        "6ef190cc92e33565accff6a320f0e7d90480bfe7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 14:06:45 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 29 17:09:13 2008 +0200"
      },
      "message": "hrtimer: migrate pending list on cpu offline\n\nImpact: hrtimers which are on the pending list are not migrated at cpu\n\toffline and can be stale forever\n\nAdd the pending list migration when CONFIG_HIGH_RES_TIMERS is enabled\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d7cfb60c5cf904ecf1e0ae23ec178175b86f0d4a",
      "tree": "750200d0bd2e5fc94d574c9d9cd6131f93a279a7",
      "parents": [
        "d82f0b0f6f1a0a25afc288fb7135b1601fe6df18"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Fri Sep 19 13:13:44 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 22 13:52:42 2008 +0200"
      },
      "message": "hrtimer: remove hrtimer_clock_base::get_softirq_time()\n\nPeter Zijlstra noticed this 8 months ago and I just noticed\nit again.\n\nhrtimer_clock_base::get_softirq_time() is currently unused\nin the entire tree. In fact, looking at the logs, it appears\nas if it was never used. Remove it.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2e94d1f71f7e4404d997e6fb4f1618aa147d76f9",
      "tree": "73958a61dffff311cdcdc8edcb7e6a4953150601",
      "parents": [
        "ae4b748e81b7e366f04f55229d5e372e372c33af"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Sep 10 16:06:00 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Thu Sep 11 07:17:49 2008 -0700"
      },
      "message": "hrtimer: peek at the timer queue just before going idle\n\nAs part of going idle, we already look at the time of the next timer event to determine\nwhich C-state to select etc.\n\nThis patch adds functionality that causes the timers that are past their\nsoft expire time, to fire at this time, before we calculate the next wakeup\ntime. This functionality will thus avoid wakeups by running timers before\ngoing idle rather than specially waking up for it.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "3bd012060f962567aadb52b27b2fc8fdc91102c7",
      "tree": "304f42afb3131c785b0b5c224e93a1e31a0b00c8",
      "parents": [
        "96d2ab484e7a9bafdab44b8c7d1ef5944319b18c"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 08 08:58:59 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Thu Sep 11 07:16:55 2008 -0700"
      },
      "message": "hrtimer: make the nanosleep() syscall use the per process slack\n\nThis patch makes the nanosleep() system call use the per process\nslack value; with this users are able to externally control existing\napplications to reduce the wakeup rate.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "da8f2e170ea94cc20f8ebbc8ee8d127edb8f12f1",
      "tree": "08d25027a7769cd250aca5b516a3d8c95e4385be",
      "parents": [
        "2ec02270c00f94b08fddfb68c37510a9fb47ac7c"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Sep 07 10:47:46 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Sep 07 10:58:01 2008 -0700"
      },
      "message": "hrtimer: add a hrtimer_start_range() function\n\nthis patch adds a _range version of hrtimer_start() so that range timers\ncan be created; the hrtimer_start() function is just a wrapper around this.\n\nIn addition, hrtimer_start_expires() will now preserve existing ranges.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "654c8e0b1c623b156c5b92f28d914ab38c9c2c90",
      "tree": "b3b1f8cfa8f3b12170f0d8b8770857182a2f0309",
      "parents": [
        "799b64de256ea68fbb5db63bb55f61c305870643"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 01 15:47:08 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:35:27 2008 -0700"
      },
      "message": "hrtimer: turn hrtimers into range timers\n\nthis patch turns hrtimers into range timers; they have 2 expire points\n1) the soft expire point\n2) the hard expire point\n\nthe kernel will do it\u0027s regular best effort attempt to get the timer run\nat the hard expire point. However, if some other time fires after the soft\nexpire point, the kernel now has the freedom to fire this timer at this point,\nand thus grouping the events and preventing a power-expensive wakeup in the\nfuture.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "cc584b213f252bf698849cf4be2377cd3ec7501a",
      "tree": "621ba11da6a2ab8598f9ed453836cd2c44192260",
      "parents": [
        "23dd7bb09bd8d7efd8a602aed97b93d52f85e675"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 01 15:02:30 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:35:13 2008 -0700"
      },
      "message": "hrtimer: convert kernel/* to the new hrtimer apis\n\nIn order to be able to do range hrtimers we need to use accessor functions\nto the \"expire\" member of the hrtimer struct.\nThis patch converts kernel/* to these accessors.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "7bb67439bf6bd3782f07f1d7be1e63406453d5de",
      "tree": "6fed7b163d96067794b6d704f5d3a35b89a167b4",
      "parents": [
        "70bb08962ea9bd50797ae9f16b2493f5f7c65053"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Aug 31 08:05:58 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:34:53 2008 -0700"
      },
      "message": "select: Introduce a hrtimeout function\n\nThis patch adds a schedule_hrtimeout() function, to be used by select() and\npoll() in a later patch. This function works similar to schedule_timeout()\nin most ways, but takes a timespec rather than jiffies.\n\nWith a lot of contributions/fixes from Thomas\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d82f0b0f6f1a0a25afc288fb7135b1601fe6df18",
      "tree": "29991ab508ccfbacec6f6b2a7df714ee9d5c5fb5",
      "parents": [
        "6a55617ed5d1aa62b850de2cf66f5ede2eef4825"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Aug 20 16:46:04 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 21 13:34:54 2008 +0200"
      },
      "message": "migrate_timers: add comment, use spinlock_irq()\n\nAdd the comment to explain why the double lock in migrate_timers()\ncan\u0027t deadlock.\n\nChange the code to use spinlock_irq() instead of local_irq_disable()\n+ spin_lock().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1a781a777b2f6ac46523fe92396215762ced624d",
      "tree": "4f34bb4aade85c0eb364b53d664ec7f6ab959006",
      "parents": [
        "b9d2252c1e44fa83a4e65fdc9eb93db6297c55af",
        "42a2f217a5e324ed5f2373ab1b7a0a15187c4d6c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "message": "Merge branch \u0027generic-ipi\u0027 into generic-ipi-for-linus\n\nConflicts:\n\n\tarch/powerpc/Kconfig\n\tarch/s390/kernel/time.c\n\tarch/x86/kernel/apic_32.c\n\tarch/x86/kernel/cpu/perfctr-watchdog.c\n\tarch/x86/kernel/i8259_64.c\n\tarch/x86/kernel/ldt.c\n\tarch/x86/kernel/nmi_64.c\n\tarch/x86/kernel/smpboot.c\n\tarch/x86/xen/smp.c\n\tinclude/asm-x86/hw_irq_32.h\n\tinclude/asm-x86/hw_irq_64.h\n\tinclude/asm-x86/mach-default/irq_vectors.h\n\tinclude/asm-x86/mach-voyager/irq_vectors.h\n\tinclude/asm-x86/smp.h\n\tkernel/Makefile\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "da6e88f4963385b1b649b043691d206fbb951913",
      "tree": "779a1a6cf04dad09dee0828ad4ece0927de1b5f3",
      "parents": [
        "61d97f4fcf73d30864a52373a34093be25be6a03",
        "7dc9719682ce8c46215bc9a1bdc7ee0c38ada94b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 10:39:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 10:39:57 2008 -0700"
      },
      "message": "Merge branch \u0027timers/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86: add PCI ID for 6300ESB force hpet\n  x86: add another PCI ID for ICH6 force-hpet\n  kernel-paramaters: document pmtmr\u003d command line option\n  acpi_pm clccksource: fix printk format warning\n  nohz: don\u0027t stop idle tick if softirqs are pending.\n  pmtmr: allow command line override of ioport\n  nohz: reduce jiffies polling overhead\n  hrtimer: Remove unused variables in ktime_divns()\n  hrtimer: remove warning in hres_timers_resume\n  posix-timers: print RT watchdog message\n"
    },
    {
      "commit": "85082fd7cbe3173198aac0eb5e85ab1edcc6352c",
      "tree": "edbc09b7945994f78668d218fa02e991c3b3b365",
      "parents": [
        "666484f0250db2e016948d63b3ef33e202e3b8d0",
        "53ffe3b440aa85af6fc4eda09b2d44bcdd312d4d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 16:06:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 16:06:58 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm\n\n* \u0027for-linus\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm: (241 commits)\n  [ARM] 5171/1: ep93xx: fix compilation of modules using clocks\n  [ARM] 5133/2: at91sam9g20 defconfig file\n  [ARM] 5130/4: Support for the at91sam9g20\n  [ARM] 5160/1: IOP3XX: gpio/gpiolib support\n  [ARM] at91: Fix NAND FLASH timings for at91sam9x evaluation kits.\n  [ARM] 5084/1: zylonite: Register AC97 device\n  [ARM] 5085/2: PXA: Move AC97 over to the new central device declaration model\n  [ARM] 5120/1: pxa: correct platform driver names for PXA25x and PXA27x UDC drivers\n  [ARM] 5147/1: pxaficp_ir: drop pxa_gpio_mode calls, as pin setting\n  [ARM] 5145/1: PXA2xx: provide api to control IrDA pins state\n  [ARM] 5144/1: pxaficp_ir: cleanup includes\n  [ARM] pxa: remove pxa_set_cken()\n  [ARM] pxa: allow clk aliases\n  [ARM] Feroceon: don\u0027t disable BPU on boot\n  [ARM] Orion: LED support for HP mv2120\n  [ARM] Orion: add RD88F5181L-FXO support\n  [ARM] Orion: add RD88F5181L-GE support\n  [ARM] Orion: add Netgear WNR854T support\n  [ARM] s3c2410_defconfig: update for current build\n  [ARM] Acer n30: Minor style and indentation fixes.\n  ...\n"
    },
    {
      "commit": "666484f0250db2e016948d63b3ef33e202e3b8d0",
      "tree": "734f48c10aa364965e4f4642ee3de51669e62be2",
      "parents": [
        "d18bb9a548e550f3ced57618e75085fb3f173133",
        "ace7f1b79670aa0c1d9f4b0442be82e565827333"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 15:28:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 15:28:42 2008 -0700"
      },
      "message": "Merge branch \u0027core/softirq\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core/softirq\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  softirq: remove irqs_disabled warning from local_bh_enable\n  softirq: remove initialization of static per-cpu variable\n  Remove argument from open_softirq which is always NULL\n"
    },
    {
      "commit": "7dc9719682ce8c46215bc9a1bdc7ee0c38ada94b",
      "tree": "0d6054a0862d8cd1ea14464d63bf861667814ab1",
      "parents": [
        "4c2a997c34c0aa952ba9c247b0c2043526054919",
        "900cfa46191a7d87cf1891924cb90499287fd235",
        "857f3fd7a496ddf4329345af65a4a2b16dd25fe8",
        "de32a2434f7ce4600da90ecb44abcdc365ada1d0",
        "81d50bb254ed53a0da45a65988e4e1fa08e8a541"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jul 14 18:09:05 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jul 14 18:09:05 2008 +0200"
      },
      "message": "Merge commit \u0027900cfa46191a7d87cf1891924cb90499287fd235\u0027; branches \u0027timers/nohz\u0027, \u0027timers/clocksource\u0027 and \u0027timers/posixtimers\u0027 into timers/for-linus\n"
    },
    {
      "commit": "f0006314d37639714da9658cf4ff3f1f9f420764",
      "tree": "b8a18e014a40f2f8fd5148aab09c869dfaabd7a9",
      "parents": [
        "a177ba3b7a08beef3f0fe74efa0f90701891945a",
        "1bd55a436f1f90de0e7f476e514e01bd67497b88"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Thu Jul 10 16:41:50 2008 +0100"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Thu Jul 10 16:41:50 2008 +0100"
      },
      "message": "Merge branch \u0027imx\u0027 into devel\n\nConflicts:\n\n\tarch/arm/mm/Kconfig\n"
    },
    {
      "commit": "ee3ece830f6db9837f7ac67008f532a8c1e755f4",
      "tree": "86512e4fe0a03970003260671a3c28045f57f5e8",
      "parents": [
        "6beef7eb0c16b5216814148b04838cfa963d2cb4"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 03 14:31:26 2008 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 03 11:36:48 2008 -0700"
      },
      "message": "hrtimer: prevent migration for raising softirq\n\nDue to a possible deadlock, the waking of the softirq was pushed outside\nof the hrtimer base locks. See commit 0c96c5979a522c3323c30a078a70120e29b5bdbc\n\nUnfortunately this allows the task to migrate after setting up the softirq\nand raising it. Since softirqs run a queue that is per-cpu we may raise the\nsoftirq on the wrong CPU and this will keep the queued softirq task from\nrunning.\n\nTo solve this issue, this patch disables preemption around the releasing\nof the hrtimer lock and raising of the softirq.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d",
      "tree": "3658f893c2f89ea0be4c6cc08aa11fa54476d0f4",
      "parents": [
        "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 09 09:39:44 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:38 2008 +0200"
      },
      "message": "on_each_cpu(): kill unused \u0027retry\u0027 parameter\n\nIt\u0027s not even passed on to smp_call_function() anymore, since that\nwas removed. So kill it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "900cfa46191a7d87cf1891924cb90499287fd235",
      "tree": "0a534ca9ba4266ae053c5554ab756613cee3c3f5",
      "parents": [
        "d031476408ae0f5196e3c579f519dfdefb099b67"
      ],
      "author": {
        "name": "Carlos R. Mafra",
        "email": "crmafra2@gmail.com",
        "time": "Thu May 22 19:25:11 2008 -0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 26 23:26:55 2008 +0200"
      },
      "message": "hrtimer: Remove unused variables in ktime_divns()\n\nThe variables dns and inc are not used, remove them.\n\nSigned-off-by: Carlos R. Mafra \u003ccrmafra@gmail.com\u003e\nCc: tglx@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d031476408ae0f5196e3c579f519dfdefb099b67",
      "tree": "112984e1708664079fb49bd22caec92144b56a04",
      "parents": [
        "e490517a039a99d692cb3a5561941b0a5f576172"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Fri May 23 14:41:19 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 26 23:26:32 2008 +0200"
      },
      "message": "hrtimer: remove warning in hres_timers_resume\n\nhres_timers_resume() warns if there appears to be more than one cpu\nonline.  This warning makes sense when the suspend/resume mechanism\nofflines all cpus but one during the suspend/resume process.\n\nHowever, Xen suspend does not need to offline the other cpus; it\nmerely keeps them tied up in stop_machine() while the virtual machine\nis suspended.  The warning hres_timers_resume issues is therefore\nspurious.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: xen-devel \u003cxen-devel@lists.xensource.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "962cf36c5bf6d2840b8d66ee9a606fae2f540bbd",
      "tree": "263ead6b5224453e8c2a92f1ad9cd2091e003b68",
      "parents": [
        "75d3bce2fc0a80f435fe12f2c9ed2632c8ac29e4"
      ],
      "author": {
        "name": "Carlos R. Mafra",
        "email": "crmafra2@gmail.com",
        "time": "Thu May 15 11:15:37 2008 -0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun May 25 07:43:15 2008 +0200"
      },
      "message": "Remove argument from open_softirq which is always NULL\n\nAs git-grep shows, open_softirq() is always called with the last argument\nbeing NULL\n\nblock/blk-core.c:       open_softirq(BLOCK_SOFTIRQ, blk_done_softirq, NULL);\nkernel/hrtimer.c:       open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq, NULL);\nkernel/rcuclassic.c:    open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);\nkernel/rcupreempt.c:    open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);\nkernel/sched.c: open_softirq(SCHED_SOFTIRQ, run_rebalance_domains, NULL);\nkernel/softirq.c:       open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);\nkernel/softirq.c:       open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL);\nkernel/timer.c: open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);\nnet/core/dev.c: open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL);\nnet/core/dev.c: open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL);\n\nThis observation has already been made by Matthew Wilcox in June 2002\n(http://www.cs.helsinki.fi/linux/linux-kernel/2002-25/0687.html)\n\n\"I notice that none of the current softirq routines use the data element\npassed to them.\"\n\nand the situation hasn\u0027t changed since them. So it appears we can safely\nremove that extra argument to save 128 (54) bytes of kernel data (text).\n\nSigned-off-by: Carlos R. Mafra \u003ccrmafra@ift.unesp.br\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ee9c578527a93c66becb526c4a122c5358a959c5",
      "tree": "bc3334a1986f9387688c0c3ff6144608d730f274",
      "parents": [
        "205bee6ad804d7034773b5978c74dde495df2301"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Sun Apr 20 13:59:33 2008 +0100"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Mon May 12 17:39:14 2008 +0100"
      },
      "message": "dyntick: Remove last reminants of dyntick support\n\nRemove the last reminants of dyntick support from the generic kernel.\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "4346f65426cbceb64794b468e4af6f5632d58c5e",
      "tree": "cd698a910a2526882d542984ccd314d109a5194a",
      "parents": [
        "b66e1f11ebc429569a3784aaf64123633d9e3ed1"
      ],
      "author": {
        "name": "Oliver Hartkopp",
        "email": "oliver@hartkopp.net",
        "time": "Wed Apr 30 23:04:37 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 03 18:11:48 2008 +0200"
      },
      "message": "hrtimer: remove duplicate helper function\n\nThe helper function hrtimer_callback_running() is used in\nkernel/hrtimer.c as well as in the updated net/can/bcm.c which now\nsupports hrtimers. Moving the helper function to hrtimer.h removes the\nduplicate definition in the C-files.\n\nSigned-off-by: Oliver Hartkopp \u003coliver@hartkopp.net\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "237fc6e7a35076f584b9d0794a5204fe4bd9b9e5",
      "tree": "078de7357c118b5bb84eedb38ba829205941b03b",
      "parents": [
        "c6f3a97f86a5c97be0ca255976110bb9c3cfe669"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:04 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "add hrtimer specific debugobjects code\n\nhrtimers have now dynamic users in the network code.  Put them under\ndebugobjects surveillance as well.\n\nAdd calls to the generic object debugging infrastructure and provide fixup\nfunctions which allow to keep the system alive when recoverable problems have\nbeen detected by the object debugging core code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c96c5979a522c3323c30a078a70120e29b5bdbc",
      "tree": "1cd5cabe5a3591ce8f22640675921289298d0c40",
      "parents": [
        "e31a94ed371c70855eb30b77c490d6d85dd4da26"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 28 09:23:24 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 28 22:22:21 2008 +0200"
      },
      "message": "hrtimer: raise softirq unlocked to avoid circular lock dependency\n\nThe scheduler hrtimer bits in 2.6.25 introduced a circular lock\ndependency in a rare code path:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.25-sched-devel.git-x86-latest.git #19\n-------------------------------------------------------\nX/2980 is trying to acquire lock:\n (\u0026rq-\u003erq_lock_key#2){++..}, at: [\u003cffffffff80230146\u003e] task_rq_lock+0x56/0xa0\n\nbut task is already holding lock:\n (\u0026cpu_base-\u003elock){++..}, at: [\u003cffffffff80257ae1\u003e] lock_hrtimer_base+0x31/0x60\n\nwhich lock already depends on the new lock.\n\nThe scenario which leads to this is:\n\nposix-timer signal is delivered\n -\u003e posix-timer is rearmed\n    timer is already expired in hrtimer_enqueue()\n     -\u003e softirq is raised\n\nTo prevent this we need to move the raise of the softirq out of the\nbase-\u003elock protected code path.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n"
    },
    {
      "commit": "d7b41a24bfb5d7fa02f7b49be1293d468814e424",
      "tree": "37c206c5125aca1084b8c4d76f80c5de4dec7c38",
      "parents": [
        "c3bf9bc243092c53946fd6d8ebd6dc2f4e572d48"
      ],
      "author": {
        "name": "Bodo Stroesser",
        "email": "bstroesser@fujitsu-siemens.com",
        "time": "Sat Apr 26 14:10:16 2008 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Apr 27 18:26:43 2008 +0200"
      },
      "message": "hrtimer: timeout too long when using HRTIMER_CB_SOFTIRQ\n\nWhen using hrtimer with timer-\u003ecb_mode \u003d\u003d HRTIMER_CB_SOFTIRQ\nin some cases the clockevent is not programmed.\nThis happens, if:\n - a timer is rearmed while it\u0027s state is HRTIMER_STATE_CALLBACK\n - hrtimer_reprogram() returns -ETIME, when it is called after\n   CALLBACK is finished. This occurs if the new timer-\u003eexpires\n   is in the past when CALLBACK is done.\nIn this case, the timer needs to be removed from the tree and put\nonto the pending list again.\n\nThe patch is against 2.6.22.5, but AFAICS, it is relevant\nfor 2.6.25 also (in run_hrtimer_pending()).\n\nSigned-off-by: Bodo Stroesser \u003cbstroesser@fujitsu-siemens.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "259aae864ceeb2b34e7bafa1ce18d096a357fab2",
      "tree": "5adb390434df0d95497763177d729c5d6cc98d20",
      "parents": [
        "833883d9ac4cfb31c1c4419335e68e6895a05b6b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Apr 19 21:31:26 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 21 07:59:51 2008 +0200"
      },
      "message": "hrtimer: optimize the softirq time optimization\n\nThe previous optimization did not take the case into account where a\nclock provides its own softirq_get_time() function.\n\nCheck for the availablitiy of the clock get time function first and\nthen check if we need to retrieve the time for both clocks via\nhrtimer_softirq_gettime() to avoid a double evaluation of time in that\ncase as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "833883d9ac4cfb31c1c4419335e68e6895a05b6b",
      "tree": "8266c8216aa988aedb6a25925d99c9e269467e7e",
      "parents": [
        "833df317f9ada91488898b005f4641bb674a3bae"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Fri Apr 18 13:39:00 2008 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 21 07:59:51 2008 +0200"
      },
      "message": "hrtimer: reduce calls to hrtimer_get_softirq_time()\n\nIt seems that hrtimer_run_queues() is calling hrtimer_get_softirq_time() more\noften than it needs to.  This can cause frequent contention on systems with\nlarge numbers of processors/cores.\n\nWith this patch, hrtimer_run_queues only calls hrtimer_get_softirq_time() if\nthere is a pending timer in one of the hrtimer bases, and only once.\n\nThis also combines hrtimer_run_queues() and the inline run_hrtimer_queue()\ninto one function.\n\n[ tglx@linutronix.de: coding style ]\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "8e60e05fdc7344415fa69a3883b11f65db967b47",
      "tree": "a0b13c31670221906e8d48cb7bf47dc8f8043918",
      "parents": [
        "0d180406f2914aea3a78ddb880e2fe9ac78a9372"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Apr 04 20:54:10 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Apr 17 12:22:31 2008 +0200"
      },
      "message": "hrtimers: simplify lockdep handling\n\nIn order to avoid the false positive from lockdep, each per-cpu base-\u003elock has\nthe separate lock class and migrate_hrtimers() uses double_spin_lock().\n\nThis is overcomplicated: except for migrate_hrtimers() we never take 2 locks\nat once, and migrate_hrtimers() can use spin_lock_nested().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "029a07e0311c7fef968d44b50beca53969cee40b",
      "tree": "a062017b78508e5d91d7063e24f374c21215ff02",
      "parents": [
        "a332d86d3c262cddd3de0bfa90e1910de60b4f95"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Feb 10 09:17:43 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Apr 17 12:22:30 2008 +0200"
      },
      "message": "hrtimer: use nanosleep specific restart_block fields\n\nConvert all the nanosleep related users of restart_block to the\nnew nanosleep specific restart_block fields.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "63070a79ba482c274bad10ac8c4b587a3e011f2c",
      "tree": "1ecb5e104d343d3e533b2469c54e6a1bcb19a9ac",
      "parents": [
        "5a7780e725d1bb4c3094fcc12f1c5c5faea1e988"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 00:58:36 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 22:08:30 2008 +0100"
      },
      "message": "hrtimer: catch expired CLOCK_REALTIME timers early\n\nA CLOCK_REALTIME timer, which has an absolute expiry time less than\nthe clock realtime offset calls with a negative delta into the clock\nevents code and triggers the WARN_ON() there.\n\nThis is a false positive and needs to be prevented. Check the result\nof timer-\u003eexpires - timer-\u003ebase-\u003eoffset right away and return -ETIME\nright away.\n\nThanks to Frans Pop, who reported the problem and tested the fixes.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Frans Pop \u003celendil@planet.nl\u003e\n"
    },
    {
      "commit": "5a7780e725d1bb4c3094fcc12f1c5c5faea1e988",
      "tree": "50fc5cde427f3854d0b84ba1037fef3fb4693e11",
      "parents": [
        "e760e716d47b48caf98da348368fd41b4a9b9e7e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 13 09:20:43 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 22:08:30 2008 +0100"
      },
      "message": "hrtimer: check relative timeouts for overflow\n\nVarious user space callers ask for relative timeouts. While we fixed\nthat overflow issue in hrtimer_start(), the sites which convert\nrelative user space values to absolute timeouts themself were uncovered.\n\nInstead of putting overflow checks into each place add a function\nwhich does the sanity checking and convert all affected callers to use\nit.\n\nThanks to Frans Pop, who reported the problem and tested the fixes.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Frans Pop \u003celendil@planet.nl\u003e\n\n"
    },
    {
      "commit": "c289b074b66e2e59c65aba73f40b99e797e92d2f",
      "tree": "03ecf2381f33941e8d84e1d5b2d8e106109ea7da",
      "parents": [
        "416529374b4793ba2d2e97e736d108a2e0f3ef07"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 01 20:41:30 2008 +0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Feb 10 10:48:03 2008 +0100"
      },
      "message": "hrtimer: don\u0027t modify restart_block-\u003efn in restart functions\n\nhrtimer_nanosleep_restart() clears/restores restart_block-\u003efn. This is\npointless and complicates its usage. Note that if sys_restart_syscall()\ndoesn\u0027t actually happen, we have a bogus \"pending\" restart-\u003efn anyway,\nthis is harmless.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Pavel Emelyanov \u003cxemul@sw.ru\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Toyo Abe \u003ctoyoa@mvista.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "080344b98805553f9b01de0f59a41b1533036d8d",
      "tree": "df56b37cca4b0ce233967682526158b58fa151b9",
      "parents": [
        "e13a2e61dd5152f5499d2003470acf9c838eab84"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 01 17:29:05 2008 +0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Feb 10 10:48:03 2008 +0100"
      },
      "message": "hrtimer: fix *rmtp handling in hrtimer_nanosleep()\n\nSpotted by Pavel Emelyanov and Alexey Dobriyan.\n\nhrtimer_nanosleep() sets restart_block-\u003earg1 \u003d rmtp, but this rmtp points to\nthe local variable which lives in the caller\u0027s stack frame. This means that\nif sys_restart_syscall() actually happens and it is interrupted as well, we\ndon\u0027t update the user-space variable, but write into the already dead stack\nframe.\n\nIntroduced by commit 04c227140fed77587432667a574b14736a06dd7f\nhrtimer: Rework hrtimer_nanosleep to make sys_compat_nanosleep easier\n\nChange the callers to pass \"__user *rmtp\" to hrtimer_nanosleep(), and change\nhrtimer_nanosleep() to use copy_to_user() to actually update *rmtp.\n\nSmall problem remains. man 2 nanosleep states that *rtmp should be written if\nnanosleep() was interrupted (it says nothing whether it is OK to update *rmtp\nif nanosleep returns 0), but (with or without this patch) we can dirty *rem\neven if nanosleep() returns 0.\n\nNOTE: this patch doesn\u0027t change compat_sys_nanosleep(), because it has other\nbugs. Fixed by the next patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: Pavel Emelyanov \u003cxemul@sw.ru\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Toyo Abe \u003ctoyoa@mvista.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n include/linux/hrtimer.h |    2 -\n kernel/hrtimer.c        |   51 +++++++++++++++++++++++++-----------------------\n kernel/posix-timers.c   |   14 +------------\n 3 files changed, 30 insertions(+), 37 deletions(-)\n\n"
    },
    {
      "commit": "4d672e7ac79b5ec5cdc90e450823441e20464691",
      "tree": "66da3aa0bf7f7ac80376a93f17edbb2246b2df06",
      "parents": [
        "5e05ad7d4e3b11f935998882b5d9c3b257137f1b"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Mon Feb 04 22:27:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:07 2008 -0800"
      },
      "message": "timerfd: new timerfd API\n\nThis is the new timerfd API as it is implemented by the following patch:\n\nint timerfd_create(int clockid, int flags);\nint timerfd_settime(int ufd, int flags,\n\t\t    const struct itimerspec *utmr,\n\t\t    struct itimerspec *otmr);\nint timerfd_gettime(int ufd, struct itimerspec *otmr);\n\nThe timerfd_create() API creates an un-programmed timerfd fd.  The \"clockid\"\nparameter can be either CLOCK_MONOTONIC or CLOCK_REALTIME.\n\nThe timerfd_settime() API give new settings by the timerfd fd, by optionally\nretrieving the previous expiration time (in case the \"otmr\" parameter is not\nNULL).\n\nThe time value specified in \"utmr\" is absolute, if the TFD_TIMER_ABSTIME bit\nis set in the \"flags\" parameter.  Otherwise it\u0027s a relative time.\n\nThe timerfd_gettime() API returns the next expiration time of the timer, or\n{0, 0} if the timerfd has not been set yet.\n\nLike the previous timerfd API implementation, read(2) and poll(2) are\nsupported (with the same interface).  Here\u0027s a simple test program I used to\nexercise the new timerfd APIs:\n\nhttp://www.xmailserver.org/timerfd-test2.c\n\n[akpm@linux-foundation.org: coding-style cleanups]\n[akpm@linux-foundation.org: fix ia64 build]\n[akpm@linux-foundation.org: fix m68k build]\n[akpm@linux-foundation.org: fix mips build]\n[akpm@linux-foundation.org: fix alpha, arm, blackfin, cris, m68k, s390, sparc and sparc64 builds]\n[heiko.carstens@de.ibm.com: fix s390]\n[akpm@linux-foundation.org: fix powerpc build]\n[akpm@linux-foundation.org: fix sparc64 more]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3588a085cd52ef080bf72df772378e1ba6bb292f",
      "tree": "9c013c37431eb3a0d0da3ab14cbc4985600e82a2",
      "parents": [
        "24e1c13c93cbdd05e4b7ea921c0050b036555adc"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Feb 01 17:45:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 01 17:45:13 2008 +0100"
      },
      "message": "hrtimer: fix hrtimer_init_sleeper() users\n\nthis patch:\n\n commit 37bb6cb4097e29ffee970065b74499cbf10603a3\n Author: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n Date:   Fri Jan 25 21:08:32 2008 +0100\n\n     hrtimer: unlock hrtimer_wakeup\n\nBroke hrtimer_init_sleeper() users. It forgot to fix up the futex\ncaller of this function to detect the failed queueing and messed up\nthe do_nanosleep() caller in that it could leak a TASK_INTERRUPTIBLE\nstate.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "37bb6cb4097e29ffee970065b74499cbf10603a3",
      "tree": "406de8e53a02244d9f8998bf5e583d3923b4e5c0",
      "parents": [
        "d3d74453c34f8fd87674a8cf5b8a327c68f22e99"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:32 2008 +0100"
      },
      "message": "hrtimer: unlock hrtimer_wakeup\n\nhrtimer_wakeup creates a\n\n  base-\u003elock\n    rq-\u003elock\n\nlock dependancy. Avoid this by switching to HRTIMER_CB_IRQSAFE_NO_SOFTIRQ\nwhich doesn\u0027t hold base-\u003elock.\n\nThis fully untangles hrtimer locks from the scheduler locks, and allows\nhrtimer usage in the scheduler proper.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d3d74453c34f8fd87674a8cf5b8a327c68f22e99",
      "tree": "cbbd46eb7b81f5c9d39a93604a206ac775084858",
      "parents": [
        "2d44ae4d7135b9aee26439b3523b43473381bc5f"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:31 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:31 2008 +0100"
      },
      "message": "hrtimer: fixup the HRTIMER_CB_IRQSAFE_NO_SOFTIRQ fallback\n\nCurrently all highres\u003doff timers are run from softirq context, but\nHRTIMER_CB_IRQSAFE_NO_SOFTIRQ timers expect to run from irq context.\n\nFix this up by splitting it similar to the highres\u003don case.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d44ae4d7135b9aee26439b3523b43473381bc5f",
      "tree": "ba3afc0f03142d26f9238974dab5b99bf1dca1db",
      "parents": [
        "48d5e258216f1c7713633439beb98a38c7290649"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:31 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:31 2008 +0100"
      },
      "message": "hrtimer: clean up cpu-\u003ebase locking tricks\n\nIn order to more easily allow for the scheduler to use timers, clean up\nthe locking a bit.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0ec160dd48b666ddef39d639323d0da26d0b710d",
      "tree": "545841f7e8c7b9ac7ce932ea7d0d830f400185c3",
      "parents": [
        "a5569a565f7315fe7241cf963f2cc74e53871e11"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Jan 21 17:18:24 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 21 19:39:41 2008 -0800"
      },
      "message": "hrtimer: fix section mismatch\n\nFix section mismatch in hrtimer.c:\n\nWARNING: vmlinux.o(.text+0x50c61): Section mismatch: reference to .init.text: (between \u0027hrtimer_cpu_notify\u0027 and \u0027down_read_trylock\u0027)\n\nNoticed by Johannes Berg and confirmed by Sam Ravnborg.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@akpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62f0f61e6673e67151a7c8c0f9a09c7ea43fe2b5",
      "tree": "c41cc826e53b7ce726e6f343a0ab72ad7e058ca4",
      "parents": [
        "f194d132e4971111f85c18c96067acffb13cee6d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Dec 07 19:16:17 2007 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 07 19:16:17 2007 +0100"
      },
      "message": "hrtimers: avoid overflow for large relative timeouts\n\nRelative hrtimers with a large timeout value might end up as negative\ntimer values, when the current time is added in hrtimer_start().\n\nThis in turn is causing the clockevents_set_next() function to set an\nhuge timeout and sleep for quite a long time when we have a clock\nsource which is capable of long sleeps like HPET. With PIT this almost\ngoes unnoticed as the maximum delta is ~27ms. The non-hrt/nohz code\nsorts this out in the next timer interrupt, so we never noticed that\nproblem which has been there since the first day of hrtimers.\n\nThis bug became more apparent in 2.6.24 which activates HPET on more\nhardware.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "edfed66e17854c312e81a2218f9b0592a555c9a3",
      "tree": "2d5ec7a18aaa06ca2641a02c33df82567750a15a",
      "parents": [
        "129f1d2c5352eea3f7c8af9f8c1006dc0da7be52"
      ],
      "author": {
        "name": "Michael Ellerman",
        "email": "michael@ellerman.id.au",
        "time": "Mon Oct 29 16:35:29 2007 +1100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 29 09:39:38 2007 +0100"
      },
      "message": "Quieten hrtimer printk: \"Switched to high resolution mode ..\"\n\nChange the hrtimer printk \"Switched to high resolution mode ..\" to\nbe KERN_DEBUG, rather than KERN_INFO. If users need to see this they\ncan pass \"loglevel\" or \"debug\" on the command line, or check dmesg.\n\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n kernel/hrtimer.c |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\n"
    }
  ],
  "next": "6506f2aa6670da9970ca13daccd466ad7ce2cd29"
}
