)]}'
{
  "log": [
    {
      "commit": "6201b4d61fbf194df6371fb3376c5026cb8f5eec",
      "tree": "fe26631f72f263256eecfe127346687b423b2e21",
      "parents": [
        "e2e680fb7566880f7210cadf628c092c0433971c"
      ],
      "author": {
        "name": "Viresh Kumar",
        "email": "viresh.kumar@linaro.org",
        "time": "Tue Mar 18 16:26:07 2014 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 20 12:35:46 2014 +0100"
      },
      "message": "timer: Remove code redundancy while calling get_nohz_timer_target()\n\nThere are only two users of get_nohz_timer_target(): timer and hrtimer. Both\ncall it under same circumstances, i.e.\n\n\t#ifdef CONFIG_NO_HZ_COMMON\n\t       if (!pinned \u0026\u0026 get_sysctl_timer_migration() \u0026\u0026 idle_cpu(this_cpu))\n\t               return get_nohz_timer_target();\n\t#endif\n\nSo, it makes more sense to get all this as part of get_nohz_timer_target()\ninstead of duplicating code at two places. For this another parameter is\nrequired to be passed to this routine, pinned.\n\nSigned-off-by: Viresh Kumar \u003cviresh.kumar@linaro.org\u003e\nCc: linaro-kernel@lists.linaro.org\nCc: fweisbec@gmail.com\nCc: peterz@infradead.org\nLink: http://lkml.kernel.org/r/1e1b53537217d58d48c2d7a222a9c3ac47d5b64c.1395140107.git.viresh.kumar@linaro.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "aab03e05e8f7e26f51dee792beddcb5cca9215a5",
      "tree": "bae7f6033c849e7ca77a98783c732caea412ae75",
      "parents": [
        "d50dde5a10f305253cbc3855307f608f8a3c5f73"
      ],
      "author": {
        "name": "Dario Faggioli",
        "email": "raistlin@linux.it",
        "time": "Thu Nov 28 11:14:43 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jan 13 13:41:06 2014 +0100"
      },
      "message": "sched/deadline: Add SCHED_DEADLINE structures \u0026 implementation\n\nIntroduces the data structures, constants and symbols needed for\nSCHED_DEADLINE implementation.\n\nCore data structure of SCHED_DEADLINE are defined, along with their\ninitializers. Hooks for checking if a task belong to the new policy\nare also added where they are needed.\n\nAdds a scheduling class, in sched/dl.c and a new policy called\nSCHED_DEADLINE. It is an implementation of the Earliest Deadline\nFirst (EDF) scheduling algorithm, augmented with a mechanism (called\nConstant Bandwidth Server, CBS) that makes it possible to isolate\nthe behaviour of tasks between each other.\n\nThe typical -deadline task will be made up of a computation phase\n(instance) which is activated on a periodic or sporadic fashion. The\nexpected (maximum) duration of such computation is called the task\u0027s\nruntime; the time interval by which each instance need to be completed\nis called the task\u0027s relative deadline. The task\u0027s absolute deadline\nis dynamically calculated as the time instant a task (better, an\ninstance) activates plus the relative deadline.\n\nThe EDF algorithms selects the task with the smallest absolute\ndeadline as the one to be executed first, while the CBS ensures each\ntask to run for at most its runtime every (relative) deadline\nlength time interval, avoiding any interference between different\ntasks (bandwidth isolation).\nThanks to this feature, also tasks that do not strictly comply with\nthe computational model sketched above can effectively use the new\npolicy.\n\nTo summarize, this patch:\n - introduces the data structures, constants and symbols needed;\n - implements the core logic of the scheduling algorithm in the new\n   scheduling class file;\n - provides all the glue code between the new scheduling class and\n   the core scheduler and refines the interactions between sched/dl\n   and the other existing scheduling classes.\n\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Michael Trimarchi \u003cmichael@amarulasolutions.com\u003e\nSigned-off-by: Fabio Checconi \u003cfchecconi@gmail.com\u003e\nSigned-off-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/1383831828-15501-4-git-send-email-juri.lelli@gmail.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "0db0628d90125193280eabb501c94feaf48fa9ab",
      "tree": "0e0ef0c4eac101d25a3bd125c4a9200ac4d294c0",
      "parents": [
        "49fb4c6290c70c418a5c25eee996d6b55ea132d6"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Jun 19 14:53:51 2013 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 14 19:36:59 2013 -0400"
      },
      "message": "kernel: delete __cpuinit usage from all core kernel files\n\nThe __cpuinit type of throwaway sections might have made sense\nsome time ago when RAM was more constrained, but now the savings\ndo not offset the cost and complications.  For example, the fix in\ncommit 5e427ec2d0 (\"x86: Fix bit corruption at CPU resume time\")\nis a good example of the nasty type of bugs that can be created\nwith improper use of the various __init prefixes.\n\nAfter a discussion on LKML[1] it was decided that cpuinit should go\nthe way of devinit and be phased out.  Once all the users are gone,\nwe can then finally remove the macros themselves from linux/init.h.\n\nThis removes all the uses of the __cpuinit macros from C files in\nthe core kernel directories (kernel, init, lib, mm, and include)\nthat don\u0027t really have a specific maintainer.\n\n[1] https://lkml.org/lkml/2013/5/20/589\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "21884a83b2192a00885d7244a1dda32debd2fbc7",
      "tree": "e00267bbcac32f0114b3d21a20c61107d2314c40",
      "parents": [
        "8b70a90cabafb6a6e1a0d3f838b38355fe48337e",
        "73b0cd674ccc64c921e25bd7154f26d342116539"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 06 14:09:38 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 06 14:09:38 2013 -0700"
      },
      "message": "Merge branch \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer core updates from Thomas Gleixner:\n \"The timer changes contain:\n\n   - posix timer code consolidation and fixes for odd corner cases\n\n   - sched_clock implementation moved from ARM to core code to avoid\n     duplication by other architectures\n\n   - alarm timer updates\n\n   - clocksource and clockevents unregistration facilities\n\n   - clocksource/events support for new hardware\n\n   - precise nanoseconds RTC readout (Xen feature)\n\n   - generic support for Xen suspend/resume oddities\n\n   - the usual lot of fixes and cleanups all over the place\n\n  The parts which touch other areas (ARM/XEN) have been coordinated with\n  the relevant maintainers.  Though this results in an handful of\n  trivial to solve merge conflicts, which we preferred over nasty cross\n  tree merge dependencies.\n\n  The patches which have been committed in the last few days are bug\n  fixes plus the posix timer lot.  The latter was in akpms queue and\n  next for quite some time; they just got forgotten and Frederic\n  collected them last minute.\"\n\n* \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (59 commits)\n  hrtimer: Remove unused variable\n  hrtimers: Move SMP function call to thread context\n  clocksource: Reselect clocksource when watchdog validated high-res capability\n  posix-cpu-timers: don\u0027t account cpu timer after stopped thread runtime accounting\n  posix_timers: fix racy timer delta caching on task exit\n  posix-timers: correctly get dying task time sample in posix_cpu_timer_schedule()\n  selftests: add basic posix timers selftests\n  posix_cpu_timers: consolidate expired timers check\n  posix_cpu_timers: consolidate timer list cleanups\n  posix_cpu_timer: consolidate expiry time type\n  tick: Sanitize broadcast control logic\n  tick: Prevent uncontrolled switch to oneshot mode\n  tick: Make oneshot broadcast robust vs. CPU offlining\n  x86: xen: Sync the CMOS RTC as well as the Xen wallclock\n  x86: xen: Sync the wallclock when the system time is set\n  timekeeping: Indicate that clock was set in the pvclock gtod notifier\n  timekeeping: Pass flags instead of multiple bools to timekeeping_update()\n  xen: Remove clock_was_set() call in the resume path\n  hrtimers: Support resuming with two or more CPUs online (but stopped)\n  timer: Fix jiffies wrap behavior of round_jiffies_common()\n  ...\n"
    },
    {
      "commit": "73b0cd674ccc64c921e25bd7154f26d342116539",
      "tree": "93fbfc08581cdc6dd8ee2e89b876703b1bb3c675",
      "parents": [
        "5ec2481b7b47a4005bb446d176e5d0257400c77d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jul 06 10:34:00 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jul 06 10:34:00 2013 +0200"
      },
      "message": "hrtimer: Remove unused variable\n\nSigh, should have noticed myself.\n\nReported-by: fengguang.wu@intel.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5ec2481b7b47a4005bb446d176e5d0257400c77d",
      "tree": "e7ae9e34dc6b1db5149669947b6cd93814f447ec",
      "parents": [
        "332962f2c88868ed3cdab466870baaa34dd58612"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 05 12:09:18 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 05 17:25:58 2013 +0200"
      },
      "message": "hrtimers: Move SMP function call to thread context\n\nsmp_call_function_* must not be called from softirq context.\n\nBut clock_was_set() which calls on_each_cpu() is called from softirq\ncontext to implement a delayed clock_was_set() for the timer interrupt\nhandler. Though that almost never gets invoked. A recent change in the\nresume code uses the softirq based delayed clock_was_set to support\nXens resume mechanism.\n\nlinux-next contains a new warning which warns if smp_call_function_*\nis called from softirq context which gets triggered by that Xen\nchange.\n\nFix this by moving the delayed clock_was_set() call to a work context.\n\nReported-and-tested-by: Artem Savkov \u003cartem.savkov@gmail.com\u003e\nReported-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nCc: David Vrabel \u003cdavid.vrabel@citrix.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e,\nCc: Konrad Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: xen-devel@lists.xen.org\nCc: stable@vger.kernel.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7c4c3a0f18ba57ea2a2985034532303d2929902a",
      "tree": "553f2901ae4fd0fede367ece9ec9c30106ff744f",
      "parents": [
        "9e04d3804d3ac97d8c03a41d78d0f0674b5d01e1"
      ],
      "author": {
        "name": "David Vrabel",
        "email": "david.vrabel@citrix.com",
        "time": "Thu Jun 27 11:35:44 2013 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 28 23:15:06 2013 +0200"
      },
      "message": "hrtimers: Support resuming with two or more CPUs online (but stopped)\n\nhrtimers_resume() only reprograms the timers for the current CPU as it\nassumes that all other CPUs are offline at this point in the resume\nprocess. If other CPUs are online then their timers will not be\ncorrected and they may fire at the wrong time.\n\nWhen running as a Xen guest, this assumption is not true.  Non-boot\nCPUs are only stopped with IRQs disabled instead of offlining them.\nThis is a performance optimization as disabling the CPUs would add an\nunacceptable amount of additional downtime during a live migration (\u003e\n200 ms for a 4 VCPU guest).\n\nhrtimers_resume() cannot call on_each_cpu(retrigger_next_event,...)\nas the other CPUs will be stopped with IRQs disabled.  Instead, defer\nthe call to the next softirq.\n\n[ tglx: Separated the xen change out ]\n\nSigned-off-by: David Vrabel \u003cdavid.vrabel@citrix.com\u003e\nCc: Konrad Rzeszutek Wilk  \u003ckonrad.wilk@oracle.com\u003e\nCc: John Stultz  \u003cjohn.stultz@linaro.org\u003e\nCc: \u003cxen-devel@lists.xen.org\u003e\nLink: http://lkml.kernel.org/r/1372329348-20841-2-git-send-email-david.vrabel@citrix.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b0f8c44f30e58c3aaaaaf864d5c3d3cc2e8a4c2d",
      "tree": "23a6403b011b528059efe7a3c66ad509b34c4091",
      "parents": [
        "56467c7697f5aef6974501fbe2c3e63674583549"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon May 06 23:50:19 2013 +0000"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Sun May 12 14:16:23 2013 +0200"
      },
      "message": "nanosleep: use freezable blocking call\n\nAvoid waking up every thread sleeping in a nanosleep call during\nsuspend and resume by calling a freezable blocking call.  Previous\npatches modified the freezer to avoid sending wakeups to threads\nthat are blocked in freezable blocking calls.\n\nThis call was selected to be converted to a freezable call because\nit doesn\u0027t hold any locks or release any resources when interrupted\nthat might be needed by another freezing task or a kernel driver\nduring suspend, and is a common site where idle userspace tasks are\nblocked.\n\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Colin Cross \u003cccross@android.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crafael.j.wysocki@intel.com\u003e\n"
    },
    {
      "commit": "534c97b0950b1967bca1c753aeaed32f5db40264",
      "tree": "9421d26e4f6d479d1bc32b036a731b065daab0fa",
      "parents": [
        "64049d1973c1735f543eb7a55653e291e108b0cb",
        "265f22a975c1e4cc3a4d1f94a3ec53ffbb6f5b9f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 05 13:23:27 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 05 13:23:27 2013 -0700"
      },
      "message": "Merge branch \u0027timers-nohz-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull \u0027full dynticks\u0027 support from Ingo Molnar:\n \"This tree from Frederic Weisbecker adds a new, (exciting! :-) core\n  kernel feature to the timer and scheduler subsystems: \u0027full dynticks\u0027,\n  or CONFIG_NO_HZ_FULL\u003dy.\n\n  This feature extends the nohz variable-size timer tick feature from\n  idle to busy CPUs (running at most one task) as well, potentially\n  reducing the number of timer interrupts significantly.\n\n  This feature got motivated by real-time folks and the -rt tree, but\n  the general utility and motivation of full-dynticks runs wider than\n  that:\n\n   - HPC workloads get faster: CPUs running a single task should be able\n     to utilize a maximum amount of CPU power.  A periodic timer tick at\n     HZ\u003d1000 can cause a constant overhead of up to 1.0%.  This feature\n     removes that overhead - and speeds up the system by 0.5%-1.0% on\n     typical distro configs even on modern systems.\n\n   - Real-time workload latency reduction: CPUs running critical tasks\n     should experience as little jitter as possible.  The last remaining\n     source of kernel-related jitter was the periodic timer tick.\n\n   - A single task executing on a CPU is a pretty common situation,\n     especially with an increasing number of cores/CPUs, so this feature\n     helps desktop and mobile workloads as well.\n\n  The cost of the feature is mainly related to increased timer\n  reprogramming overhead when a CPU switches its tick period, and thus\n  slightly longer to-idle and from-idle latency.\n\n  Configuration-wise a third mode of operation is added to the existing\n  two NOHZ kconfig modes:\n\n   - CONFIG_HZ_PERIODIC: [formerly !CONFIG_NO_HZ], now explicitly named\n     as a config option.  This is the traditional Linux periodic tick\n     design: there\u0027s a HZ tick going on all the time, regardless of\n     whether a CPU is idle or not.\n\n   - CONFIG_NO_HZ_IDLE: [formerly CONFIG_NO_HZ\u003dy], this turns off the\n     periodic tick when a CPU enters idle mode.\n\n   - CONFIG_NO_HZ_FULL: this new mode, in addition to turning off the\n     tick when a CPU is idle, also slows the tick down to 1 Hz (one\n     timer interrupt per second) when only a single task is running on a\n     CPU.\n\n  The .config behavior is compatible: existing !CONFIG_NO_HZ and\n  CONFIG_NO_HZ\u003dy settings get translated to the new values, without the\n  user having to configure anything.  CONFIG_NO_HZ_FULL is turned off by\n  default.\n\n  This feature is based on a lot of infrastructure work that has been\n  steadily going upstream in the last 2-3 cycles: related RCU support\n  and non-periodic cputime support in particular is upstream already.\n\n  This tree adds the final pieces and activates the feature.  The pull\n  request is marked RFC because:\n\n   - it\u0027s marked 64-bit only at the moment - the 32-bit support patch is\n     small but did not get ready in time.\n\n   - it has a number of fresh commits that came in after the merge\n     window.  The overwhelming majority of commits are from before the\n     merge window, but still some aspects of the tree are fresh and so I\n     marked it RFC.\n\n   - it\u0027s a pretty wide-reaching feature with lots of effects - and\n     while the components have been in testing for some time, the full\n     combination is still not very widely used.  That it\u0027s default-off\n     should reduce its regression abilities and obviously there are no\n     known regressions with CONFIG_NO_HZ_FULL\u003dy enabled either.\n\n   - the feature is not completely idempotent: there is no 100%\n     equivalent replacement for a periodic scheduler/timer tick.  In\n     particular there\u0027s ongoing work to map out and reduce its effects\n     on scheduler load-balancing and statistics.  This should not impact\n     correctness though, there are no known regressions related to this\n     feature at this point.\n\n   - it\u0027s a pretty ambitious feature that with time will likely be\n     enabled by most Linux distros, and we\u0027d like you to make input on\n     its design/implementation, if you dislike some aspect we missed.\n     Without flaming us to crisp! :-)\n\n  Future plans:\n\n   - there\u0027s ongoing work to reduce 1Hz to 0Hz, to essentially shut off\n     the periodic tick altogether when there\u0027s a single busy task on a\n     CPU.  We\u0027d first like 1 Hz to be exposed more widely before we go\n     for the 0 Hz target though.\n\n   - once we reach 0 Hz we can remove the periodic tick assumption from\n     nr_running\u003e\u003d2 as well, by essentially interrupting busy tasks only\n     as frequently as the sched_latency constraints require us to do -\n     once every 4-40 msecs, depending on nr_running.\n\n  I am personally leaning towards biting the bullet and doing this in\n  v3.10, like the -rt tree this effort has been going on for too long -\n  but the final word is up to you as usual.\n\n  More technical details can be found in Documentation/timers/NO_HZ.txt\"\n\n* \u0027timers-nohz-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (39 commits)\n  sched: Keep at least 1 tick per second for active dynticks tasks\n  rcu: Fix full dynticks\u0027 dependency on wide RCU nocb mode\n  nohz: Protect smp_processor_id() in tick_nohz_task_switch()\n  nohz_full: Add documentation.\n  cputime_nsecs: use math64.h for nsec resolution conversion helpers\n  nohz: Select VIRT_CPU_ACCOUNTING_GEN from full dynticks config\n  nohz: Reduce overhead under high-freq idling patterns\n  nohz: Remove full dynticks\u0027 superfluous dependency on RCU tree\n  nohz: Fix unavailable tick_stop tracepoint in dynticks idle\n  nohz: Add basic tracing\n  nohz: Select wide RCU nocb for full dynticks\n  nohz: Disable the tick when irq resume in full dynticks CPU\n  nohz: Re-evaluate the tick for the new task after a context switch\n  nohz: Prepare to stop the tick on irq exit\n  nohz: Implement full dynticks kick\n  nohz: Re-evaluate the tick from the scheduler IPI\n  sched: New helper to prevent from stopping the tick in full dynticks\n  sched: Kick full dynticks CPU that have more than one task enqueued.\n  perf: New helper to prevent full dynticks CPUs from stopping tick\n  perf: Kick full dynticks CPU if events rotation is needed\n  ...\n"
    },
    {
      "commit": "c032862fba51a3ca504752d3a25186b324c5ce83",
      "tree": "955dc2ba4ab3df76ecc2bb780ee84aca04967e8d",
      "parents": [
        "fda76e074c7737fc57855dd17c762e50ed526052",
        "8700c95adb033843fc163d112b9d21d4fda78018"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 02 17:37:49 2013 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 02 17:54:19 2013 +0200"
      },
      "message": "Merge commit \u00278700c95adb03\u0027 into timers/nohz\n\nThe full dynticks tree needs the latest RCU and sched\nupstream updates in order to fix some dependencies.\n\nMerge a common upstream merge point that has these\nupdates.\n\nConflicts:\n\tinclude/linux/perf_event.h\n\tkernel/rcutree.h\n\tkernel/rcutree_plugin.h\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "6402c7dc2a19c19bd8cdc7d80878b850da418942",
      "tree": "cda2ea2df40442e2aa016119f3548cc504127ea8",
      "parents": [
        "77c675ba18836802f6b73d2d773481d06ebc0f04",
        "60d509fa6a9c4653a86ad830e4c4b30360b23f0e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 24 20:33:46 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 24 20:33:54 2013 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into timers/core\nReason: Get upstream fixes before adding conflicting code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "51fd36f3fad8447c487137ae26b9d0b3ce77bb25",
      "tree": "737cecc049ec3b4682ffc3b4d4bc44d1cebe7f61",
      "parents": [
        "8f294b5a139ee4b75e890ad5b443c93d1e558a8b"
      ],
      "author": {
        "name": "David Engraf",
        "email": "david.engraf@sysgo.com",
        "time": "Tue Mar 19 13:29:55 2013 +0100"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Apr 08 13:21:20 2013 -0700"
      },
      "message": "hrtimer: Fix ktime_add_ns() overflow on 32bit architectures\n\nOne can trigger an overflow when using ktime_add_ns() on a 32bit\narchitecture not supporting CONFIG_KTIME_SCALAR.\n\nWhen passing a very high value for u64 nsec, e.g. 7881299347898368000\nthe do_div() function converts this value to seconds (7881299347) which\nis still to high to pass to the ktime_set() function as long. The result\nin is a negative value.\n\nThe problem on my system occurs in the tick-sched.c,\ntick_nohz_stop_sched_tick() when time_delta is set to\ntimekeeping_max_deferment(). The check for time_delta \u003c KTIME_MAX is\nvalid, thus ktime_add_ns() is called with a too large value resulting in\na negative expire value. This leads to an endless loop in the ticker code:\n\ntime_delta: 7881299347898368000\nexpires \u003d ktime_add_ns(last_update, time_delta)\nexpires: negative value\n\nThis fix caps the value to KTIME_MAX.\n\nThis error doesn\u0027t occurs on 64bit or architectures supporting\nCONFIG_KTIME_SCALAR (e.g. ARM, x86-32).\n\nCc: stable@vger.kernel.org\nSigned-off-by: David Engraf \u003cdavid.engraf@sysgo.com\u003e\n[jstultz: Minor tweaks to commit message \u0026 header]\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "8f294b5a139ee4b75e890ad5b443c93d1e558a8b",
      "tree": "51a934a157c83cd36274bee920b80c686de464e0",
      "parents": [
        "ca4523cda429712fc135c5db50920d90eb776a6c"
      ],
      "author": {
        "name": "Prarit Bhargava",
        "email": "prarit@redhat.com",
        "time": "Mon Apr 08 08:47:15 2013 -0400"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Apr 08 13:20:44 2013 -0700"
      },
      "message": "hrtimer: Add expiry time overflow check in hrtimer_interrupt\n\nThe settimeofday01 test in the LTP testsuite effectively does\n\n        gettimeofday(current time);\n        settimeofday(Jan 1, 1970 + 100 seconds);\n        settimeofday(current time);\n\nThis test causes a stack trace to be displayed on the console during the\nsetting of timeofday to Jan 1, 1970 + 100 seconds:\n\n[  131.066751] ------------[ cut here ]------------\n[  131.096448] WARNING: at kernel/time/clockevents.c:209 clockevents_program_event+0x135/0x140()\n[  131.104935] Hardware name: Dinar\n[  131.108150] Modules linked in: sg nfsv3 nfs_acl nfsv4 auth_rpcgss nfs dns_resolver fscache lockd sunrpc nf_conntrack_netbios_ns nf_conntrack_broadcast ipt_MASQUERADE ip6table_mangle ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 iptable_nat nf_nat_ipv4 nf_nat iptable_mangle ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ebtable_filter ebtables ip6table_filter ip6_tables iptable_filter ip_tables kvm_amd kvm sp5100_tco bnx2 i2c_piix4 crc32c_intel k10temp fam15h_power ghash_clmulni_intel amd64_edac_mod pcspkr serio_raw edac_mce_amd edac_core microcode xfs libcrc32c sr_mod sd_mod cdrom ata_generic crc_t10dif pata_acpi radeon i2c_algo_bit drm_kms_helper ttm drm ahci pata_atiixp libahci libata usb_storage i2c_core dm_mirror dm_region_hash dm_log dm_mod\n[  131.176784] Pid: 0, comm: swapper/28 Not tainted 3.8.0+ #6\n[  131.182248] Call Trace:\n[  131.184684]  \u003cIRQ\u003e  [\u003cffffffff810612af\u003e] warn_slowpath_common+0x7f/0xc0\n[  131.191312]  [\u003cffffffff8106130a\u003e] warn_slowpath_null+0x1a/0x20\n[  131.197131]  [\u003cffffffff810b9fd5\u003e] clockevents_program_event+0x135/0x140\n[  131.203721]  [\u003cffffffff810bb584\u003e] tick_program_event+0x24/0x30\n[  131.209534]  [\u003cffffffff81089ab1\u003e] hrtimer_interrupt+0x131/0x230\n[  131.215437]  [\u003cffffffff814b9600\u003e] ? cpufreq_p4_target+0x130/0x130\n[  131.221509]  [\u003cffffffff81619119\u003e] smp_apic_timer_interrupt+0x69/0x99\n[  131.227839]  [\u003cffffffff8161805d\u003e] apic_timer_interrupt+0x6d/0x80\n[  131.233816]  \u003cEOI\u003e  [\u003cffffffff81099745\u003e] ? sched_clock_cpu+0xc5/0x120\n[  131.240267]  [\u003cffffffff814b9ff0\u003e] ? cpuidle_wrap_enter+0x50/0xa0\n[  131.246252]  [\u003cffffffff814b9fe9\u003e] ? cpuidle_wrap_enter+0x49/0xa0\n[  131.252238]  [\u003cffffffff814ba050\u003e] cpuidle_enter_tk+0x10/0x20\n[  131.257877]  [\u003cffffffff814b9c89\u003e] cpuidle_idle_call+0xa9/0x260\n[  131.263692]  [\u003cffffffff8101c42f\u003e] cpu_idle+0xaf/0x120\n[  131.268727]  [\u003cffffffff815f8971\u003e] start_secondary+0x255/0x257\n[  131.274449] ---[ end trace 1151a50552231615 ]---\n\nWhen we change the system time to a low value like this, the value of\ntimekeeper-\u003eoffs_real will be a negative value.\n\nIt seems that the WARN occurs because an hrtimer has been started in the time\nbetween the releasing of the timekeeper lock and the IPI call (via a call to\non_each_cpu) in clock_was_set() in the do_settimeofday() code.  The end result\nis that a REALTIME_CLOCK timer has been added with softexpires \u003d expires \u003d\nKTIME_MAX.  The hrtimer_interrupt() fires/is called and the loop at\nkernel/hrtimer.c:1289 is executed.  In this loop the code subtracts the\nclock base\u0027s offset (which was set to timekeeper-\u003eoffs_real in\ndo_settimeofday()) from the current hrtimer_cpu_base-\u003eexpiry value (which\nwas KTIME_MAX):\n\n\tKTIME_MAX - (a negative value) \u003d overflow\n\nA simple check for an overflow can resolve this problem.  Using KTIME_MAX\ninstead of the overflow value will result in the hrtimer function being run,\nand the reprogramming of the timer after that.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@vger.kernel.org\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\n[jstultz: Tweaked commit subject]\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "3451d0243c3cdfd729b36f9684a14659d4895ca3",
      "tree": "5307f4492708ae089dd0a6d81b54f9e606707ca8",
      "parents": [
        "ab71d36ddb9e60d4ddb28a187718815d38c3c666"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Aug 10 23:21:01 2011 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Apr 03 13:56:03 2013 +0200"
      },
      "message": "nohz: Rename CONFIG_NO_HZ to CONFIG_NO_HZ_COMMON\n\nWe are planning to convert the dynticks Kconfig options layout\ninto a choice menu. The user must be able to easily pick\nany of the following implementations: constant periodic tick,\nidle dynticks, full dynticks.\n\nAs this implies a mutual exclusion, the two dynticks implementions\nneed to converge on the selection of a common Kconfig option in order\nto ease the sharing of a common infrastructure.\n\nIt would thus seem pretty natural to reuse CONFIG_NO_HZ to\nthat end. It already implements all the idle dynticks code\nand the full dynticks depends on all that code for now.\nSo ideally the choice menu would propose CONFIG_NO_HZ_IDLE and\nCONFIG_NO_HZ_EXTENDED then both would select CONFIG_NO_HZ.\n\nOn the other hand we want to stay backward compatible: if\nCONFIG_NO_HZ is set in an older config file, we want to\nenable CONFIG_NO_HZ_IDLE by default.\n\nBut we can\u0027t afford both at the same time or we run into\na circular dependency:\n\n1) CONFIG_NO_HZ_IDLE and CONFIG_NO_HZ_EXTENDED both select\n   CONFIG_NO_HZ\n2) If CONFIG_NO_HZ is set, we default to CONFIG_NO_HZ_IDLE\n\nWe might be able to support that from Kconfig/Kbuild but it\nmay not be wise to introduce such a confusing behaviour.\n\nSo to solve this, create a new CONFIG_NO_HZ_COMMON option\nwhich gathers the common code between idle and full dynticks\n(that common code for now is simply the idle dynticks code)\nand select it from their referring Kconfig.\n\nThen we\u0027ll later create CONFIG_NO_HZ_IDLE and map CONFIG_NO_HZ\nto it for backward compatibility.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Kevin Hilman \u003ckhilman@linaro.org\u003e\nCc: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0ed2aef9b3bffe598045b62a31a50d912eee92d8",
      "tree": "d7dda12955c838f531727d2775d09c4e04bdf066",
      "parents": [
        "cfea7d7e452f57682a0bb55a55e9f79c569558c2",
        "8011657b9e63cb2e914b9a0f75233b910c1854cb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 03 12:27:29 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 03 12:27:29 2013 +0200"
      },
      "message": "Merge branch \u0027fortglx/3.10/time\u0027 of git://git.linaro.org/people/jstultz/linux into timers/core\n"
    },
    {
      "commit": "84cc8fd2fe65866e49d70b38b3fdf7219dd92fe0",
      "tree": "86dd3b3814647c5b2dcb443ca2b20dca00e54a20",
      "parents": [
        "a12183c62717ac4579319189a00f5883a18dff08"
      ],
      "author": {
        "name": "Michael Bohan",
        "email": "mbohan@codeaurora.org",
        "time": "Tue Mar 19 19:19:25 2013 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 26 21:34:57 2013 +0100"
      },
      "message": "hrtimer: Don\u0027t reinitialize a cpu_base lock on CPU_UP\n\nThe current code makes the assumption that a cpu_base lock won\u0027t be\nheld if the CPU corresponding to that cpu_base is offline, which isn\u0027t\nalways true.\n\nIf a hrtimer is not queued, then it will not be migrated by\nmigrate_hrtimers() when a CPU is offlined. Therefore, the hrtimer\u0027s\ncpu_base may still point to a CPU which has subsequently gone offline\nif the timer wasn\u0027t enqueued at the time the CPU went down.\n\nNormally this wouldn\u0027t be a problem, but a cpu_base\u0027s lock is blindly\nreinitialized each time a CPU is brought up. If a CPU is brought\nonline during the period that another thread is performing a hrtimer\noperation on a stale hrtimer, then the lock will be reinitialized\nunder its feet, and a SPIN_BUG() like the following will be observed:\n\n\u003c0\u003e[   28.082085] BUG: spinlock already unlocked on CPU#0, swapper/0/0\n\u003c0\u003e[   28.087078]  lock: 0xc4780b40, value 0x0 .magic: dead4ead, .owner: \u003cnone\u003e/-1, .owner_cpu: -1\n\u003c4\u003e[   42.451150] [\u003cc0014398\u003e] (unwind_backtrace+0x0/0x120) from [\u003cc0269220\u003e] (do_raw_spin_unlock+0x44/0xdc)\n\u003c4\u003e[   42.460430] [\u003cc0269220\u003e] (do_raw_spin_unlock+0x44/0xdc) from [\u003cc071b5bc\u003e] (_raw_spin_unlock+0x8/0x30)\n\u003c4\u003e[   42.469632] [\u003cc071b5bc\u003e] (_raw_spin_unlock+0x8/0x30) from [\u003cc00a9ce0\u003e] (__hrtimer_start_range_ns+0x1e4/0x4f8)\n\u003c4\u003e[   42.479521] [\u003cc00a9ce0\u003e] (__hrtimer_start_range_ns+0x1e4/0x4f8) from [\u003cc00aa014\u003e] (hrtimer_start+0x20/0x28)\n\u003c4\u003e[   42.489247] [\u003cc00aa014\u003e] (hrtimer_start+0x20/0x28) from [\u003cc00e6190\u003e] (rcu_idle_enter_common+0x1ac/0x320)\n\u003c4\u003e[   42.498709] [\u003cc00e6190\u003e] (rcu_idle_enter_common+0x1ac/0x320) from [\u003cc00e6440\u003e] (rcu_idle_enter+0xa0/0xb8)\n\u003c4\u003e[   42.508259] [\u003cc00e6440\u003e] (rcu_idle_enter+0xa0/0xb8) from [\u003cc000f268\u003e] (cpu_idle+0x24/0xf0)\n\u003c4\u003e[   42.516503] [\u003cc000f268\u003e] (cpu_idle+0x24/0xf0) from [\u003cc06ed3c0\u003e] (rest_init+0x88/0xa0)\n\u003c4\u003e[   42.524319] [\u003cc06ed3c0\u003e] (rest_init+0x88/0xa0) from [\u003cc0c00978\u003e] (start_kernel+0x3d0/0x434)\n\nAs an example, this particular crash occurred when hrtimer_start() was\nexecuted on CPU #0. The code locked the hrtimer\u0027s current cpu_base\ncorresponding to CPU #1. CPU #0 then tried to switch the hrtimer\u0027s\ncpu_base to an optimal CPU which was online. In this case, it selected\nthe cpu_base corresponding to CPU #3.\n\nBefore it could proceed, CPU #1 came online and reinitialized the\nspinlock corresponding to its cpu_base. Thus now CPU #0 held a lock\nwhich was reinitialized. When CPU #0 finally ended up unlocking the\nold cpu_base corresponding to CPU #1 so that it could switch to CPU\n#3, we hit this SPIN_BUG() above while in switch_hrtimer_base().\n\nCPU #0                            CPU #1\n----                              ----\n...                               \u003coffline\u003e\nhrtimer_start()\nlock_hrtimer_base(base #1)\n...                               init_hrtimers_cpu()\nswitch_hrtimer_base()             ...\n...                               raw_spin_lock_init(\u0026cpu_base-\u003elock)\nraw_spin_unlock(\u0026cpu_base-\u003elock)  ...\n\u003cspin_bug\u003e\n\nSolve this by statically initializing the lock.\n\nSigned-off-by: Michael Bohan \u003cmbohan@codeaurora.org\u003e\nLink: http://lkml.kernel.org/r/1363745965-23475-1-git-send-email-mbohan@codeaurora.org\nCc: stable@vger.kernel.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "8ffbc7d9ff0064ce000788272a609fa79d06ead1",
      "tree": "b34bf84f43d59410a7dc5f474a9aa8459c7bfeb6",
      "parents": [
        "19919226c3f20e6bf5de3df96432ce80ffd63ff2"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney.cavm@gmail.com",
        "time": "Wed Mar 13 12:20:38 2013 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 25 10:46:59 2013 +0100"
      },
      "message": "hrtimer/trivial: Fix comment text in hrtimer.c\n\nThe comments mention HRTIMER_ABS and HRTIMER_REL, these symbols don\u0027t\nexist, the proper names are HRTIMER_MODE_ABS and HRTIMER_MODE_REL.\n\nSigned-off-by: David Daney \u003cdavid.daney@cavium.com\u003e\nCc: Jiri Kosina \u003ctrivial@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1363202438-21234-1-git-send-email-ddaney.cavm@gmail.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "90adda98b89aaf68b06014ecf805b6c477daa19b",
      "tree": "c50d47c4c344774205569ce42e13d16a8174b02e",
      "parents": [
        "1ff3c9677bff7e468e0c487d0ffefe4e901d33f4"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Mon Jan 21 17:00:11 2013 -0800"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Fri Mar 22 16:19:59 2013 -0700"
      },
      "message": "hrtimer: Add hrtimer support for CLOCK_TAI\n\nAdd hrtimer support for CLOCK_TAI, as well as posix timer interfaces.\n\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "266d7ad7f4fe2f44b91561f5b812115c1b3018ab",
      "tree": "45acf12d5cb170205ccffe24b9f24672ff8bff2e",
      "parents": [
        "bcbd818c069b9e1bf82517401225b152a33968e2",
        "36dfbbf136db0d645bacfd42ce7d9d6928ea532d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:05:45 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:05:45 2013 -0800"
      },
      "message": "Merge branch \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer changes from Ingo Molnar:\n \"Main changes:\n\n   - ntp: Add CONFIG_RTC_SYSTOHC: a generic RTC driver facility\n     complementing the existing CONFIG_RTC_HCTOSYS, which uses NTP to\n     keep the hardware clock updated.\n\n   - posix-timers: Fix clock_adjtime to always return timex data on\n     success.  This is changing the ABI, but no breakage was expected\n     and found - caution is warranted nevertheless.\n\n   - platform persistent clock improvements/cleanups.\n\n   - clockevents: refactor timer broadcast handling to be more generic\n     and less duplicated with matching architecture code (mostly ARM\n     motivated.)\n\n   - various fixes and cleanups\"\n\n* \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  timers/x86/hpet: Use HPET_COUNTER to specify the hpet counter in vread_hpet()\n  posix-cpu-timers: Fix nanosleep task_struct leak\n  clockevents: Fix generic broadcast for FEAT_C3STOP\n  time, Fix setting of hardware clock in NTP code\n  hrtimer: Prevent hrtimer_enqueue_reprogram race\n  clockevents: Add generic timer broadcast function\n  clockevents: Add generic timer broadcast receiver\n  timekeeping: Switch HAS_PERSISTENT_CLOCK to ALWAYS_USE_PERSISTENT_CLOCK\n  x86/time/rtc: Don\u0027t print extended CMOS year when reading RTC\n  x86: Select HAS_PERSISTENT_CLOCK on x86\n  timekeeping: Add CONFIG_HAS_PERSISTENT_CLOCK option\n  rtc: Skip the suspend/resume handling if persistent clock exist\n  timekeeping: Add persistent_clock_exist flag\n  posix-timers: Fix clock_adjtime to always return timex data on success\n  Round the calculated scale factor in set_cyc2ns_scale()\n  NTP: Add a CONFIG_RTC_SYSTOHC configuration\n  MAINTAINERS: Update John Stultz\u0027s email\n  time: create __getnstimeofday for WARNless calls\n"
    },
    {
      "commit": "8bd75c77b7c6a3954140dd2e20346aef3efe4a35",
      "tree": "10e0d451a58aeb6c8f48b871a848276bf3a8a359",
      "parents": [
        "ce0dbbbb30aee6a835511d5be446462388ba9eee"
      ],
      "author": {
        "name": "Clark Williams",
        "email": "williams@redhat.com",
        "time": "Thu Feb 07 09:47:07 2013 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Thu Feb 07 20:51:08 2013 +0100"
      },
      "message": "sched/rt: Move rt specific bits into new header file\n\nMove rt scheduler definitions out of include/linux/sched.h into\nnew file include/linux/sched/rt.h\n\nSigned-off-by: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLink: http://lkml.kernel.org/r/20130207094707.7b9f825f@riff.lan\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "cf4aebc292fac7f34f8345664320e9d4a42ca76c",
      "tree": "6eceb9bb2d8382c4499366a8fee060688aad6107",
      "parents": [
        "b2c77a57e4a0a7877e357dead7ee8acc19944f3e"
      ],
      "author": {
        "name": "Clark Williams",
        "email": "williams@redhat.com",
        "time": "Thu Feb 07 09:46:59 2013 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Thu Feb 07 20:50:54 2013 +0100"
      },
      "message": "sched: Move sched.h sysctl bits into separate header\n\nMove the sysctl-related bits from include/linux/sched.h into\na new file: include/linux/sched/sysctl.h. Then update source\nfiles requiring access to those bits by including the new\nheader file.\n\nSigned-off-by: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLink: http://lkml.kernel.org/r/20130207094659.06dced96@riff.lan\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "b22affe0aef429d657bc6505aacb1c569340ddd2",
      "tree": "6cdb5271ab0f4d02ccca8130fb0c0de8f61fe37a",
      "parents": [
        "90889a635a9b5488624bccce3ff6b2eec68c007b"
      ],
      "author": {
        "name": "Leonid Shatz",
        "email": "leonid.shatz@ravellosystems.com",
        "time": "Mon Feb 04 14:33:37 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 05 11:52:41 2013 +0100"
      },
      "message": "hrtimer: Prevent hrtimer_enqueue_reprogram race\n\nhrtimer_enqueue_reprogram contains a race which could result in\ntimer.base switch during unlock/lock sequence.\n\nhrtimer_enqueue_reprogram is releasing the lock protecting the timer\nbase for calling raise_softirq_irqsoff() due to a lock ordering issue\nversus rq-\u003elock.\n\nIf during that time another CPU calls __hrtimer_start_range_ns() on\nthe same hrtimer, the timer base might switch, before the current CPU\ncan lock base-\u003elock again and therefor the unlock_timer_base() call\nwill unlock the wrong lock.\n\n[ tglx: Added comment and massaged changelog ]\n\nSigned-off-by: Leonid Shatz \u003cleonid.shatz@ravellosystems.com\u003e\nSigned-off-by: Izik Eidus \u003cizik.eidus@ravellosystems.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/1359981217-389-1-git-send-email-izik.eidus@ravellosystems.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5baefd6d84163443215f4a99f6a20f054ef11236",
      "tree": "6cac442ef375c1ece186f568f8cf80b92ab39060",
      "parents": [
        "f6c06abfb3972ad4914cef57d8348fcb2932bc3b"
      ],
      "author": {
        "name": "John Stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 10 18:43:25 2012 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jul 11 23:34:39 2012 +0200"
      },
      "message": "hrtimer: Update hrtimer base offsets each hrtimer_interrupt\n\nThe update of the hrtimer base offsets on all cpus cannot be made\natomically from the timekeeper.lock held and interrupt disabled region\nas smp function calls are not allowed there.\n\nclock_was_set(), which enforces the update on all cpus, is called\neither from preemptible process context in case of do_settimeofday()\nor from the softirq context when the offset modification happened in\nthe timer interrupt itself due to a leap second.\n\nIn both cases there is a race window for an hrtimer interrupt between\ndropping timekeeper lock, enabling interrupts and clock_was_set()\nissuing the updates. Any interrupt which arrives in that window will\nsee the new time but operate on stale offsets.\n\nSo we need to make sure that an hrtimer interrupt always sees a\nconsistent state of time and offsets.\n\nktime_get_update_offsets() allows us to get the current monotonic time\nand update the per cpu hrtimer base offsets from hrtimer_interrupt()\nto capture a consistent state of monotonic time and the offsets. The\nfunction replaces the existing ktime_get() calls in hrtimer_interrupt().\n\nThe overhead of the new function vs. ktime_get() is minimal as it just\nadds two store operations.\n\nThis ensures that any changes to realtime or boottime offsets are\nnoticed and stored into the per-cpu hrtimer base structures, prior to\nany hrtimer expiration and guarantees that timers are not expired early.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/1341960205-56738-8-git-send-email-johnstul@us.ibm.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "196951e91262fccda81147d2bcf7fdab08668b40",
      "tree": "80b7ae7f48d8591a6d470583b35757a000326f45",
      "parents": [
        "5b9fe759a678e05be4937ddf03d50e950207c1c0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 10 18:43:23 2012 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jul 11 23:34:38 2012 +0200"
      },
      "message": "hrtimers: Move lock held region in hrtimer_interrupt()\n\nWe need to update the base offsets from this code and we need to do\nthat under base-\u003elock. Move the lock held region around the\nktime_get() calls. The ktime_get() calls are going to be replaced with\na function which gets the time and the offsets atomically.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLink: http://lkml.kernel.org/r/1341960205-56738-6-git-send-email-johnstul@us.ibm.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f55a6faa384304c89cfef162768e88374d3312cb",
      "tree": "522b895184e6ff0ff935d5b883eb67f8ea45e993",
      "parents": [
        "055c9fa8874fa7261eec7a268366565db84af474"
      ],
      "author": {
        "name": "John Stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 10 18:43:19 2012 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jul 11 23:34:37 2012 +0200"
      },
      "message": "hrtimer: Provide clock_was_set_delayed()\n\nclock_was_set() cannot be called from hard interrupt context because\nit calls on_each_cpu().\n\nFor fixing the widely reported leap seconds issue it is necessary to\ncall it from hard interrupt context, i.e. the timer tick code, which\ndoes the timekeeping updates.\n\nProvide a new function which denotes it in the hrtimer cpu base\nstructure of the cpu on which it is called and raise the hrtimer\nsoftirq. We then execute the clock_was_set() notificiation from\nsoftirq context in run_hrtimer_softirq(). The hrtimer softirq is\nrarely used, so polling the flag there is not a performance issue.\n\n[ tglx: Made it depend on CONFIG_HIGH_RES_TIMERS. We really should get\n  rid of all this ifdeffery ASAP ]\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nReported-by: Jan Engelhardt \u003cjengelh@inai.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/1341960205-56738-2-git-send-email-johnstul@us.ibm.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "621a0d5207c18012cb39932f2d9830a11a6cb03d"
}
