)]}'
{
  "log": [
    {
      "commit": "c28800a9c3caaf387d85ac665a25ebe99e480295",
      "tree": "401ba805709a65a9f5c1919b3dc763c70b64b38f",
      "parents": [
        "ce8f55c2a0ff652480c12a4f1f22ff5ce15e3a22",
        "27c9cd7e601632b3794e1c3344d37b86917ffb43"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 28 08:43:52 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 28 08:43:52 2011 -0800"
      },
      "message": "Merge branch \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\n* \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  hrtimer: Fix extra wakeups from __remove_hrtimer()\n  timekeeping: add arch_offset hook to ktime_get functions\n  clocksource: Avoid selecting mult values that might overflow when adjusted\n  time: Improve documentation of timekeeeping_adjust()\n"
    },
    {
      "commit": "27c9cd7e601632b3794e1c3344d37b86917ffb43",
      "tree": "dc6f3d9accdf9c7fd8fd80dd81ff2ed7e07304e7",
      "parents": [
        "d004e024058a0eaca097513ce62cbcf978913e0a"
      ],
      "author": {
        "name": "Jeff Ohlstein",
        "email": "johlstei@codeaurora.org",
        "time": "Fri Nov 18 15:47:10 2011 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Nov 19 12:17:37 2011 +0100"
      },
      "message": "hrtimer: Fix extra wakeups from __remove_hrtimer()\n\n__remove_hrtimer() attempts to reprogram the clockevent device when\nthe timer being removed is the next to expire. However,\n__remove_hrtimer() reprograms the clockevent *before* removing the\ntimer from the timerqueue and thus when hrtimer_force_reprogram()\nfinds the next timer to expire it finds the timer we\u0027re trying to\nremove.\n\nThis is especially noticeable when the system switches to NOHz mode\nand the system tick is removed. The timer tick is removed from the\nsystem but the clockevent is programmed to wakeup in another HZ\nanyway.\n\nSilence the extra wakeup by removing the timer from the timerqueue\nbefore calling hrtimer_force_reprogram() so that we actually program\nthe clockevent for the next timer to expire.\n\nThis was broken by 998adc3 \"hrtimers: Convert hrtimers to use\ntimerlist infrastructure\".\n\nSigned-off-by: Jeff Ohlstein \u003cjohlstei@codeaurora.org\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/1321660030-8520-1-git-send-email-johlstei@codeaurora.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "9984de1a5a8a96275fcab818f7419af5a3c86e71",
      "tree": "1935d411752707a1621c5caf64f75dfe105beb3a",
      "parents": [
        "7c77509c542927ee2a3c8812fad84957e51bf67d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon May 23 14:51:41 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:12 2011 -0400"
      },
      "message": "kernel: Map most files to use export.h instead of module.h\n\nThe changed files were only including linux/module.h for the\nEXPORT_SYMBOL infrastructure, and nothing else.  Revector them\nonto the isolated export header for faster compile times.\n\nNothing to see here but a whole lot of instances of:\n\n  -#include \u003clinux/module.h\u003e\n  +#include \u003clinux/export.h\u003e\n\nThis commit is only changing the kernel dir; next targets\nwill probably be mm, fs, the arch dirs, etc.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "90ff1f30c0f401e325d6b2747618b7e3a0addaf8",
      "tree": "3b85646d25e9d27fdf6e568a145b85b2c9c79e90",
      "parents": [
        "51b550a41c2ac0373b42f4e211f2df113b735b0a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 25 23:08:17 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 15:31:58 2011 -0700"
      },
      "message": "hrtimers: Fix typo causing erratic timers\n\ncommit 9ec2690758a5 (\"timerfd: Manage cancelable timers in timerfd\")\nintroduced a CONFIG_HIGHRES_TIMERS (should be CONFIG_HIGH_RES_TIMERS)\ntypo, which caused applications depending on CLOCK_REALTIME timers to\nbecome sluggy due to the fact that the time base of the realtime\ntimers was not updated when the wall clock time was set.\n\nThis causes anything from 100% CPU use for some applications to odd\ndelays and hickups.\n\nReported-bisected-and-tested-by: Anca Emanuel \u003canca.emanuel@gmail.com\u003e\nTested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nFatfingered-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68fa61c026057a39d6ccb850aa8785043afbee02",
      "tree": "aa8a96849d4bd9b1e46c602d398cda0e72d4115c",
      "parents": [
        "ab8177bc53e8ae3a3ba6d200ce2c2dae263f7ee5"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 20 23:14:04 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 23 13:59:54 2011 +0200"
      },
      "message": "hrtimers: Reorder clock bases\n\nThe ordering of the clock bases is historical due to the\nCLOCK_REALTIME and CLOCK_MONOTONIC constants. Now the hrtimer bases\nhave their own enumeration due to the gap between CLOCK_MONOTONIC and\nCLOCK_BOOTTIME. So we can be more clever as most timers end up on the\nCLOCK_MONOTONIC base due to the virtue of POSIX declaring that\nrelative CLOCK_REALTIME timers are not affected by time changes. In\ndesktop environments this is slowly changing as applications switch to\nabsolute timers, but I\u0027ve observed empty CLOCK_REALTIME bases often\nenough. There is no performance penalty or overhead when\nCLOCK_REALTIME timers are active, but in case they are not we don\u0027t\nskip over a full cache line.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "ab8177bc53e8ae3a3ba6d200ce2c2dae263f7ee5",
      "tree": "c8b370496497b4f96d6a17da906bdd9314e9a090",
      "parents": [
        "f24444b01bf6c51c300fd3ffc73423383d747882"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 20 13:05:15 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 23 13:59:54 2011 +0200"
      },
      "message": "hrtimers: Avoid touching inactive timer bases\n\nInstead of iterating over all possible timer bases avoid it by marking\nthe active bases in the cpu base.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "9ec2690758a5467f24beb301cca5098078073bba",
      "tree": "e5bc78f690d12635a56460ea6f54b49318221dc8",
      "parents": [
        "250f972d85effad5b6e10da4bbd877e6a4b503b6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 20 16:18:50 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 23 13:59:53 2011 +0200"
      },
      "message": "timerfd: Manage cancelable timers in timerfd\n\nPeter is concerned about the extra scan of CLOCK_REALTIME_COS in the\ntimer interrupt. Yes, I did not think about it, because the solution\nwas so elegant. I didn\u0027t like the extra list in timerfd when it was\nproposed some time ago, but with a rcu based list the list walk it\u0027s\nless horrible than the original global lock, which was held over the\nlist iteration.\n\nRequested-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "99ee5315dac6211e972fa3f23bcc9a0343ff58c4",
      "tree": "6663d6ceaabcb9bac03193e2781cdbe6a139f70c",
      "parents": [
        "b12a03ce4880bd13786a98db6de494a3e0123129"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 27 14:16:42 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 02 21:39:15 2011 +0200"
      },
      "message": "timerfd: Allow timers to be cancelled when clock was set\n\nSome applications must be aware of clock realtime being set\nbackward. A simple example is a clock applet which arms a timer for\nthe next minute display. If clock realtime is set backward then the\napplet displays a stale time for the amount of time which the clock\nwas set backwards. Due to that applications poll the time because we\ndon\u0027t have an interface.\n\nExtend the timerfd interface by adding a flag which puts the timer\nonto a different internal realtime clock. All timers on this clock are\nexpired whenever the clock was set.\n\nThe timerfd core records the monotonic offset when the timer is\ncreated. When the timer is armed, then the current offset is compared\nto the previous recorded offset. When it has changed, then\ntimerfd_settime returns -ECANCELED. When a timer is read the offset is\ncompared and if it changed -ECANCELED returned to user space. Periodic\ntimers are not rearmed in the cancelation case.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Friesen \u003cchris.friesen@genband.com\u003e\nTested-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nReviewed-by: Alexander Shishkin \u003cvirtuoso@slind.org\u003e\nLink: http://lkml.kernel.org/r/%3Calpine.LFD.2.02.1104271359580.3323%40ionos%3E\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b12a03ce4880bd13786a98db6de494a3e0123129",
      "tree": "2a8f2cf0d1d6749b4a33cc07c9b7839a4a139e9a",
      "parents": [
        "942c3c5c329274fa6de5998cb911cf3d0a42d0b1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 02 16:48:57 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 02 21:37:58 2011 +0200"
      },
      "message": "hrtimers: Prepare for cancel on clock was set timers\n\nMake clock_was_set() unconditional and rename hres_timers_resume to\nhrtimers_resume. This is a preparatory patch for hrtimers which are\ncancelled when clock realtime was set.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "942c3c5c329274fa6de5998cb911cf3d0a42d0b1",
      "tree": "7c2f44ba209f8ac66e11872c3d3410684b22d6f6",
      "parents": [
        "3687a2c0d81b23d30db4384ca804a701fc686e16"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Mon May 02 15:24:27 2011 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 02 21:37:57 2011 +0200"
      },
      "message": "hrtimer: Make lookup table const\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nLink: http://lkml.kernel.org/r/%3C1304364267-14489-1-git-send-email-vapier%40gentoo.org%3E\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ce31332d3c77532d6ea97ddcb475a2b02dd358b4",
      "tree": "273c3664420d8fbd08346d9298c5010640ca3f71",
      "parents": [
        "f945a3d9600633de589ce698233b34ff6ad57e55"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Apr 29 00:02:00 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Apr 29 10:57:11 2011 +0200"
      },
      "message": "hrtimer: Initialize CLOCK_ID to HRTIMER_BASE table statically\n\nSedat and Bruno reported RCU stalls which turned out to be caused by\nthe following;\n\nsched_init() calls init_rt_bandwidth() which calls hrtimer_init()\n_BEFORE_ hrtimers_init() is called. While not entirely correct this\nworked because hrtimer_init() only accessed statically initialized\ndata (hrtimer_bases.clock_base[CLOCK_MONOTONIC])\n\nCommit e06383db9 (hrtimers: extend hrtimer base code to handle more\nthen 2 clockids) added an indirection to the hrtimer_bases.clock_base\nlookup to avoid gap handling in the hot path. The table which is used\nfor the translataion from CLOCK_ID to HRTIMER_BASE index is\ninitialized at runtime in hrtimers_init(). So the early call of the\nscheduler code translates CLOCK_MONOTONIC to HRTIMER_BASE_REALTIME.\n\nThus the rt_bandwith timer ends up on CLOCK_REALTIME. If the timer is\narmed and the wall clock time is set (e.g. ntpdate in the early boot\nprocess - which also gives the problem deterministic behaviour\ni.e. magic recovery after N hours), then the timer ends up with an\nexpiry time far into the future. That breaks the RT throttler\nmechanism as rt runtime is accumulated and never cleared, so the rt\nthrottler detects a false cpu hog condition and blocks all RT tasks\nuntil the timer finally expires. That in turn stalls the RCU thread of\nTINYRCU which leads to an huge amount of RCU callbacks piling up.\n\nMake the translation table statically initialized, so we are back to\nthe status of \u003c\u003d 2.6.39.\n\nReported-and-tested-by: Sedat Dilek \u003csedat.dilek@gmail.com\u003e\nReported-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nCc: John stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/%3Calpine.LFD.2.02.1104282353140.3005%40ionos%3E\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "420c1c572d4ceaa2f37b6311b7017ac6cf049fe2",
      "tree": "df04e6b4b756b7a46d9887462d54a3ad0e1f91d5",
      "parents": [
        "9620639b7ea3843983f4ced8b4c81eb4d8974838",
        "6e6823d17b157f185be09f4c70181299f9273f0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 18:53:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 18:53:35 2011 -0700"
      },
      "message": "Merge branch \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (62 commits)\n  posix-clocks: Check write permissions in posix syscalls\n  hrtimer: Remove empty hrtimer_init_hres_timer()\n  hrtimer: Update hrtimer-\u003estate documentation\n  hrtimer: Update base[CLOCK_BOOTTIME].offset correctly\n  timers: Export CLOCK_BOOTTIME via the posix timers interface\n  timers: Add CLOCK_BOOTTIME hrtimer base\n  time: Extend get_xtime_and_monotonic_offset() to also return sleep\n  time: Introduce get_monotonic_boottime and ktime_get_boottime\n  hrtimers: extend hrtimer base code to handle more then 2 clockids\n  ntp: Remove redundant and incorrect parameter check\n  mn10300: Switch do_timer() to xtimer_update()\n  posix clocks: Introduce dynamic clocks\n  posix-timers: Cleanup namespace\n  posix-timers: Add support for fd based clocks\n  x86: Add clock_adjtime for x86\n  posix-timers: Introduce a syscall for clock tuning.\n  time: Splitout compat timex accessors\n  ntp: Add ADJ_SETOFFSET mode bit\n  time: Introduce timekeeping_inject_offset\n  posix-timer: Update comment\n  ...\n\nFix up new system-call-related conflicts in\n\tarch/x86/ia32/ia32entry.S\n\tarch/x86/include/asm/unistd_32.h\n\tarch/x86/include/asm/unistd_64.h\n\tarch/x86/kernel/syscall_table_32.S\n(name_to_handle_at()/open_by_handle_at() vs clock_adjtime()), and some\ndue to movement of get_jiffies_64() in:\n\tkernel/time.c\n"
    },
    {
      "commit": "a9e7acfff0a279792918b7b0de74106e576e9988",
      "tree": "07e17df82bad2863213160b629a3bfa0cd702019",
      "parents": [
        "53370d2e8c0382e3e2aa76def93365ed674e7fc7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 10 19:12:24 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 10 19:15:59 2011 +0100"
      },
      "message": "hrtimer: Remove empty hrtimer_init_hres_timer()\n\nLeftover from earlier implementation. All empty, remove it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "997772884036e6e121de39322179989154437d9f",
      "tree": "618ef63c45e16892ea26a99cafef6b0442e8eca1",
      "parents": [
        "a5abba989deceb731047425812d268daf7536575"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Mon Mar 07 09:58:33 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 08 16:10:38 2011 +0100"
      },
      "message": "debugobjects: Add hint for better object identification\n\nIn complex subsystems like mac80211 structures can contain several\ntimers and work structs, so identifying a specific instance from the\ncall trace and object type output of debugobjects can be hard.\n\nAllow the subsystems which support debugobjects to provide a hint\nfunction. This function returns a pointer to a kernel address\n(preferrably the objects callback function) which is printed along\nwith the debugobjects type.\n\nAdd hint methods for timer_list, work_struct and hrtimer.\n\n[ tglx: Massaged changelog, made it compile ]\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nLKML-Reference: \u003c20110307085809.GA9334@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5cd10e7946d28cfc42442fee2e6c757e244d756e",
      "tree": "3886b72694e0edb7334f9a17ac9325f8b068c6e6",
      "parents": [
        "7fdd7f89006dd5a4c702fa0ce0c272345fa44ae0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 02 16:58:30 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 02 17:20:00 2011 +0100"
      },
      "message": "hrtimer: Update base[CLOCK_BOOTTIME].offset correctly\n\nWe calculate the current time of each clock base by adding an offset\nto clock_monotonic. The offset for the clock bases is set in\nretrigger_next_event() which is called when we switch a cpu to highres\nmode or when the clock was set.\n\nAdd the missing update for clock boottime.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\n"
    },
    {
      "commit": "70a08cca1227dc31c784ec930099a4417a06e7d0",
      "tree": "d813ae86435a3104b66d18ee746d0f3ecc73a14a",
      "parents": [
        "314ac37150011ebb398f522db528d2dbcc611189"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Tue Feb 15 10:45:16 2011 -0800"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Feb 21 12:53:08 2011 -0800"
      },
      "message": "timers: Add CLOCK_BOOTTIME hrtimer base\n\nCLOCK_MONOTONIC stops while the system is in suspend. This is because\nto applications system suspend is invisible. However, there is a\ngrowing set of applications that are wanting to be suspend-aware,\nbut do not want to deal with the complications of CLOCK_REALTIME\n(which might jump around if settimeofday is called).\n\nFor these applications, I propose a new clockid: CLOCK_BOOTTIME.\nCLOCK_BOOTTIME is idential to CLOCK_MONOTONIC, except it also\nincludes any time spent in suspend.\n\nThis patch add hrtimer base for CLOCK_BOOTTIME, using\nget_monotonic_boottime/ktime_get_boottime, to allow\nin kernel users to set timers against.\n\nCC: Jamie Lokier \u003cjamie@shareable.org\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Alexander Shishkin \u003cvirtuoso@slind.org\u003e\nCC: Arve Hjønnevåg \u003carve@android.com\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "314ac37150011ebb398f522db528d2dbcc611189",
      "tree": "0731fced7713d3889bd783577673068a6bc93796",
      "parents": [
        "abb3a4ea2e0ea7114a4475745da2f32bd9ad5b73"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Feb 14 18:43:08 2011 -0800"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Feb 21 12:53:07 2011 -0800"
      },
      "message": "time: Extend get_xtime_and_monotonic_offset() to also return sleep\n\nExtend get_xtime_and_monotonic_offset to\nget_xtime_and_monotonic_and_sleep_offset().\n\nCC: Jamie Lokier \u003cjamie@shareable.org\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Alexander Shishkin \u003cvirtuoso@slind.org\u003e\nCC: Arve Hjønnevåg \u003carve@android.com\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "e06383db9ec591696a06654257474b85bac1f8cb",
      "tree": "ee541661450da71e204370c84a15bae64847c368",
      "parents": [
        "db1c1cce4a653dcbe6949c72ae7b9f42cab1b929"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Tue Dec 14 19:37:07 2010 -0800"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Feb 21 12:53:04 2011 -0800"
      },
      "message": "hrtimers: extend hrtimer base code to handle more then 2 clockids\n\nThe hrtimer code is written mainly with CLOCK_REALTIME and CLOCK_MONOTONIC\nin mind. These are clockids 0 and 1 resepctively. However, if we are\nto introduce any new hrtimer bases, using new clockids, we have to skip\nthe cputimers (clockids 2,3) as well as other clockids that may not impelement\ntimers.\n\nThis patch adds a little bit of indirection between the clockid and\nthe base, so that we can extend the base by one when we add\na new clockid at number 7 or so.\n\nCC: Jamie Lokier \u003cjamie@shareable.org\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Alexander Shishkin \u003cvirtuoso@slind.org\u003e\nCC: Arve Hjønnevåg \u003carve@android.com\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "48cf76f7104f655bbd48a75c7759dce82c3e1ab6",
      "tree": "2b3cf138fd277ba9c551d75ccbe575a40974560a",
      "parents": [
        "fbad1ea94159a71bc0f68b00e57ae803606af9fb"
      ],
      "author": {
        "name": "Torben Hohn",
        "email": "torbenh@gmx.de",
        "time": "Thu Jan 27 15:59:05 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 31 14:55:42 2011 +0100"
      },
      "message": "time: Provide get_xtime_and_monotonic_offset()\n\nThe hrtimer code accesses timekeeping variables under\nxtime_lock. Provide a sensible accessor function and use it.\n\n[ tglx: Removed the conditionals, unused variable, fixed codingstyle\n  \tand massaged changelog ]\n\nSigned-off-by: Torben Hohn \u003ctorbenh@gmx.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: johnstul@us.ibm.com\nCc: yong.zhang0@gmail.com\nCc: hch@infradead.org\nLKML-Reference: \u003c20110127145905.23248.30458.stgit@localhost\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "72eb6a791459c87a0340318840bb3bd9252b627b",
      "tree": "3bfb8ad99f9c7e511f37f72d57b56a2cea06d753",
      "parents": [
        "23d69b09b78c4876e134f104a3814c30747c53f1",
        "55ee4ef30241a62b700f79517e6d5ef2ddbefa67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (30 commits)\n  gameport: use this_cpu_read instead of lookup\n  x86: udelay: Use this_cpu_read to avoid address calculation\n  x86: Use this_cpu_inc_return for nmi counter\n  x86: Replace uses of current_cpu_data with this_cpu ops\n  x86: Use this_cpu_ops to optimize code\n  vmstat: User per cpu atomics to avoid interrupt disable / enable\n  irq_work: Use per cpu atomics instead of regular atomics\n  cpuops: Use cmpxchg for xchg to avoid lock semantics\n  x86: this_cpu_cmpxchg and this_cpu_xchg operations\n  percpu: Generic this_cpu_cmpxchg() and this_cpu_xchg support\n  percpu,x86: relocate this_cpu_add_return() and friends\n  connector: Use this_cpu operations\n  xen: Use this_cpu_inc_return\n  taskstats: Use this_cpu_ops\n  random: Use this_cpu_inc_return\n  fs: Use this_cpu_inc_return in buffer.c\n  highmem: Use this_cpu_xx_return() operations\n  vmstat: Use this_cpu_inc_return for vm statistics\n  x86: Support for this_cpu_add, sub, dec, inc_return\n  percpu: Generic support for this_cpu_add, sub, dec, inc_return\n  ...\n\nFixed up conflicts: in arch/x86/kernel/{apic/nmi.c, apic/x2apic_uv_x.c, process.c}\nas per Tejun.\n"
    },
    {
      "commit": "dda5f0a372873bca5f0b1d1866d7784dffd8b675",
      "tree": "1f745951b51ef9dcd127ca3c65ecb1d2ce4967c2",
      "parents": [
        "65b2074f84be2287e020839e93b4cdaaf60eb37c",
        "88606e80da0e8d862a42ee19e5bb60b01b940ea7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 10:42:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 10:42:43 2011 -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  MAINTAINERS: Update timer related entries\n  timers: Use this_cpu_read\n  timerqueue: Make timerqueue_getnext() static inline\n  hrtimer: fix timerqueue conversion flub\n  hrtimers: Convert hrtimers to use timerlist infrastructure\n  timers: Fixup allmodconfig build issue\n  timers: Rename timerlist infrastructure to timerqueue\n  timers: Introduce timerlist infrastructure.\n  hrtimer: Remove stale comment on curr_timer\n  timer: Warn when del_timer_sync() is called in hardirq context\n  timer: Del_timer_sync() can be used in softirq context\n  timer: Make try_to_del_timer_sync() the same on SMP and UP\n  posix-timers: Annotate lock_timer()\n  timer: Permit statically-declared work with deferrable timers\n  time: Use ARRAY_SIZE macro in timecompare.c\n  timer: Initialize the field slack of timer_list\n  timer_list: Remove alignment padding on 64 bit when CONFIG_TIMER_STATS\n  time: Compensate for rounding on odd-frequency clocksources\n\nFix up trivial conflict in MAINTAINERS\n"
    },
    {
      "commit": "43b210139a3cb09d49a18f0dc9bed3674c55f235",
      "tree": "6cda53059da232c588aae64811015bdacef3c160",
      "parents": [
        "43d547f9ce039e5a9d2401c8f2fbfa29932b6b4f"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Dec 22 19:01:47 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 19:01:47 2010 +0100"
      },
      "message": "hrtimer: fix a typo in comment\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "909ea96468096b07fbb41aaf69be060d92bd9271",
      "tree": "a7e015edd96b5f674874fe78cdd889769e130a2a",
      "parents": [
        "780f36d8b3fa9572f731d4fb85067b2e45e6f993"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Dec 08 16:22:55 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:07:19 2010 +0100"
      },
      "message": "core: Replace __get_cpu_var with __this_cpu_read if not used for an address.\n\n__get_cpu_var() can be replaced with this_cpu_read and will then use a\nsingle read instruction with implied address calculation to access the\ncorrect per cpu instance.\n\nHowever, the address of a per cpu variable passed to __this_cpu_read()\ncannot be determined (since it\u0027s an implied address conversion through\nsegment prefixes).  Therefore apply this only to uses of __get_cpu_var\nwhere the address of the variable is not used.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "b007c389d3e09b823eccda1503390fa2a9adca0d",
      "tree": "34431af3282f6b3892e092cc77b507a92a66724e",
      "parents": [
        "998adc3dda59f811966b3ccb21eb223680b25ec4"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Fri Dec 10 22:19:53 2010 -0800"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Fri Dec 10 22:19:53 2010 -0800"
      },
      "message": "hrtimer: fix timerqueue conversion flub\n\nIn converting the hrtimers to timerqueue, I missed\na spot in hrtimer_run_queues where we loop running\ntimers. We end up not pulling the new next value out\nand instead just use the last next value, causing\nboot time hangs in some cases.\n\nThe proper fix is to pull timerqueue_getnext each iteration\ninstead of using a local next value.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "998adc3dda59f811966b3ccb21eb223680b25ec4",
      "tree": "791597e9afe00877a3fb1a71c1178e8573767647",
      "parents": [
        "9bb99b147018945366c763b3d4d7008927dc8557"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Sep 20 19:19:17 2010 -0700"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Fri Dec 10 11:54:35 2010 -0800"
      },
      "message": "hrtimers: Convert hrtimers to use timerlist infrastructure\n\nConverts the hrtimer code to use the new timerlist infrastructure\n\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nLKML Reference: \u003c1290136329-18291-3-git-send-email-john.stultz@linaro.org\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "f13d4f979c518119bba5439dd2364d76d31dcd3f",
      "tree": "952be8d19f13a3f0942c67c1f0d400d8dab472ea",
      "parents": [
        "53eeb64e808971207350386121f4bab12fa2f45f"
      ],
      "author": {
        "name": "Salman Qazi",
        "email": "sqazi@google.com",
        "time": "Tue Oct 12 07:25:19 2010 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 14 13:29:59 2010 +0200"
      },
      "message": "hrtimer: Preserve timer state in remove_hrtimer()\n\nThe race is described as follows:\n\nCPU X                                 CPU Y\nremove_hrtimer\n// state \u0026 QUEUED \u003d\u003d 0\ntimer-\u003estate \u003d CALLBACK\nunlock timer base\ntimer-\u003ef(n) //very long\n                                  hrtimer_start\n                                    lock timer base\n                                    remove_hrtimer // no effect\n                                    hrtimer_enqueue\n                                    timer-\u003estate \u003d CALLBACK |\n                                                   QUEUED\n                                    unlock timer base\n                                  hrtimer_start\n                                    lock timer base\n                                    remove_hrtimer\n                                        mode \u003d INACTIVE\n                                        // CALLBACK bit lost!\n                                    switch_hrtimer_base\n                                            CALLBACK bit not set:\n                                                    timer-\u003ebase\n                                                    changes to a\n                                                    different CPU.\nlock this CPU\u0027s timer base\n\nThe bug was introduced with commit ca109491f (hrtimer: removing all ur\ncallback modes) in 2.6.29\n\n[ tglx: Feed new state via local variable and add a comment. ]\n\nSigned-off-by: Salman Qazi \u003csqazi@google.com\u003e\nCc: akpm@linux-foundation.org\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20101012142351.8485.21823.stgit@dungbeetle.mtv.corp.google.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b3bd3de66f60df4c9a2076e2886a622458929056",
      "tree": "d0b1fa885acfa96536cf74f487acb28d63442b83",
      "parents": [
        "ef5dc121d5a0bb1fa477c5395277259f07d318a3"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Tue Aug 10 14:17:51 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Sep 05 14:36:58 2010 +0200"
      },
      "message": "gcc-4.6: kernel/*: Fix unused but set warnings\n\nNo real bugs I believe, just some dead code.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: andi@firstfloor.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "7dc9719682ce8c46215bc9a1bdc7ee0c38ada94b"
}
