)]}'
{
  "log": [
    {
      "commit": "ea9d8e3f45404d411c00ae67b45cc35c58265bb7",
      "tree": "227fbaa1c05feec65dad473e7a49133985759ab7",
      "parents": [
        "7dc9c484a71525794ca05cf7a47f283f1b54cd12"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Thu Jan 07 11:22:44 2010 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 18 14:44:50 2010 +0100"
      },
      "message": "clockevent: Don\u0027t remove broadcast device when cpu is dead\n\nMarc reported that the BUG_ON in clockevents_notify() triggers on his\nsystem. This happens because the kernel tries to remove an active\nclock event device (used for broadcasting) from the device list.\n\nThe handling of devices which can be used as per cpu device and as a\nglobal broadcast device is suboptimal.\n\nThe simplest solution for now (and for stable) is to check whether the\ndevice is used as global broadcast device, but this needs to be\nrevisited.\n\n[ tglx: restored the cpuweight check and massaged the changelog ]\n\nReported-by: Marc Dionne \u003cmarc.c.dionne@gmail.com\u003e\nTested-by: Marc Dionne \u003cmarc.c.dionne@gmail.com\u003e\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nLKML-Reference: \u003c1262834564-13033-1-git-send-email-dfeng@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "83f57a11d84460dfe2afdb5a8bc759953428e38b",
      "tree": "b8506a6b61eb23e3d203fb248776c7eab9270c2d",
      "parents": [
        "0e2c8b8f55072a98b99e7bdad55c912084d6a526"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:10:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:10:37 2009 -0800"
      },
      "message": "Revert \"time: Remove xtime_cache\"\n\nThis reverts commit 7bc7d637452383d56ba4368d4336b0dde1bb476d, as\nrequested by John Stultz. Quoting John:\n\n \"Petr Titěra reported an issue where he saw odd atime regressions with\n  2.6.33 where there were a full second worth of nanoseconds in the\n  nanoseconds field.\n\n  He also reviewed the time code and narrowed down the problem: unhandled\n  overflow of the nanosecond field caused by rounding up the\n  sub-nanosecond accumulated time.\n\n  Details:\n\n   * At the end of update_wall_time(), we currently round up the\n  sub-nanosecond portion of accumulated time when storing it into xtime.\n  This was added to avoid time inconsistencies caused when the\n  sub-nanosecond portion was truncated when storing into xtime.\n  Unfortunately we don\u0027t handle the possible second overflow caused by\n  that rounding.\n\n   * Previously the xtime_cache code hid this overflow by normalizing the\n  xtime value when storing into the xtime_cache.\n\n   * We could try to handle the second overflow after the rounding up, but\n  since this affects the timekeeping\u0027s internal state, this would further\n  complicate the next accumulation cycle, causing small errors in ntp\n  steering. As much as I\u0027d like to get rid of it, the xtime_cache code is\n  known to work.\n\n   * The correct fix is really to include the sub-nanosecond portion in the\n  timekeeping accessor function, so we don\u0027t need to round up at during\n  accumulation. This would greatly simplify the accumulation code.\n  Unfortunately, we can\u0027t do this safely until the last three\n  non-GENERIC_TIME arches (sparc32, arm, cris) are converted  (those\n  patches are in -mm) and we kill off the spots where arches set xtime\n  directly. This is all 2.6.34 material, so I think reverting the\n  xtime_cache change is the best approach for now.\n\n  Many thanks to Petr for both reporting and finding the issue!\"\n\nReported-by: Petr Titěra \u003cP.Titera@century.cz\u003e\nRequested-by: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cd312c3e887b4bee2d94668a481b3d19c07732c",
      "tree": "c8978186da2155f7752de79a2cd5b59e3e298ce8",
      "parents": [
        "ecd5907a200b18aeddac68b8c734b8ad4c931205",
        "cf1e367ee84e02ac349ad0858eb65e8a6a511c8b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:47:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:47:18 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  timers: Remove duplicate setting of new_base in __mod_timer()\n  clockevents: Prevent clockevent_devices list corruption on cpu hotplug\n"
    },
    {
      "commit": "62ac12795095dc959649c66ace78708e7ac52477",
      "tree": "8ee766dda801b8990e41b4332697bbe365032626",
      "parents": [
        "cc216b86e51e9ab22265ea9591769c9ee235e1e4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Dec 17 11:43:26 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Dec 17 11:43:29 2009 +1030"
      },
      "message": "cpumask: avoid dereferencing struct cpumask\n\nstruct cpumask will be undefined soon with CONFIG_CPUMASK_OFFSTACK\u003dy,\nto avoid them being declared on the stack.\n\ncpumask_bits() does what we want here (of course, this code is crap).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nTo: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f065f41f48569122b5bcddbd1ba2354f7cc29fdc",
      "tree": "68606305bfb3aba16437017e0596ccae11e6f6db",
      "parents": [
        "4365a5676fa3aa1d5ae6c90c22a0044f09ba584e"
      ],
      "author": {
        "name": "Barry Song",
        "email": "21cnbao@gmail.com",
        "time": "Tue Dec 15 16:45:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "timecompare: fix half-Y2K38 problem in timecompare_update while calculating offset\n\nktime will overflow from 03:14:07 UTC on Tuesday, 19 January 2038,\nktime_add() in timecompare_update() will overflow a half earlier.  As a\nresult, wrong offset will be gotten, then cause some strange problems.\n\nSigned-off-by: Barry Song \u003c21cnbao@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5f91da0a6973bb6f9ff3b91b0e92c0773a458f3",
      "tree": "911ad0eeb484ce9309504fcf5a031403ad47ce84",
      "parents": [
        "d192c47f25daa98996c7eae543d8a27e41247ec2"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Dec 08 12:40:31 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:34 2009 +0100"
      },
      "message": "clockevents: Convert to raw_spinlock\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": "d192c47f25daa98996c7eae543d8a27e41247ec2",
      "tree": "7ad7970ffbf0fa25bab4fc9eb20f6a6fdbb30bb1",
      "parents": [
        "aef9cb05247df3d7615773737beb4f83d78577bb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Dec 08 12:49:26 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:34 2009 +0100"
      },
      "message": "clockevents: Make tick_device_lock static\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": "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": "d0316554d3586cbea60592a41391b5def2553d6f",
      "tree": "5e7418f0bacbc68cec5dfd1541e03eb56870aa02",
      "parents": [
        "fb0bbb92d42d5bd0ab224605444efdfed06d6934",
        "51e99be00ce2713cbb841cedc997cafa6e26c7f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (34 commits)\n  m68k: rename global variable vmalloc_end to m68k_vmalloc_end\n  percpu: add missing per_cpu_ptr_to_phys() definition for UP\n  percpu: Fix kdump failure if booted with percpu_alloc\u003dpage\n  percpu: make misc percpu symbols unique\n  percpu: make percpu symbols in ia64 unique\n  percpu: make percpu symbols in powerpc unique\n  percpu: make percpu symbols in x86 unique\n  percpu: make percpu symbols in xen unique\n  percpu: make percpu symbols in cpufreq unique\n  percpu: make percpu symbols in oprofile unique\n  percpu: make percpu symbols in tracer unique\n  percpu: make percpu symbols under kernel/ and mm/ unique\n  percpu: remove some sparse warnings\n  percpu: make alloc_percpu() handle array types\n  vmalloc: fix use of non-existent percpu variable in put_cpu_var()\n  this_cpu: Use this_cpu_xx in trace_functions_graph.c\n  this_cpu: Use this_cpu_xx for ftrace\n  this_cpu: Use this_cpu_xx in nmi handling\n  this_cpu: Use this_cpu operations in RCU\n  this_cpu: Use this_cpu ops for VM statistics\n  ...\n\nFix up trivial (famous last words) global per-cpu naming conflicts in\n\tarch/x86/kvm/svm.c\n\tmm/slab.c\n"
    },
    {
      "commit": "bb6eddf7676e1c1f3e637aa93c5224488d99036f",
      "tree": "3256cb7ea6954f28b0bb3ccee2db570e3d0ff762",
      "parents": [
        "e9c0748b687aa70179a9e6d8ffc24b2874fe350b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Dec 10 15:35:10 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Dec 11 10:28:08 2009 +0100"
      },
      "message": "clockevents: Prevent clockevent_devices list corruption on cpu hotplug\n\nXiaotian Feng triggered a list corruption in the clock events list on\nCPU hotplug and debugged the root cause.\n\nIf a CPU registers more than one per cpu clock event device, then only\nthe active clock event device is removed on CPU_DEAD. The unused\ndevices are kept in the clock events device list.\n\nOn CPU up the clock event devices are registered again, which means\nthat we list_add an already enqueued list_head. That results in list\ncorruption.\n\nResolve this by removing all devices which are associated to the dead\nCPU on CPU_DEAD.\n\nReported-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: stable@kernel.org\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": "4ef58d4e2ad1fa2a3e5bbf41af2284671fca8cf8",
      "tree": "856ba96302a36014736747e8464f80eeb827bbdd",
      "parents": [
        "f6c4c8195b5e7878823caa1181be404d9e86d369",
        "d014d043869cdc591f3a33243d3481fa4479c2d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (42 commits)\n  tree-wide: fix misspelling of \"definition\" in comments\n  reiserfs: fix misspelling of \"journaled\"\n  doc: Fix a typo in slub.txt.\n  inotify: remove superfluous return code check\n  hdlc: spelling fix in find_pvc() comment\n  doc: fix regulator docs cut-and-pasteism\n  mtd: Fix comment in Kconfig\n  doc: Fix IRQ chip docs\n  tree-wide: fix assorted typos all over the place\n  drivers/ata/libata-sff.c: comment spelling fixes\n  fix typos/grammos in Documentation/edac.txt\n  sysctl: add missing comments\n  fs/debugfs/inode.c: fix comment typos\n  sgivwfb: Make use of ARRAY_SIZE.\n  sky2: fix sky2_link_down copy/paste comment error\n  tree-wide: fix typos \"couter\" -\u003e \"counter\"\n  tree-wide: fix typos \"offest\" -\u003e \"offset\"\n  fix kerneldoc for set_irq_msi()\n  spidev: fix double \"of of\" in comment\n  comment typo fix: sybsystem -\u003e subsystem\n  ...\n"
    },
    {
      "commit": "fbf07eac7bf21c262143194181bd97c5d18b8ceb",
      "tree": "c9228b7d272f1e39472da28032605ecd1860e688",
      "parents": [
        "60d8ce2cd6c283132928c11f3fd57ff4187287e0",
        "8629ea2eaba8ca0de2e38ce1b4a825e16255976e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 19:28:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 19:28:09 2009 -0800"
      },
      "message": "Merge branch \u0027timers-for-linus-urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  hrtimer: Fix /proc/timer_list regression\n  itimers: Fix racy writes to cpu_itimer fields\n  timekeeping: Fix clock_gettime vsyscall time warp\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": "3505d1a9fd65e2d3e00827857b6795d9d8983658",
      "tree": "941cfafdb57c427bb6b7ebf6354ee93b2a3693b5",
      "parents": [
        "dfef948ed2ba69cf041840b5e860d6b4e16fa0b1",
        "66b00a7c93ec782d118d2c03bd599cfd041e80a1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 18 22:19:03 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 18 22:19:03 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/sfc/sfe4001.c\n\tdrivers/net/wireless/libertas/cmd.c\n\tdrivers/staging/Kconfig\n\tdrivers/staging/Makefile\n\tdrivers/staging/rtl8187se/Kconfig\n\tdrivers/staging/rtl8192e/Kconfig\n"
    },
    {
      "commit": "8e1a928a2ed7e8d5cad97c8e985294b4caedd168",
      "tree": "0bd5887c4eb7aa892488caf6f1065e50d37e8e6c",
      "parents": [
        "070e5c3f9989a72076e83fdd5ede3f0f3eb17264"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri Oct 16 18:19:01 2009 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 18 12:31:48 2009 +0100"
      },
      "message": "clockevents: Add missing include to pacify sparse\n\nInclude \"tick-internal.h\" in order to pick up the extern function\nprototype for clockevents_shutdown(). This quiets the following sparse\nbuild noise:\n\n  warning: symbol \u0027clockevents_shutdown\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nLKML-Reference: \u003cBD79186B4FD85F4B8E60E381CAEE190901E24550@mi8nycmail19.Mi8.com\u003e\nReviewed-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nCc: johnstul@us.ibm.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0696b711e4be45fa104c12329f617beb29c03f78",
      "tree": "96292fdc4ab443d6218077d363548532df6cbd8b",
      "parents": [
        "a9366e61b03f55a6e009e687ad10e706714c9907"
      ],
      "author": {
        "name": "Lin Ming",
        "email": "ming.m.lin@intel.com",
        "time": "Tue Nov 17 13:49:50 2009 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 11:52:34 2009 +0100"
      },
      "message": "timekeeping: Fix clock_gettime vsyscall time warp\n\nSince commit 0a544198 \"timekeeping: Move NTP adjusted clock multiplier\nto struct timekeeper\" the clock multiplier of vsyscall is updated with\nthe unmodified clock multiplier of the clock source and not with the\nNTP adjusted multiplier of the timekeeper.\n\nThis causes user space observerable time warps:\nnew CLOCK-warp maximum: 120 nsecs,  00000025c337c537 -\u003e 00000025c337c4bf\n\nAdd a new argument \"mult\" to update_vsyscall() and hand in the\ntimekeeping internal NTP adjusted multiplier.\n\nSigned-off-by: Lin Ming \u003cming.m.lin@intel.com\u003e\nCc: \"Zhang Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nLKML-Reference: \u003c1258436990.17765.83.camel@minggr.sh.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a362c638bdf052bf424bce7645d39b101090f6ba",
      "tree": "9622bd946d6f21071611415530a7ce736144a9ff",
      "parents": [
        "97813f2fe77804a4464564c75ba8d8826377feea"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Nov 14 00:26:34 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Nov 14 00:35:52 2009 +0100"
      },
      "message": "clocksource/events: Fix fallout of generic code changes\n\npowerpc grew a new warning due to the type change of clockevent-\u003emult.\n\nThe architectures which use parts of the generic time keeping\ninfrastructure tripped over my wrong assumption that\nclocksource_register is only used when GENERIC_TIME\u003dy.\n\nI should have looked and also I should have known better. These\nrenitent Gaul villages are racking my nerves. Some serious deprecating\nis due.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\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": "27185016b806d5a1181ff501cae120582b2b27dd",
      "tree": "44b0da428fccaea1ad83c537bcc99a80b9251227",
      "parents": [
        "98962465ed9e6ea99c38e0af63fe1dcb5a79dc25"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Nov 12 22:12:06 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 20:46:24 2009 +0100"
      },
      "message": "nohz: Track last do_timer() cpu\n\nThe previous patch which limits the sleep time to the maximum\ndeferment time of the time keeping clocksource has some limitations on\nSMP machines: if all CPUs are idle then for all CPUs the maximum sleep\ntime is limited.\n\nSolve this by keeping track of which cpu had the do_timer() duty\nassigned last and limit the sleep time only for this cpu.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\nCc: Jon Hunter \u003cjon-hunter@ti.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\n"
    },
    {
      "commit": "98962465ed9e6ea99c38e0af63fe1dcb5a79dc25",
      "tree": "f3f69ad8f6cd47e72a75da6de49eb3402f15cd9b",
      "parents": [
        "529eaccd900a59724619b4a6ef6579fd518d5218"
      ],
      "author": {
        "name": "Jon Hunter",
        "email": "jon-hunter@ti.com",
        "time": "Tue Aug 18 12:45:10 2009 -0500"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 20:46:24 2009 +0100"
      },
      "message": "nohz: Prevent clocksource wrapping during idle\n\nThe dynamic tick allows the kernel to sleep for periods longer than a\nsingle tick, but it does not limit the sleep time currently. In the\nworst case the kernel could sleep longer than the wrap around time of\nthe time keeping clock source which would result in losing track of\ntime.\n\nPrevent this by limiting it to the safe maximum sleep time of the\ncurrent time keeping clock source. The value is calculated when the\nclock source is registered.\n\n[ tglx: simplified the code a bit and massaged the commit msg ]\n\nSigned-off-by: Jon Hunter \u003cjon-hunter@ti.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c1250617512-23567-2-git-send-email-jon-hunter@ti.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "529eaccd900a59724619b4a6ef6579fd518d5218",
      "tree": "c2d9986df5dc18ef5b412036a0d897194bad12e7",
      "parents": [
        "e3a4fab0c0c30e21e104712f4e9cb39f175d0f21"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 14:32:19 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 20:46:24 2009 +0100"
      },
      "message": "nohz: Type cast printk argument\n\nOn some archs local_softirq_pending() has a data type of unsigned long\non others its unsigned int. Type cast it to (unsigned int) in the\nprintk to avoid the compiler warning.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\n"
    },
    {
      "commit": "7d2f944a2b836c69a9d260a0a5f0d1720d57fdff",
      "tree": "67766d878c650ab7ac13d155081b9c745447e24e",
      "parents": [
        "23af368e9a904f59256c27d371ce223d6cee0430"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 11 14:05:29 2009 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 20:46:23 2009 +0100"
      },
      "message": "clocksource: Provide a generic mult/shift factor calculation\n\nMIPS has two functions to calculcate the mult/shift factors for clock\nsources and clock events at run time. ARM needs such functions as\nwell.\n\nImplement a function which calculates the mult/shift factors based on\nthe frequencies to which and from which is converted. The function\nalso has a parameter to specify the minimum conversion range in\nseconds. This range is guaranteed not to produce a 64bit overflow when\na value is multiplied with the calculated mult factor. The larger the\nconversion range the less becomes the conversion accuracy.\n\nProvide two inline wrappers which handle clock events and clock\nsources. For clock events the \"from\" frequency is nano seconds per\nsecond which corresponds to 1GHz and \"to\" is the device frequency. For\nclock sources \"from\" is the device frequency and \"to\" is nano seconds\nper second.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Mikael Pettersson \u003cmikpe@it.uu.se\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nAcked-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20091111134229.766673305@linutronix.de\u003e\n"
    },
    {
      "commit": "23af368e9a904f59256c27d371ce223d6cee0430",
      "tree": "8d38ff75d731abc1182a331c2955b9c3c7025533",
      "parents": [
        "3c5d92a0cfb5103c0d5ab74d4ae6373d3af38148"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 11 14:05:25 2009 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 13 20:46:23 2009 +0100"
      },
      "message": "clockevents: Use u32 for mult and shift factors\n\nThe mult and shift factors of clock events differ in their data type\nfrom those of clock sources for no reason. u32 is sufficient for\nboth. shift is always \u003c\u003d 32 and mult is limited to 2^32-1 to avoid\n64bit multiplication overflows in the conversion.\n\nPreparatory patch for a generic mult/shift factor calculation\nfunction.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Mikael Pettersson \u003cmikpe@it.uu.se\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nAcked-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20091111134229.725664788@linutronix.de\u003e\n"
    },
    {
      "commit": "3586e0a9a4a5f19110627d6ba81ada32a358467d",
      "tree": "6790be67eaf564522b4fddec7f4a1f6a33fe32ef",
      "parents": [
        "a3bc1f11e9b867a4f49505ecac486a33af248b2e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 11 19:06:30 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 11 19:06:30 2009 -0800"
      },
      "message": "clocksource/timecompare: Fix symbol exports to be GPL\u0027d.\n\nNoticed by Thomas GLeixner.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b71a8eb0fa64ec6d00175f479e3ef851703568af",
      "tree": "b3a71df4dde15af10511a8aa54033deb90ee27f6",
      "parents": [
        "fa3012318bfb395552baef69bb1ebe87e64945c8"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Tue Oct 06 12:42:51 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 09 09:40:56 2009 +0100"
      },
      "message": "tree-wide: fix typos \"selct\" + \"slect\" -\u003e \"select\"\n\nThis patch was generated by\n\n\tgit grep -E -i -l \u0027s(le|el)ct\u0027 | xargs -r perl -p -i -e \u0027s/([Ss])(le|el)ct/$1elect/\n\nwith only skipping net/netfilter/xt_SECMARK.c and\ninclude/linux/netfilter/xt_SECMARK.h which have a struct member called\nselctx.\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "3c5d92a0cfb5103c0d5ab74d4ae6373d3af38148",
      "tree": "c8b50351568601428b6f9396ebfdd65e486b3097",
      "parents": [
        "eed3b9cf3fe3fcc7a50238dfcab63a63914e8f42"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Tue Sep 29 14:25:16 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Nov 05 07:53:53 2009 +0100"
      },
      "message": "nohz: Introduce arch_needs_cpu\n\nAllow the architecture to request a normal jiffy tick when the system\ngoes idle and tick_nohz_stop_sched_tick is called . On s390 the hook is\nused to prevent the system going fully idle if there has been an\ninterrupt other than a clock comparator interrupt since the last wakeup.\n\nOn s390 the HiperSockets response time for 1 connection ping-pong goes\ndown from 42 to 34 microseconds. The CPU cost decreases by 27%.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nLKML-Reference: \u003c20090929122533.402715150@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "eed3b9cf3fe3fcc7a50238dfcab63a63914e8f42",
      "tree": "b8db321400bc9a17e7cfefb82dbfb515a841fab2",
      "parents": [
        "7bc7d637452383d56ba4368d4336b0dde1bb476d"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Tue Sep 29 14:25:15 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Nov 05 07:53:53 2009 +0100"
      },
      "message": "nohz: Reuse ktime in sub-functions of tick_check_idle.\n\nOn a system with NOHZ\u003dy tick_check_idle calls tick_nohz_stop_idle and\ntick_nohz_update_jiffies. Given the right conditions (ts-\u003eidle_active\nand/or ts-\u003etick_stopped) both function get a time stamp with ktime_get.\nThe same time stamp can be reused if both function require one.\n\nOn s390 this change has the additional benefit that gcc inlines the\ntick_nohz_stop_idle function into tick_check_idle. The number of\ninstructions to execute tick_check_idle drops from 225 to 144\n(without the ktime_get optimization it is 367 vs 215 instructions).\n\nbefore:\n\n 0)               |  tick_check_idle() {\n 0)               |    tick_nohz_stop_idle() {\n 0)               |      ktime_get() {\n 0)               |        read_tod_clock() {\n 0)   0.601 us    |        }\n 0)   1.765 us    |      }\n 0)   3.047 us    |    }\n 0)               |    ktime_get() {\n 0)               |      read_tod_clock() {\n 0)   0.570 us    |      }\n 0)   1.727 us    |    }\n 0)               |    tick_do_update_jiffies64() {\n 0)   0.609 us    |    }\n 0)   8.055 us    |  }\n\nafter:\n\n 0)               |  tick_check_idle() {\n 0)               |    ktime_get() {\n 0)               |      read_tod_clock() {\n 0)   0.617 us    |      }\n 0)   1.773 us    |    }\n 0)               |    tick_do_update_jiffies64() {\n 0)   0.593 us    |    }\n 0)   4.477 us    |  }\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090929122533.206589318@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1871e52c76dd95895caeb772f845a1718dcbcd75",
      "tree": "49e8148326f65353e673204f427bd4545eb26c16",
      "parents": [
        "0f5e4816dbf38ce9488e611ca2296925c1e90d5e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:13 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:13 2009 +0900"
      },
      "message": "percpu: make percpu symbols under kernel/ and mm/ unique\n\nThis patch updates percpu related symbols under kernel/ and mm/ such\nthat percpu symbols are unique and don\u0027t clash with local symbols.\nThis serves two purposes of decreasing the possibility of global\npercpu symbol collision and allowing dropping per_cpu__ prefix from\npercpu symbols.\n\n* kernel/lockdep.c: s/lock_stats/cpu_lock_stats/\n\n* kernel/sched.c: s/init_rq_rt/init_rt_rq_var/\t(any better idea?)\n  \t\t  s/sched_group_cpus/sched_groups/\n\n* kernel/softirq.c: s/ksoftirqd/run_ksoftirqd/a\n\n* kernel/softlockup.c: s/(*)_timestamp/softlockup_\\1_ts/\n  \t\t       s/watchdog_task/softlockup_watchdog/\n\t\t       s/timestamp/ts/ for local variables\n\n* kernel/time/timer_stats: s/lookup_lock/tstats_lookup_lock/\n\n* mm/slab.c: s/reap_work/slab_reap_work/\n  \t     s/reap_node/slab_reap_node/\n\n* mm/vmstat.c: local variable changed to avoid collision with vmstat_work\n\nPartly based on Rusty Russell\u0027s \"alloc_percpu: rename percpu vars\nwhich cause name clashes\" patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: (slab/vmstat) Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\n"
    },
    {
      "commit": "d43c36dc6b357fa1806800f18aa30123c747a6d1",
      "tree": "339ce510073ecbe9b3592008f7dece7b277035ef",
      "parents": [
        "69585dd69e663a40729492c7b52eb82477a2027a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 07 17:09:06 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:20:58 2009 -0700"
      },
      "message": "headers: remove sched.h from interrupt.h\n\nAfter m68k\u0027s task_thread_info() doesn\u0027t refer to current,\nit\u0027s possible to remove sched.h from interrupt.h and not break m68k!\nMany thanks to Heiko Carstens for allowing this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "fdc6f192e7e1ae80565af23cc33dc88e3dcdf184",
      "tree": "431a47d5fe9b737cc5dd5fe40e178d06f7d579ed",
      "parents": [
        "0eca52a92735f43462165efe00a7e394345fb38e"
      ],
      "author": {
        "name": "Eero Nurkkala",
        "email": "ext-eero.nurkkala@nokia.com",
        "time": "Wed Oct 07 11:54:26 2009 +0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 07 13:05:05 2009 +0200"
      },
      "message": "NOHZ: update idle state also when NOHZ is inactive\n\nCommit f2e21c9610991e95621a81407cdbab881226419b had unfortunate side\neffects with cpufreq governors on some systems.\n\nIf the system did not switch into NOHZ mode ts-\u003einidle is not set when\ntick_nohz_stop_sched_tick() is called from the idle routine. Therefor\nall subsequent calls from irq_exit() to tick_nohz_stop_sched_tick()\nfail to call tick_nohz_start_idle(). This results in bogus idle\naccounting information which is passed to cpufreq governors.\n\nSet the inidle flag unconditionally of the NOHZ active state to keep\nthe idle time accounting correct in any case.\n\n[ tglx: Added comment and tweaked the changelog ]\n\nReported-by: Steven Noonan \u003csteven@uplinklabs.net\u003e\nSigned-off-by: Eero Nurkkala \u003cext-eero.nurkkala@nokia.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Steven Noonan \u003csteven@uplinklabs.net\u003e\nCc: stable@kernel.org\nLKML-Reference: \u003c1254907901.30157.93.camel@eenurkka-desktop\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7bc7d637452383d56ba4368d4336b0dde1bb476d",
      "tree": "f1c8e1e103a900850342d46de27ebdf1e7d07f78",
      "parents": [
        "a092ff0f90cae22b2ac8028ecd2c6f6c1a9e4601"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Fri Oct 02 16:24:15 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 13:52:02 2009 +0200"
      },
      "message": "time: Remove xtime_cache\n\nWith the prior logarithmic time accumulation patch, xtime will now\nalways be within one \"tick\" of the current time, instead of\npossibly half a second off.\n\nThis removes the need for the xtime_cache value, which always\nstored the time at the last interrupt, so this patch cleans that up\nremoving the xtime_cache related code.\n\nThis is a bit simpler, but still could use some wider testing.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLKML-Reference: \u003c1254525855.7741.95.camel@localhost.localdomain\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a092ff0f90cae22b2ac8028ecd2c6f6c1a9e4601",
      "tree": "79ec451d0bcdf6c08e0bc210b4beed694fbbf4a9",
      "parents": [
        "8a0382f6fceaf0c6479e582e1054f36333ea3d24"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Fri Oct 02 16:17:53 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 13:51:48 2009 +0200"
      },
      "message": "time: Implement logarithmic time accumulation\n\nAccumulating one tick at a time works well unless we\u0027re using NOHZ.\nThen it can be an issue, since we may have to run through the loop\na few thousand times, which can increase timer interrupt caused\nlatency.\n\nThe current solution was to accumulate in half-second intervals\nwith NOHZ. This kept the number of loops down, however it did\nslightly change how we make NTP adjustments. While not an issue\nwith NTPd users, as NTPd makes adjustments over a longer period of\ntime, other adjtimex() users have noticed the half-second\ngranularity with which we can apply frequency changes to the clock.\n\nFor instance, if a application tries to apply a 100ppm frequency\ncorrection for 20ms to correct a 2us offset, with NOHZ they either\nget no correction, or a 50us correction.\n\nNow, there will always be some granularity error for applying\nfrequency corrections. However with users sensitive to this error\nhave seen a 50-500x increase with NOHZ compared to running without\nNOHZ.\n\nSo I figured I\u0027d try another approach then just simply increasing\nthe interval. My approach is to consume the time interval\nlogarithmically. This reduces the number of times through the loop\nneeded keeping latency down, while still preserving the original\ngranularity error for adjtimex() changes.\n\nFurther, this change allows us to remove the xtime_cache code\n(patch to follow), as xtime is always within one tick of the\ncurrent time, instead of the half-second updates it saw before.\n\nAn earlier version of this patch has been shipping to x86 users in\nthe RedHat MRG releases for awhile without issue, but I\u0027ve reworked\nthis version to be even more careful about avoiding possible\noverflows if the shift value gets too large.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLKML-Reference: \u003c1254525473.7741.88.camel@localhost.localdomain\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "179b9145d58eb7158d4053a8308b9fc4608a6d6b",
      "tree": "6f63a64c2811135e6edca885f5a2c79f50ba7465",
      "parents": [
        "4187e7e9f1294afdcb3be5d00aa74412a1c2ded8",
        "89133f93508137231251543d1732da638e6022e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:14:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:14:41 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  clocksource: Resume clocksource without taking the clocksource mutex\n"
    },
    {
      "commit": "89133f93508137231251543d1732da638e6022e1",
      "tree": "8f94df8c650bbe2ec765de89ce70b9e762a5ba2f",
      "parents": [
        "94a8d5caba74211ec76dac80fc6e2d5c391530df"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Sep 24 17:29:52 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 24 22:37:53 2009 +0200"
      },
      "message": "clocksource: Resume clocksource without taking the clocksource mutex\n\ngit commit 75c5158f70c065b9 converted the clocksource spinlock to a\nmutex. This causes the following BUG:\n\nBUG: sleeping function called from invalid context at\nkernel/mutex.c:280 in_atomic(): 0, irqs_disabled(): 1, pid: 2473,\nname: pm-suspend 2 locks held by pm-suspend/2473:\n #0:  (\u0026buffer-\u003emutex){......}, at: [\u003cffffffff8115ab13\u003e]\nsysfs_write_file+0x3c/0x137\n #1:  (pm_mutex){......}, at: [\u003cffffffff810865b5\u003e]\nenter_state+0x39/0x130 Pid: 2473, comm: pm-suspend Not tainted 2.6.31\n#1 Call Trace:\n [\u003cffffffff810792f0\u003e] ? __debug_show_held_locks+0x22/0x24\n [\u003cffffffff8104a2ef\u003e] __might_sleep+0x107/0x10b\n [\u003cffffffff8141fca9\u003e] mutex_lock_nested+0x25/0x43\n [\u003cffffffff81073537\u003e] clocksource_resume+0x1c/0x60\n [\u003cffffffff81072902\u003e] timekeeping_resume+0x1e/0x1c8\n [\u003cffffffff812aee62\u003e] __sysdev_resume+0x25/0xcf\n [\u003cffffffff812aef79\u003e] sysdev_resume+0x6d/0xae\n [\u003cffffffff810864f8\u003e] suspend_devices_and_enter+0x12b/0x1af\n [\u003cffffffff8108665b\u003e] enter_state+0xdf/0x130\n [\u003cffffffff81085dc3\u003e] state_store+0xb6/0xd3\n [\u003cffffffff81204c73\u003e] kobj_attr_store+0x17/0x19\n [\u003cffffffff8115abd2\u003e] sysfs_write_file+0xfb/0x137\n [\u003cffffffff811057d2\u003e] vfs_write+0xae/0x10b\n [\u003cffffffff81208392\u003e] ? __up_read+0x1a/0x7f\n [\u003cffffffff811058ef\u003e] sys_write+0x4a/0x6e\n [\u003cffffffff81011b82\u003e] system_call_fastpath+0x16/0x1b\n\nclocksource_resume is called early in the resume process, there is\nonly one cpu, no processes are running and the interrupts are\ndisabled. It is therefore possible to resume the clocksources\nwithout taking the clocksource mutex.\n\nReported-by: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nTested-by: Michal Schmidt \u003cmschmidt@redhat.com\u003e\nCc: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090924172952.49697825@mschwide.boeblingen.de.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "57f1f0874f426a9bdfc5cd3f886113dd5cd17834",
      "tree": "f7938f5c195f7733543d3d86c6ae3c902fd7adef",
      "parents": [
        "ef1ff6b8c08954bc203b59e887d1e580dd91755a"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Wed Sep 23 15:56:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:56 2009 -0700"
      },
      "message": "time: add function to convert between calendar time and broken-down time for universal use\n\nThere are many similar code in kernel for one object: convert time between\ncalendar time and broken-down time.\n\nHere is some source I found:\n  fs/ncpfs/dir.c\n  fs/smbfs/proc.c\n  fs/fat/misc.c\n  fs/udf/udftime.c\n  fs/cifs/netmisc.c\n  net/netfilter/xt_time.c\n  drivers/scsi/ips.c\n  drivers/input/misc/hp_sdc_rtc.c\n  drivers/rtc/rtc-lib.c\n  arch/ia64/hp/sim/boot/fw-emu.c\n  arch/m68k/mac/misc.c\n  arch/powerpc/kernel/time.c\n  arch/parisc/include/asm/rtc.h\n  ...\n\nWe can make a common function for this type of conversion, At least we\ncan get following benefit:\n\n1: Make kernel simple and unify\n2: Easy to fix bug in converting code\n3: Reduce clone of code in future\n   For example, I\u0027m trying to make ftrace display walltime,\n   this patch will make me easy.\n\nThis code is based on code from glibc-2.6\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\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": "54a6bc0b071c50150bc6d1da16c2cd9a963e288c",
      "tree": "87b576e31db14f6d57b0d8ed97743ab9779de30e",
      "parents": [
        "e6c733050faa93ce616bfedccd279ab12cffdd7b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 14 19:49:02 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 14 21:59:32 2009 +0200"
      },
      "message": "clocksource: Delay clocksource down rating to late boot\n\nThe down rating of clock sources in the early boot process via the\nclock source watchdog mechanism can happen way before the per cpu\nevent queues are initialized. This leads to a boot crash on x86 when\nthe TSC is marked unstable in the SMP bring up.\n\nThe selection of a clock source for time keeping happens in the late\nboot process so we can safely delay the list manipulation until\nclocksource_done_booting() is called.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "e6c733050faa93ce616bfedccd279ab12cffdd7b",
      "tree": "03a1b49744d5aacd98d9e26b0769acb90a38dfac",
      "parents": [
        "f79e0258ea1f04d63db499479b5fb855dff6dbc5"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 14 19:51:11 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 14 21:59:32 2009 +0200"
      },
      "message": "clocksource: clocksource_select must be called with mutex locked\n\nThe callers of clocksource_select must hold clocksource_mutex to\nprotect the clocksource_list.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "f79e0258ea1f04d63db499479b5fb855dff6dbc5",
      "tree": "66edb089e5c3aee03e1326d41e47d7e14c21e76b",
      "parents": [
        "e500011ffa191d662ac64d4ada6a5187b3180e16"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Sep 11 15:33:05 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 11 20:17:18 2009 +0200"
      },
      "message": "clocksource: Resolve cpu hotplug dead lock with TSC unstable, fix crash\n\nThe watchdog timer is started after the watchdog clocksource\nand at least one watched clocksource have been registered. The\nclocksource work element watchdog_work is initialized just\nbefore the clocksource timer is started. This is too late for\nthe clocksource_mark_unstable call from native_cpu_up. To fix\nthis use a static initializer for watchdog_work.\n\nThis resolves a boot crash reported by multiple people.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090911153305.3fe9a361@skybase\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7285dd7fd375763bfb8ab1ac9cf3f1206f503c16",
      "tree": "42f809ab3616cc3d93d655acccfc2d54e9f6d0e4",
      "parents": [
        "90cba64a5f672a239f43ec5cb9a11b806887331e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Aug 28 20:25:24 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Aug 28 20:25:24 2009 +0200"
      },
      "message": "clocksource: Resolve cpu hotplug dead lock with TSC unstable\n\nMartin Schwidefsky analyzed it:\nTo register a clocksource the clocksource_mutex is acquired and if\nnecessary timekeeping_notify is called to install the clocksource as\nthe timekeeper clock. timekeeping_notify uses stop_machine which needs\nto take cpu_add_remove_lock mutex.\nStarting a new cpu is done with the cpu_add_remove_lock mutex held.\nnative_cpu_up checks the tsc of the new cpu and if the tsc is no good\nclocksource_change_rating is called. Which needs the clocksource_mutex\nand the deadlock is complete.\n\nThe solution is to replace the TSC via the clocksource watchdog\nmechanism. Mark the TSC as unstable and schedule the watchdog work so\nit gets removed in the watchdog thread context.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\n"
    },
    {
      "commit": "36d47481b3824b661b464077db95d447984df799",
      "tree": "7ae9dc060872f879403e78ab1b1abd7f4ada4ed0",
      "parents": [
        "0ceb4c3e3f1ccaf121851e33c3ea269b8ad0f219"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Tue Aug 25 15:08:30 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 25 09:09:02 2009 +0200"
      },
      "message": "timekeeping: Fix invalid getboottime() value\n\nDon\u0027t use timespec_add_safe() with wall_to_monotonic, because\nwall_to_monotonic has negative values which will cause overflow\nin timespec_add_safe(). That makes btime in /proc/stat invalid.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c4A937FDE.4050506@ct.jp.nec.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "da15cfdae03351c689736f8d142618592e3cebc3",
      "tree": "497fe3f77e27fa9cf0a484422c7bc382031df1bd",
      "parents": [
        "8cab02dc3c58a12235c6d463ce684dded9696848"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Wed Aug 19 19:13:34 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Aug 21 21:43:46 2009 +0200"
      },
      "message": "time: Introduce CLOCK_REALTIME_COARSE\n\nAfter talking with some application writers who want very fast, but not\nfine-grained timestamps, I decided to try to implement new clock_ids\nto clock_gettime(): CLOCK_REALTIME_COARSE and CLOCK_MONOTONIC_COARSE\nwhich returns the time at the last tick. This is very fast as we don\u0027t\nhave to access any hardware (which can be very painful if you\u0027re using\nsomething like the acpi_pm clocksource), and we can even use the vdso\nclock_gettime() method to avoid the syscall. The only trade off is you\nonly get low-res tick grained time resolution.\n\nThis isn\u0027t a new idea, I know Ingo has a patch in the -rt tree that made\nthe vsyscall gettimeofday() return coarse grained time when the\nvsyscall64 sysctrl was set to 2. However this affects all applications\non a system.\n\nWith this method, applications can choose the proper speed/granularity\ntrade-off for themselves.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: nikolag@ca.ibm.com\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: arjan@infradead.org\nCc: jonathan@jonmasters.org\nLKML-Reference: \u003c1250734414.6897.5.camel@localhost.localdomain\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "f833bab87fca5c3ce13778421b1365845843b976",
      "tree": "020c3e6a70dba34544c963c34647b605035be8fb",
      "parents": [
        "de809347aeef0a68c04576c464414d0e4dce59fc"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Mon Aug 17 14:34:59 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Aug 19 18:15:10 2009 +0200"
      },
      "message": "clockevent: Prevent dead lock on clockevents_lock\n\nCurrently clockevents_notify() is called with interrupts enabled at\nsome places and interrupts disabled at some other places.\n\nThis results in a deadlock in this scenario.\n\ncpu A holds clockevents_lock in clockevents_notify() with irqs enabled\ncpu B waits for clockevents_lock in clockevents_notify() with irqs disabled\ncpu C doing set_mtrr() which will try to rendezvous of all the cpus.\n\nThis will result in C and A come to the rendezvous point and waiting\nfor B. B is stuck forever waiting for the spinlock and thus not\nreaching the rendezvous point.\n\nFix the clockevents code so that clockevents_lock is taken with\ninterrupts disabled and thus avoid the above deadlock.\n\nAlso call lapic_timer_propagate_broadcast() on the destination cpu so\nthat we avoid calling smp_call_function() in the clockevents notifier\nchain.\n\nThis issue left us wondering if we need to change the MTRR rendezvous\nlogic to use stop machine logic (instead of smp_call_function) or add\na check in spinlock debug code to see if there are other spinlocks\nwhich gets taken under both interrupts enabled/disabled conditions.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: \"Pallipadi Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: \"Brown Len\" \u003clen.brown@intel.com\u003e\nLKML-Reference: \u003c1250544899.2709.210.camel@sbs-t61.sc.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "01548f4d3e8e94caf323a4f664eb347fd34a34ab",
      "tree": "2717e7d4dd781be2d57737df96b074451090f3d9",
      "parents": [
        "d0981a1b21a03866c8da7f44e35e389c2e0d6061"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Tue Aug 18 17:09:42 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Aug 19 12:00:56 2009 +0200"
      },
      "message": "clocksource: Avoid clocksource watchdog circular locking dependency\n\nstop_machine from a multithreaded workqueue is not allowed because\nof a circular locking dependency between cpu_down and the workqueue\nexecution. Use a kernel thread to do the clocksource downgrade.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090818170942.3ab80c91@skybase\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "d0981a1b21a03866c8da7f44e35e389c2e0d6061",
      "tree": "7fe013c7de9adb1d4f20163669571fddfe09881c",
      "parents": [
        "6ea41d252f35465a2308a4038a323b6b07de06f6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Aug 19 11:26:09 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Aug 19 11:42:48 2009 +0200"
      },
      "message": "clocksource: Protect the watchdog rating changes with clocksource_mutex\n\nMartin pointed out that commit 6ea41d2529 (clocksource: Call\nclocksource_change_rating() outside of watchdog_lock) has a\ntheoretical reference count problem. The calls to\nclocksource_change_rating() are now done outside of the clocksource\nmutex and outside of the watchdog lock. A concurrent\nclocksource_unregister() could remove the clock.\n\nSplit out the code which changes the rating from\nclocksource_change_rating() into __clocksource_change_rating().\n\nProtect the clocksource_watchdog_work() code sequence with the\nclocksource_mutex() and call __clocksource_change_rating().\n\nLKML-Reference: \u003calpine.LFD.2.00.0908171038420.2782@localhost.localdomain\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "de809347aeef0a68c04576c464414d0e4dce59fc",
      "tree": "e3f05312abaabe0bcda04b6e8e220374c20cf292",
      "parents": [
        "b2add73dbf93fd50f00564d7abc3e2b9aa9dd20c"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Aug 17 05:43:01 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 17 11:47:31 2009 +0200"
      },
      "message": "timers: Drop write permission on /proc/timer_list\n\n/proc/timer_list and /proc/slabinfo are not supposed to be\nwritten, so there should be no write permissions on it.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: linux-mm@kvack.org\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nLKML-Reference: \u003c20090817094525.6355.88682.sendpatchset@localhost.localdomain\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ea41d252f35465a2308a4038a323b6b07de06f6",
      "tree": "50315e593c1eacd4c0ebbe5abb1919bdb0302943",
      "parents": [
        "23970e389e9cee43c4b41023935e1417271708b2"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 13:20:42 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 13:20:42 2009 +0200"
      },
      "message": "clocksource: Call clocksource_change_rating() outside of watchdog_lock\n\nThe changes to the watchdog logic introduced a lock inversion between\nwatchdog_lock and clocksource_mutex. Change the rating outside of\nwatchdog_lock to avoid it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "23970e389e9cee43c4b41023935e1417271708b2",
      "tree": "d97d299cf74c44cf7ceb4c04c82dafc451fbbfbb",
      "parents": [
        "d4f587c67fc39e0030ddd718675e252e208da4d7"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:32 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:47 2009 +0200"
      },
      "message": "timekeeping: Introduce read_boot_clock\n\nAdd the new function read_boot_clock to get the exact time the system\nhas been started. For architectures without support for exact boot\ntime a new weak function is added that returns 0.  Use the exact boot\ntime to initialize wall_to_monotonic, or xtime if the read_boot_clock\nreturned 0.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134811.296703241@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d4f587c67fc39e0030ddd718675e252e208da4d7",
      "tree": "2222681c57966cc6b8404afdff3ab1a09ac7ea69",
      "parents": [
        "75c5158f70c065b9704b924503d96e8297838f79"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:31 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "timekeeping: Increase granularity of read_persistent_clock()\n\nThe persistent clock of some architectures (e.g. s390) have a\nbetter granularity than seconds. To reduce the delta between the\nhost clock and the guest clock in a virtualized system change the \nread_persistent_clock function to return a struct timespec.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134811.013873340@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "75c5158f70c065b9704b924503d96e8297838f79",
      "tree": "74b02ba1f13aaf8292bd472a8a197ac900ff20e7",
      "parents": [
        "2ba2a3054fdffc8e6452f4ee120760322a6fbd43"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:30 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "timekeeping: Update clocksource with stop_machine\n\nupdate_wall_time calls change_clocksource HZ times per second to check\nif a new clock source is available. In close to 100% of all calls\nthere is no new clock. Replace the tick based check by an update done\nwith stop_machine.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134810.711836357@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "2ba2a3054fdffc8e6452f4ee120760322a6fbd43",
      "tree": "1ce2f3b323cb332d2b3d5ba4930ea10bb5d9e27e",
      "parents": [
        "0a54419836254a27baecd9037103171bcbabaf67"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:29 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "timekeeping: Add timekeeper read_clock helper functions\n\nAdd timekeeper_read_clock_ntp and timekeeper_read_clock_raw and use\nthem for getnstimeofday, ktime_get, ktime_get_ts and getrawmonotonic.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134810.435105711@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0a54419836254a27baecd9037103171bcbabaf67",
      "tree": "ad4dc7ca1fc974a53c7fc2e972558bcb6b786afe",
      "parents": [
        "23ce72117c714baab794e66c8daf343bf6a912bf"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:28 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "timekeeping: Move NTP adjusted clock multiplier to struct timekeeper\n\nThe clocksource structure has two multipliers, the unmodified multiplier\nclock-\u003emult_orig and the NTP corrected multiplier clock-\u003emult. The NTP\nmultiplier is misplaced in the struct clocksource, this is private\ninformation of the timekeeping code. Add the mult field to the struct\ntimekeeper to contain the NTP corrected value, keep the unmodifed\nmultiplier in clock-\u003emult and remove clock-\u003emult_orig.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134810.149047645@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "23ce72117c714baab794e66c8daf343bf6a912bf",
      "tree": "ef2cfc1ffbf07c344ab28a6f5f2357e6b2c9a99d",
      "parents": [
        "155ec60226ae0ae2aadaa57c951a58a359331030"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:27 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "timekeeping: Add xtime_shift and ntp_error_shift to struct timekeeper\n\nThe xtime_nsec value in the timekeeper structure is shifted by a few\nbits to improve precision. This happens to be the same value as the\nclock-\u003eshift. To improve readability add xtime_shift to the timekeeper\nand use it instead of the clock-\u003eshift. Likewise add ntp_error_shift\nand replace all (NTP_SCALE_SHIFT - clock-\u003eshift) expressions.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134809.871899606@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "155ec60226ae0ae2aadaa57c951a58a359331030",
      "tree": "fdee05f7b587f8d49cdd277abdbe44212279a4ba",
      "parents": [
        "c55c87c892c1875deace0c8fc28787335277fdf2"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:26 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "timekeeping: Introduce struct timekeeper\n\nAdd struct timekeeper to keep the internal values timekeeping.c needs\nin regard to the currently selected clock source. This moves the\ntimekeeping intervals, xtime_nsec and the ntp error value from struct\nclocksource to struct timekeeper. The raw_time is removed from the\nclocksource as well. It gets treated like xtime as a global variable.\nEventually xtime raw_time should be moved to struct timekeeper.\n\n[ tglx: minor cleanup ]\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134809.613209842@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c55c87c892c1875deace0c8fc28787335277fdf2",
      "tree": "8b3a4c08f0eea40683cfb94bc44ef18507ae3011",
      "parents": [
        "fb63a0ebe615fba9de8c75ea44ded999d1e24c65"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:25 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "clocksource: Move watchdog downgrade to a work queue thread\n\nMove the downgrade of an unstable clocksource from the timer interrupt\ncontext into the process context of a work queue thread. This is\nneeded to be able to do the clocksource switch with stop_machine.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134809.354926067@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "fb63a0ebe615fba9de8c75ea44ded999d1e24c65",
      "tree": "7544b72d9de56f68047579d39da4927f839197d3",
      "parents": [
        "0f8e8ef7c204988246da5a42d576b7fa5277a8e4"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:24 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "clocksource: Refactor clocksource watchdog\n\nRefactor clocksource watchdog code to make it more readable. Add\nclocksource_dequeue_watchdog to remove a clocksource from the watchdog\nlist when it is unregistered.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134809.110881699@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0f8e8ef7c204988246da5a42d576b7fa5277a8e4",
      "tree": "390bcd20b76bfa331e029c731ade1b6263e14684",
      "parents": [
        "8cf4e750f8459d51c2e8a035a201da4bf7aa996a"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:23 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "clocksource: Simplify clocksource watchdog resume logic\n\nTo resume the clocksource watchdog just remove the CLOCK_SOURCE_WATCHDOG\nbit from the watched clocksource.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134808.880925790@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "8cf4e750f8459d51c2e8a035a201da4bf7aa996a",
      "tree": "b197e6074bae727556cce983c21cfdcf17dc6388",
      "parents": [
        "f1b82746c1e93daf24e1ab9bfbd39bcdb2e7018b"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:22 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "clocksource: Delay clocksource watchdog highres enablement\n\nThe clocksource watchdog marks a clock as highres capable before it\nchecked the deviation from the watchdog clocksource even for a single\ntime. Make sure that the deviation is at least checked once before\ndoing the switch to highres mode.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134808.627795883@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f1b82746c1e93daf24e1ab9bfbd39bcdb2e7018b",
      "tree": "1403e3662dd3b32cb8b17218bfdd9a640061f654",
      "parents": [
        "1be396794897f80bfc8774719ba60309a9e3d374"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:21 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:46 2009 +0200"
      },
      "message": "clocksource: Cleanup clocksource selection\n\nIf a non high-resolution clocksource is first set as override clock\nand then registered it becomes active even if the system is in one-shot\nmode. Move the override check from sysfs_override_clocksource to the\nclocksource selection. That fixes the bug and simplifies the code. The\ncheck in clocksource_register for double registration of the same\nclocksource is removed without replacement.\n\nTo find the initial clocksource a new weak function in jiffies.c is\ndefined that returns the jiffies clocksource. The architecture code\ncan then override the weak function with a more suitable clocksource,\ne.g. the TOD clock on s390.\n\n[ tglx: Folded in a fix from John Stultz ]\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134808.388024160@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1be396794897f80bfc8774719ba60309a9e3d374",
      "tree": "f0e11ffe7b7cc2cf58129cf3ea1c543de0da9898",
      "parents": [
        "a0f7d48bfb95a4c5172a2756dbc4b82afc8e9ae4"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:20 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:45 2009 +0200"
      },
      "message": "timekeeping: Move reset of cycle_last for tsc clocksource to tsc\n\nchange_clocksource resets the cycle_last value to zero then sets it to\na value read from the clocksource. The reset to zero is required only\nfor the TSC clocksource to make the read_tsc function work after a\nresume. The reason is that the TSC read function uses cycle_last to\ndetect backwards going TSCs. In the resume case cycle_last contains\nthe TSC value from the last update before the suspend. On resume the\nTSC starts counting from 0 again and would trip over the cycle_last\ncomparison.\n\nThis is subtle and surprising. Move the reset to a resume function in\nthe tsc code.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134808.142191175@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a0f7d48bfb95a4c5172a2756dbc4b82afc8e9ae4",
      "tree": "b82580eb76f99ee1352f399975050630ca21936a",
      "parents": [
        "31089c13bcb18d2cd2a3ddfbe3a28666346f237e"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 14 15:47:19 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:45 2009 +0200"
      },
      "message": "timekeeping: Remove clocksource inline functions\n\nThe three inline functions clocksource_read, clocksource_enable and\nclocksource_disable are simple wrappers of an indirect call plus the\ncopy from and to the mult_orig value. The functions are exclusively\nused by the timekeeping code which has intimate knowledge of the\nclocksource anyway. Therefore remove the inline functions. No\nfunctional change.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nLKML-Reference: \u003c20090814134807.903108946@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "31089c13bcb18d2cd2a3ddfbe3a28666346f237e",
      "tree": "9db4868a4c524efd6f927a555e43c009a70243a5",
      "parents": [
        "4cd1993f0046fbc765dbf20af90966f5661e3789"
      ],
      "author": {
        "name": "John Stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Fri Aug 14 15:47:18 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 15 10:55:45 2009 +0200"
      },
      "message": "timekeeping: Introduce timekeeping_leap_insert\n\nMove the adjustment of xtime, wall_to_monotonic and the update of the\nvsyscall variables to the timekeeping code.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nLKML-Reference: \u003c20090814134807.609730216@de.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\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": "79ef2bb01445400def20c7993b27fbcad27ca95f",
      "tree": "2b4941a2b4a6822dd0f50f13ff04e9e0a369878e",
      "parents": [
        "4841158b26e28e1476eed84c7347c18f11317750"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Jul 19 17:09:12 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Jul 19 17:15:54 2009 +0200"
      },
      "message": "clocksource: Prevent NULL pointer dereference\n\nWriting a zero length string to sys/.../current_clocksource will cause\na NULL pointer dereference if the clock events system is in one shot\n(highres or nohz) mode.\n\nPointed-out-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nLKML-Reference: \u003calpine.DEB.2.00.0907191545580.12306@bicker\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\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": "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": "507e123151149e578c9aae33eb876c49824da5f8",
      "tree": "10b4c36a278553ed3814c0643442e7210a7a1a15",
      "parents": [
        "bfdb4d9f0f611687d71cf6a460efc9e755f4a462"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Tue Jun 23 17:38:15 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 24 11:15:09 2009 +0200"
      },
      "message": "timer stats: Optimize by adding quick check to avoid function calls\n\nWhen the kernel is configured with CONFIG_TIMER_STATS but timer\nstats are runtime disabled we still get calls to\n__timer_stats_timer_set_start_info which initializes some\nfields in the corresponding struct timer_list.\n\nSo add some quick checks in the the timer stats setup functions\nto avoid function calls to __timer_stats_timer_set_start_info\nwhen timer stats are disabled.\n\nIn an artificial workload that does nothing but playing ping\npong with a single tcp packet via loopback this decreases cpu\nconsumption by 1 - 1.5%.\n\nThis is part of a modified function trace output on SLES11:\n\n perl-2497  [00] 28630647177732388 [+  125]: sk_reset_timer \u003c-tcp_v4_rcv\n perl-2497  [00] 28630647177732513 [+  125]: mod_timer \u003c-sk_reset_timer\n perl-2497  [00] 28630647177732638 [+  125]: __timer_stats_timer_set_start_info \u003c-mod_timer\n perl-2497  [00] 28630647177732763 [+  125]: __mod_timer \u003c-mod_timer\n perl-2497  [00] 28630647177732888 [+  125]: __timer_stats_timer_set_start_info \u003c-__mod_timer\n perl-2497  [00] 28630647177733013 [+   93]: lock_timer_base \u003c-__mod_timer\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Mustafa Mesanovic \u003cmustafa.mesanovic@de.ibm.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nLKML-Reference: \u003c20090623153811.GA4641@osiris.boeblingen.de.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "38df92b8cee936334f686c06df0e5fbb92e252df",
      "tree": "ffdfd4e5e746300f38a1267b207b293710b3c9a9",
      "parents": [
        "c4c5ab3089c8a794eb0bdaa9794d0f055dd82412",
        "f2e21c9610991e95621a81407cdbab881226419b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:51:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:51:44 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  NOHZ: Properly feed cpufreq ondemand governor\n"
    },
    {
      "commit": "19035e5b5d1e3127b4925d86f6a77964f91f2c3c",
      "tree": "c9e7e9073970176a5b0970da715cb6430c3c9069",
      "parents": [
        "f9db6e095115f9411b9647bdb9d81fe11f3d8b54",
        "eea08f32adb3f97553d49a4f79a119833036000a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 10:06:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 10:06:19 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus-migration\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-migration\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  timers: Logic to move non pinned timers\n  timers: /proc/sys sysctl hook to enable timer migration\n  timers: Identifying the existing pinned timers\n  timers: Framework for identifying pinned timers\n  timers: allow deferrable timers for intervals tv2-tv5 to be deferred\n\nFix up conflicts in kernel/sched.c and kernel/timer.c manually\n"
    },
    {
      "commit": "f9db6e095115f9411b9647bdb9d81fe11f3d8b54",
      "tree": "243cdffd9c49dffb909d17ec24614d93f527cc8b",
      "parents": [
        "3f27c0d2a469673e0f1efc8004b6f42428aa5b94",
        "c81fc2c331b8514ad112054cd2d87e6ec132286b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:50 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus-clockevents\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-clockevents\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  clockevent: export register_device and delta2ns\n  clockevents: tick_broadcast_device can become static\n"
    },
    {
      "commit": "3f27c0d2a469673e0f1efc8004b6f42428aa5b94",
      "tree": "548c975cabdcafcac92992d24410ae0a8334dff5",
      "parents": [
        "9aaa630503f20461bee65ebc4fd87ba8d7a2bd2c",
        "cd6d95d8449b7c9f415f26041e9ae173d387b6bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:33 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus-clocksource\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-clocksource\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  clocksource: prevent selection of low resolution clocksourse also for nohz\u003don\n  clocksource: sanity check sysfs clocksource changes\n"
    },
    {
      "commit": "cd6d95d8449b7c9f415f26041e9ae173d387b6bd",
      "tree": "ddd1f2d6436f398419045b3e0ee860c01523cfea",
      "parents": [
        "3f68535adad8dd89499505a65fb25d0e02d118cc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 12 11:29:27 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jun 13 12:00:26 2009 +0200"
      },
      "message": "clocksource: prevent selection of low resolution clocksourse also for nohz\u003don\n\ncommit 3f68535adad (clocksource: sanity check sysfs clocksource\nchanges) prevents selection of non high resolution capable\nclocksources when high resolution mode is active, but did not take\ninto account that the same rules apply for highres\u003doff nohz\u003don.\n\nCheck the tick device mode instead of hrtimer_hres_active() to verify\nwhether the system needs to be protected from a switch to jiffies or\nother non highres capable clock sources.\n\nReported-by: Luming Yu \u003cluming.yu@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3f68535adad8dd89499505a65fb25d0e02d118cc",
      "tree": "b347c3901d2d590d8c2b8c3be993ef20b278e61f",
      "parents": [
        "7d27558c4138ac6b3684dea35c2f4379b940a7dd"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Wed Jan 21 22:53:22 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jun 11 11:24:52 2009 +0200"
      },
      "message": "clocksource: sanity check sysfs clocksource changes\n\nThomas, Andrew and Ingo pointed out that we don\u0027t have any safety checks\nin the clocksource sysfs entries to make sure sysadmins don\u0027t try to\nchange the clocksource to a non high-res timer capable clocksource (such\nas jiffies) when high-res timers (HRT) is enabled.  Doing so will likely\nhang a system.\n\nCorrect this by filtering non HRT clocksources from available_clocksources\nand not accepting non HRT clocksources with HRT enabled.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "cf9fe114e3b37e14fc8434d5abb192e35df551b1",
      "tree": "0f82879295dc792f9df1a3ce79e143a3c073510f",
      "parents": [
        "c1d0d32a603ed06377f404adf2c538de33bb3634",
        "991ec02cdca33b03a132a0cacfe6f0aa0be9aa8d"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Jun 11 09:01:14 2009 +0300"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Jun 11 09:01:14 2009 +0300"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n"
    },
    {
      "commit": "f2e21c9610991e95621a81407cdbab881226419b",
      "tree": "00967210caf3b2ab82d0d0d29da0816d8978b8aa",
      "parents": [
        "cd86a536c81e9300d984327517548ca0652eebf9"
      ],
      "author": {
        "name": "Eero Nurkkala",
        "email": "ext-eero.nurkkala@nokia.com",
        "time": "Mon May 25 09:57:37 2009 +0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 27 15:33:43 2009 +0200"
      },
      "message": "NOHZ: Properly feed cpufreq ondemand governor\n\nA call from irq_exit() may occasionally pause the timing\ninfo for cpufreq ondemand governor. This results in the\ncpufreq ondemand governor to fail to calculate the \nsystem load properly. Thus, relocate the checks for this\nparticular case to keep the governor always functional.\n\nSigned-off-by: Eero Nurkkala \u003cext-eero.nurkkala@nokia.com\u003e\nReported-by: Tero Kristo \u003ctero.kristo@nokia.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5f8371cec93b94a24a55ba1de642ce6eade6d62c",
      "tree": "61b6d2acb10226b3c0f2d31bda3a49288e540eba",
      "parents": [
        "8e9bb19ef97d6594e735bee64b6d72103e350854",
        "d8586ba6e1415150e1bab89f0a05447bb6f2d6d5"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri May 22 13:29:37 2009 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri May 22 13:29:37 2009 +0900"
      },
      "message": "Merge branches \u0027sh/stable-updates\u0027 and \u0027sh/sparseirq\u0027\n"
    },
    {
      "commit": "dce48a84adf1806676319f6f480e30a6daa012f9",
      "tree": "79151f5d31d9c3dcdc723ab8877cb943b944890e",
      "parents": [
        "2ff799d3cff1ecb274049378b28120ee5c1c5e5f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Apr 11 10:43:41 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 15 15:32:45 2009 +0200"
      },
      "message": "sched, timers: move calc_load() to scheduler\n\nDimitri Sivanich noticed that xtime_lock is held write locked across\ncalc_load() which iterates over all online CPUs. That can cause long\nlatencies for xtime_lock readers on large SMP systems. \n\nThe load average calculation is an rough estimate anyway so there is\nno real need to protect the readers vs. the update. It\u0027s not a problem\nwhen the avenrun array is updated while a reader copies the values.\n\nInstead of iterating over all online CPUs let the scheduler_tick code\nupdate the number of active tasks shortly before the avenrun update\nhappens. The avenrun update itself is handled by the CPU which calls\ndo_timer().\n\n[ Impact: reduce xtime_lock write locked section ]\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\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": "5c333864a6ba811052d52ef14fbed056b9ac3512",
      "tree": "b0efe8d72c1cd5c555d528c0155251026425e695",
      "parents": [
        "597d0275736dad9c3bda6f0a00a1c477dc0f37b1"
      ],
      "author": {
        "name": "Arun R Bharadwaj",
        "email": "arun@linux.vnet.ibm.com",
        "time": "Thu Apr 16 12:14:37 2009 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 13 16:52:42 2009 +0200"
      },
      "message": "timers: Identifying the existing pinned timers\n\n* Arun R Bharadwaj \u003carun@linux.vnet.ibm.com\u003e [2009-04-16 12:11:36]:\n\nThe following pinned hrtimers have been identified and marked:\n1)sched_rt_period_timer\n2)tick_sched_timer\n3)stack_trace_timer_fn\n\n[ tglx: fixup the hrtimer pinned mode ]\n\nSigned-off-by: Arun R Bharadwaj \u003carun@linux.vnet.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c81fc2c331b8514ad112054cd2d87e6ec132286b",
      "tree": "e8b092222fd35c114a572272129d2eeb8f1e8238",
      "parents": [
        "a52f5c5620673c292cb159205bf0e1eb5af1985b"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "magnus.damm@gmail.com",
        "time": "Fri May 01 14:52:47 2009 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 02 11:51:07 2009 +0200"
      },
      "message": "clockevent: export register_device and delta2ns\n\nExport the following symbols using EXPORT_SYMBOL_GPL:\n - clockevent_delta2ns\n - clockevents_register_device\n\nThis allows us to build SuperH clockevent and clocksource\ndrivers as modules, see drivers/clocksource/sh_*.c\n\n[ Impact: allow modular build of clockevent drivers ]\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nLKML-Reference: \u003c20090501055247.8286.64067.sendpatchset@rx1.opensource.se\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7d27558c4138ac6b3684dea35c2f4379b940a7dd",
      "tree": "c10f5cee4dda1e6bc7977d016db020377f97feab",
      "parents": [
        "a25cbd045a2ffc42787d4dbcbb9c7118f5f42732"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Fri May 01 13:10:26 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 02 11:45:15 2009 +0200"
      },
      "message": "timekeeping: create arch_gettimeoffset infrastructure\n\nSome arches don\u0027t supply their own clocksource. This is mainly the\ncase in architectures that get their inter-tick times by reading the\ncounter on their interval timer.  Since these timers wrap every tick,\nthey\u0027re not really useful as clocksources.  Wrapping them to act like\none is possible but not very efficient. So we provide a callout these\narches can implement for use with the jiffies clocksource to provide\nfiner then tick granular time.\n\n[ Impact: ease the migration to generic time keeping ]\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a25cbd045a2ffc42787d4dbcbb9c7118f5f42732",
      "tree": "cefbaaf38cd09ffb3c96cacf2b93b6d9caaa4fe2",
      "parents": [
        "091438dd5668396328a3419abcbc6591159eb8d1"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "magnus.damm@gmail.com",
        "time": "Fri May 01 14:45:46 2009 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 02 11:45:15 2009 +0200"
      },
      "message": "clocksource: setup mult_orig in clocksource_enable()\n\nSetup clocksource mult_orig in clocksource_enable().\n\nClocksource drivers can save power by using keeping the\ndevice clock disabled while the clocksource is unused.\n\nIn practice this means that the enable() and disable()\ncallbacks perform clk_enable() and clk_disable().\n\nThe enable() callback may also use clk_get_rate() to get\nthe clock rate from the clock framework. This information\ncan then be used to calculate the shift and mult variables.\n\nCurrently the mult_orig variable is setup from mult at\nregistration time only. This is conflicting with the above\ncase since the clock is disabled and the mult variable is\nnot yet calculated at the time of registration.\n\nMoving the mult_orig setup code to clocksource_enable()\nallows us to both handle the common case with no enable()\ncallback and the mult-changed-after-enable() case.\n\n[ Impact: allow dynamic clock source usage ]\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nLKML-Reference: \u003c20090501054546.8193.10688.sendpatchset@rx1.opensource.se\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a52f5c5620673c292cb159205bf0e1eb5af1985b",
      "tree": "da1a57306d54bd832b3b0d656671daf27871f3e3",
      "parents": [
        "091438dd5668396328a3419abcbc6591159eb8d1"
      ],
      "author": {
        "name": "Dmitri Vorobiev",
        "email": "dmitri.vorobiev@movial.com",
        "time": "Fri May 01 13:10:21 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 02 10:31:14 2009 +0200"
      },
      "message": "clockevents: tick_broadcast_device can become static\n\nThe variable tick_broadcast_device is not used outside of the\nfile where it is defined, so let\u0027s make it static.\n\nSigned-off-by: Dmitri Vorobiev \u003cdmitri.vorobiev@movial.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "74a03b69d1b5ce00a568e142ca97e76b7f5239c6",
      "tree": "02bdea43ae6d528dcee97c00c3a8651f8841411a",
      "parents": [
        "091438dd5668396328a3419abcbc6591159eb8d1"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Fri May 01 13:10:25 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 02 10:22:27 2009 +0200"
      },
      "message": "clockevents: prevent endless loop in tick_handle_periodic()\n\ntick_handle_periodic() can lock up hard when a one shot clock event\ndevice is used in combination with jiffies clocksource.\n\nAvoid an endless loop issue by requiring that a highres valid\nclocksource be installed before we call tick_periodic() in a loop when\nusing ONESHOT mode. The result is we will only increment jiffies once\nper interrupt until a continuous hardware clocksource is available.\n\nWithout this, we can run into a endless loop, where each cycle through\nthe loop, jiffies is updated which increments time by tick_period or\nmore (due to clock steering), which can cause the event programming to\nthink the next event was before the newly incremented time and fail\ncausing tick_periodic() to be called again and the whole process loops\nforever.\n\n[ Impact: prevent hard lock up ]\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "4614e6adafa2c5e6c3a9c245af2807fa7bc5117a",
      "tree": "e4bb5eeaa252ede053abc6b3c4d15c4127ce7a32",
      "parents": [
        "8e19608e8b5c001e4a66ce482edc474f05fb7355"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Tue Apr 21 12:24:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 13:41:47 2009 -0700"
      },
      "message": "clocksource: add enable() and disable() callbacks\n\nAdd enable() and disable() callbacks for clocksources.\n\nThis allows us to put unused clocksources in power save mode.  The\nfunctions clocksource_enable() and clocksource_disable() wrap the\ncallbacks and are inserted in the timekeeping code to enable before use\nand disable after switching to a new clocksource.\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e19608e8b5c001e4a66ce482edc474f05fb7355",
      "tree": "06af4be339136da7476396604c30112238d84339",
      "parents": [
        "ff14ed5db6e7e5e5dc23712d3c877891d4d9a1a8"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Tue Apr 21 12:24:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 13:41:47 2009 -0700"
      },
      "message": "clocksource: pass clocksource to read() callback\n\nPass clocksource pointer to the read() callback for clocksources.  This\nallows us to share the callback between multiple instances.\n\n[hugh@veritas.com: fix powerpc build of clocksource pass clocksource mods]\n[akpm@linux-foundation.org: cleanup]\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6671de344cd661453bbee3cfde5574a974332436",
      "tree": "826873ae0180eea53b8fcc6e41938b67c656ba3f",
      "parents": [
        "831576fe40f4175e0767623cffa4aeb28157943a",
        "7c526e1fef8d604a9ec022d9145bba5dbfe40a11"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:05:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:05:42 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: (26 commits)\n  posix timers: fix RLIMIT_CPU \u0026\u0026 fork()\n  time: ntp: fix bug in ntp_update_offset() \u0026 do_adjtimex(), fix\n  time: ntp: clean up second_overflow()\n  time: ntp: simplify ntp_tick_adj calculations\n  time: ntp: make 64-bit constants more robust\n  time: ntp: refactor do_adjtimex() some more\n  time: ntp: refactor do_adjtimex()\n  time: ntp: fix bug in ntp_update_offset() \u0026 do_adjtimex()\n  time: ntp: micro-optimize ntp_update_offset()\n  time: ntp: simplify ntp_update_offset_fll()\n  time: ntp: refactor and clean up ntp_update_offset()\n  time: ntp: refactor up ntp_update_frequency()\n  time: ntp: clean up ntp_update_frequency()\n  time: ntp: simplify the MAX_TICKADJ_SCALED definition\n  time: ntp: simplify the second_overflow() code flow\n  time: ntp: clean up kernel/time/ntp.c\n  x86: hpet: stop HPET_COUNTER when programming periodic mode\n  x86: hpet: provide separate functions to stop and start the counter\n  x86: hpet: print HPET registers during setup (if hpet\u003dverbose is used)\n  time: apply NTP frequency/tick changes immediately\n  ...\n"
    },
    {
      "commit": "7c526e1fef8d604a9ec022d9145bba5dbfe40a11",
      "tree": "0234bf6c439cb0b91c69ac0eed28c526d05cbf2f",
      "parents": [
        "e8684605adf87d8e65f64ce7b0274d60a05085bd",
        "74019224ac34b044b44a31dd89a54e3477db4896",
        "a2a5ac8650b570bea3cb3614f77739dcd07d6632",
        "37bebc70d7ad4144c571d74500db3bb26ec0c0eb"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 15:45:52 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 15:45:52 2009 +0100"
      },
      "message": "Merge branches \u0027timers/new-apis\u0027, \u0027timers/ntp\u0027 and \u0027timers/urgent\u0027 into timers/core\n"
    },
    {
      "commit": "a2a5ac8650b570bea3cb3614f77739dcd07d6632",
      "tree": "366d8184698c17103ca68b4a51b47b0c63771186",
      "parents": [
        "39854fe8c165872d743f6a0c4860ca2de8e45ac9"
      ],
      "author": {
        "name": "John Stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Thu Feb 26 09:46:14 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 19:39:47 2009 +0100"
      },
      "message": "time: ntp: fix bug in ntp_update_offset() \u0026 do_adjtimex(), fix\n\nThe time_status conditional was accidentally placed right after we clear\nthe checked time_status bits, which causes us to take the conditional\nevery time through. This fixes it by moving the conditional to before we\nclear the time_status bits.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Clark Williams \u003cwilliams@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "39854fe8c165872d743f6a0c4860ca2de8e45ac9",
      "tree": "1bc791cf9dea4ffb34e85c0064326aa911889255",
      "parents": [
        "069569e025706f27f939785f86a94d5d8ce55dce"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 16:06:58 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:17 2009 +0100"
      },
      "message": "time: ntp: clean up second_overflow()\n\nImpact: cleanup, no functionality changed\n\nThe \u0027time_adj\u0027 local variable is named in a very confusing\nway because it almost shadows the \u0027time_adjust\u0027 global\nvariable - which is used in this same function.\n\nRename it to \u0027delta\u0027 - to make them stand apart more clearly.\n\nkernel/time/ntp.o:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2545\t    114\t    144\t   2803\t    af3\tntp.o.before\n   2545\t    114\t    144\t   2803\t    af3\tntp.o.after\n\nmd5:\n   1bf0b3be564512279ba7cee299d1d2be  ntp.o.before.asm\n   1bf0b3be564512279ba7cee299d1d2be  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "069569e025706f27f939785f86a94d5d8ce55dce",
      "tree": "49c563db54f77883dc5cd0ff1e381cf80898c0a5",
      "parents": [
        "2b9d1496e7835a603c340e8f0dd81f4b74d5f248"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 16:03:37 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:16 2009 +0100"
      },
      "message": "time: ntp: simplify ntp_tick_adj calculations\n\nImpact: micro-optimization\n\nConvert the (internal) ntp_tick_adj value we store from unscaled\nunits to scaled units. This is a constant that we never modify,\nso scaling it up once during bootup is enough - we dont have to\ndo it for every adjustment step.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2b9d1496e7835a603c340e8f0dd81f4b74d5f248",
      "tree": "419904a23470733179a0ecd647263777b2f8e780",
      "parents": [
        "e96291653b2e4df02f160b574070f6e632868e5e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 15:48:43 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:15 2009 +0100"
      },
      "message": "time: ntp: make 64-bit constants more robust\n\nImpact: cleanup, no functionality changed\n\n - make PPM_SCALE an explicit s64 constant, to\n   remove (s64) casts from usage sites.\n\nkernel/time/ntp.o:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2536\t    114\t    136\t   2786\t    ae2\tntp.o.before\n   2536\t    114\t    136\t   2786\t    ae2\tntp.o.after\n\nmd5:\n   40a7728d1188aa18e83e21a81fa7b150  ntp.o.before.asm\n   40a7728d1188aa18e83e21a81fa7b150  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e96291653b2e4df02f160b574070f6e632868e5e",
      "tree": "6cf3f04f18064cc96be95f06883c916cac90f937",
      "parents": [
        "80f2257116474ceed5fccab510b4f7245c0f49d7"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 15:35:18 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:15 2009 +0100"
      },
      "message": "time: ntp: refactor do_adjtimex() some more\n\nImpact: cleanup, no functionality changed\n\nFurther simplify do_adjtimex():\n\n - introduce the ntp_start_leap_timer() helper function\n - eliminate the goto adj_done complication\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "80f2257116474ceed5fccab510b4f7245c0f49d7",
      "tree": "513775794f865985dedcfc82dedcb1a60e469b76",
      "parents": [
        "10dd31a7a17254d6ba793305fc590455393e610e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 15:15:32 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:14 2009 +0100"
      },
      "message": "time: ntp: refactor do_adjtimex()\n\nImpact: cleanup, no functionality changed\n\ndo_adjtimex() is currently a monster function with a maze of\nbranches. Refactor the txc-\u003emodes setting aspects of it into\ntwo new helper functions:\n\n\tprocess_adj_status()\n\tprocess_adjtimex_modes()\n\nkernel/time/ntp.o:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2512\t    114\t    136\t   2762\t    aca\tntp.o.before\n   2512\t    114\t    136\t   2762\t    aca\tntp.o.after\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "10dd31a7a17254d6ba793305fc590455393e610e",
      "tree": "7416cf325f40eb27df6f0455807a0a1dfb203c2d",
      "parents": [
        "c7986acba211e8285e14c9603fb89e6f4ea0b9f8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 13:38:40 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:13 2009 +0100"
      },
      "message": "time: ntp: fix bug in ntp_update_offset() \u0026 do_adjtimex()\n\nImpact: change (fix) the way the NTP PLL seconds offset is initialized/tracked\n\nFix a bug and do a micro-optimization:\n\nWhen PLL is enabled we do not reset time_reftime. If the PLL\nwas off for a long time (for example after bootup), this is\narguably the wrong thing to do.\n\nWe already had a hack for the common boot-time case in\nntp_update_offset(), in form of:\n\n\tif (unlikely(time_status \u0026 STA_FREQHOLD || time_reftime \u003d\u003d 0))\n \t\tsecs \u003d 0;\n\nBut the update delta should be reset later on too - not just when\nthe PLL is enabled for the first time after bootup.\n\nSo do it on !STA_PLL -\u003e STA_PLL transitions.\n\nThis changes behavior, as previously if ntpd was disabled for\na long time and we restarted it, we\u0027d run from that last update,\nwith a very large delta.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c7986acba211e8285e14c9603fb89e6f4ea0b9f8",
      "tree": "fb90edb83df6a2cc0e7ac33896c731016f7f6a5a",
      "parents": [
        "478b7aab1682246a3d1e76e27a0aecb2f0013379"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 13:29:09 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:12 2009 +0100"
      },
      "message": "time: ntp: micro-optimize ntp_update_offset()\n\nImpact: cleanup, no functionality changed\n\nThe time_reftime update in ntp_update_offset() to xtime.tv_sec\nis a convoluted way of saying that we want to freeze the frequency\nand want the \u0027secs\u0027 delta to be 0. Also make this branch unlikely.\n\nThis shaves off 8 bytes from the code size:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2504\t    114\t    136\t   2754\t    ac2\tntp.o.before\n   2496\t    114\t    136\t   2746\t    aba\tntp.o.after\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "478b7aab1682246a3d1e76e27a0aecb2f0013379",
      "tree": "a40492dc5668a07c6511ae446204408e02a1e980",
      "parents": [
        "f939890b6687e05c42361655fb6610fa08f5a601"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 13:22:23 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:12 2009 +0100"
      },
      "message": "time: ntp: simplify ntp_update_offset_fll()\n\nImpact: cleanup, no functionality changed\n\nChange ntp_update_offset_fll() to delta logic instead of\nabsolute value logic. This eliminates \u0027freq_adj\u0027 from the\nfunction.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "f939890b6687e05c42361655fb6610fa08f5a601"
}
