)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "f939890b6687e05c42361655fb6610fa08f5a601",
      "tree": "9d01f8c51bd2fe883c407a36bf034b412181c483",
      "parents": [
        "bc26c31d446bc9c24cd6f7003777a05fe268ae48"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 12:57:49 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:11 2009 +0100"
      },
      "message": "time: ntp: refactor and clean up ntp_update_offset()\n\nImpact: cleanup, no functionality changed\n\n- introduce the ntp_update_offset_fll() helper\n- clean up the flow and variable naming\n\nkernel/time/ntp.o:\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   2504\t    114\t    136\t   2754\t    ac2\tntp.o.after\n\nmd5:\n   01f7b8e1a5472a3056f9e4ae84d46315  ntp.o.before.asm\n   01f7b8e1a5472a3056f9e4ae84d46315  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bc26c31d446bc9c24cd6f7003777a05fe268ae48",
      "tree": "26b1738745cd7f81af2259239799a0798cbe212b",
      "parents": [
        "9ce616aaefcb9309cb9c49a36310ebda6061b98b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 12:17:36 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:10 2009 +0100"
      },
      "message": "time: ntp: refactor up ntp_update_frequency()\n\nImpact: cleanup, no functionality changed\n\nChange ntp_update_frequency() from a hard to follow code\nflow that uses global variables as temporaries, to a clean\ninput+output flow.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9ce616aaefcb9309cb9c49a36310ebda6061b98b",
      "tree": "ec9c1d67c282f4a28844b72d21ce4412b84f377c",
      "parents": [
        "bbd1267690bb6940d0722dd33e929442c0409c01"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 12:42:59 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:09 2009 +0100"
      },
      "message": "time: ntp: clean up ntp_update_frequency()\n\nImpact: cleanup, no functionality changed\n\nPrepare a refactoring of ntp_update_frequency().\n\nkernel/time/ntp.o:\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   2504\t    114\t    136\t   2754\t    ac2\tntp.o.after\n\nmd5:\n   41f3009debc9b397d7394dd77d912f0a  ntp.o.before.asm\n   41f3009debc9b397d7394dd77d912f0a  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bbd1267690bb6940d0722dd33e929442c0409c01",
      "tree": "5da24af0b2dae1b7a9cbd40cb19e087eee7065ab",
      "parents": [
        "3c972c2444dcb7088999c32b8c5a7ab3b8a6c0b6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 12:11:11 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:08 2009 +0100"
      },
      "message": "time: ntp: simplify the MAX_TICKADJ_SCALED definition\n\nImpact: cleanup, no functionality changed\n\nThere\u0027s an ugly u64 typecase in the MAX_TICKADJ_SCALED definition,\nthis can be eliminated by making the MAX_TICKADJ constant\u0027s type\n64-bit (signed).\n\nkernel/time/ntp.o:\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   2504\t    114\t    136\t   2754\t    ac2\tntp.o.after\n\nmd5:\n   41f3009debc9b397d7394dd77d912f0a  ntp.o.before.asm\n   41f3009debc9b397d7394dd77d912f0a  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3c972c2444dcb7088999c32b8c5a7ab3b8a6c0b6",
      "tree": "0d89d2cfff1b3b32192ed54c70ee183356a11191",
      "parents": [
        "53bbfa9e9437e70b322368e82c723112d690e304"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 12:06:57 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:07 2009 +0100"
      },
      "message": "time: ntp: simplify the second_overflow() code flow\n\nImpact: cleanup, no functionality changed\n\nInstead of a hierarchy of conditions, transform them to clean\ngradual conditions and return\u0027s.\n\nThis makes the flow easier to read and makes the purpose of\nthe function easier to understand.\n\nkernel/time/ntp.o:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2552\t    170\t    168\t   2890\t    b4a\tntp.o.before\n   2552\t    170\t    168\t   2890\t    b4a\tntp.o.after\n\nmd5:\n   eae1275df0b7d6290c13f6f6f8f05c8c  ntp.o.before.asm\n   eae1275df0b7d6290c13f6f6f8f05c8c  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "53bbfa9e9437e70b322368e82c723112d690e304",
      "tree": "050817a4748d7cb7c5102273356136bbcfc2ea7e",
      "parents": [
        "fdcedf7b75808dd72c3cc0b931be11b04d75c60a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 20 07:58:42 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 18:38:06 2009 +0100"
      },
      "message": "time: ntp: clean up kernel/time/ntp.c\n\nImpact: cleanup, no functionality changed\n\nMake this file a bit more readable by applying a consistent coding style.\n\nNo code changed:\n\nkernel/time/ntp.o:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2552\t    170\t    168\t   2890\t    b4a\tntp.o.before\n   2552\t    170\t    168\t   2890\t    b4a\tntp.o.after\n\nmd5:\n   eae1275df0b7d6290c13f6f6f8f05c8c  ntp.o.before.asm\n   eae1275df0b7d6290c13f6f6f8f05c8c  ntp.o.after.asm\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fdcedf7b75808dd72c3cc0b931be11b04d75c60a",
      "tree": "c64743890ffa9722f8705ce0c214f0f08ffe4d9a",
      "parents": [
        "ba95fd47d177d46743ad94055908d22840370e06"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Wed Feb 18 16:02:22 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 19 10:10:08 2009 +0100"
      },
      "message": "time: apply NTP frequency/tick changes immediately\n\nSince the GENERIC_TIME changes landed, the adjtimex behavior changed\nfor struct timex.tick and .freq changed. When the tick or freq value\nis set, we adjust the tick_length_base in ntp_update_frequency().\nHowever, this new value doesn\u0027t get applied to tick_length until the\nnext second (via second_overflow).\n\nThis means some applications that do quick time tweaking do not see the\nrequested change made as quickly as expected.\n\nI\u0027ve run a few tests with this change, and ntpd still functions fine.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a75244c3d519fcb490ca2bf3f123c98017f1e8d0",
      "tree": "dee5b6a3589cfaae698a11297667e9e0c8b01ef5",
      "parents": [
        "a038a353c3de4040d8445ec568acebdac144436f"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Thu Feb 12 05:03:35 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 15 22:43:32 2009 -0800"
      },
      "message": "timecompare: generic infrastructure to map between two time bases\n\nMapping from a struct timecounter to a time returned by functions like\nktime_get_real() is implemented. This is sufficient to use this code\nin a network device driver which wants to support hardware time\nstamping and transformation of hardware time stamps to system time.\n\nThe interface could have been made more versatile by not depending on\na time counter, but this wasn\u0027t done to avoid writing glue code\nelsewhere.\n\nThe method implemented here is the one used and analyzed under the name\n\"assisted PTP\" in the LCI PTP paper:\nhttp://www.linuxclustersinstitute.org/conferences/archive/2008/PDF/Ohly_92221.pdf\n\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a038a353c3de4040d8445ec568acebdac144436f",
      "tree": "2fac74d812b47fa2d9fabfa55261d544813b66f6",
      "parents": [
        "0a834a36ac92375cd82d9e4fe4f571e257997d6a"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Thu Feb 12 05:03:34 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 15 22:43:31 2009 -0800"
      },
      "message": "clocksource: allow usage independent of timekeeping.c\n\nSo far struct clocksource acted as the interface between time/timekeeping.c\nand hardware. This patch generalizes the concept so that a similar\ninterface can also be used in other contexts. For that it introduces\nnew structures and related functions *without* touching the existing\nstruct clocksource.\n\nThe reasons for adding these new structures to clocksource.[ch] are\n* the APIs are clearly related\n* struct clocksource could be cleaned up to use the new structs\n* avoids proliferation of files with similar names (timesource.h?\n  timecounter.h?)\n\nAs outlined in the discussion with John Stultz, this patch adds\n* struct cyclecounter: stateless API to hardware which counts clock cycles\n* struct timecounter: stateful utility code built on a cyclecounter which\n  provides a nanosecond counter\n* only the function to read the nanosecond counter; deltas are used internally\n  and not exposed to users of timecounter\n\nThe code does no locking of the shared state. It must be called at least\nas often as the cycle counter wraps around to detect these wrap arounds.\nBoth is the responsibility of the timecounter user.\n\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5ba1ae92b6796b3367152ccd9baa022dde7eed4c",
      "tree": "3283a40603c06342d4197d838f6f1dec247a1474",
      "parents": [
        "ae1a25da8448271a99745da03100d5299575a269",
        "2d68259db26ad57fd9643f1c69b5181ec9836ca9",
        "42bb8cc5e81028e217105299001070d57eb84ad7",
        "6626bff24578753808c8b5bd4f1619e14e980f0f",
        "ff08f76d738d0ec0f334b187f61e160caa321d54"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 08 20:14:11 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 08 20:14:11 2009 +0100"
      },
      "message": "Merge branches \u0027timers/clockevents\u0027, \u0027timers/hpet\u0027, \u0027timers/hrtimers\u0027 and \u0027timers/urgent\u0027 into timers/core\n"
    },
    {
      "commit": "94df7de0289bc2df3d6e85cd2ece52bf42682f45",
      "tree": "b3f614b015adfb9574959687bb9b7ac4c884e23a",
      "parents": [
        "7f22391cbe82a80a9f891d8bd10fc28ff248d1e2"
      ],
      "author": {
        "name": "Sebastien Dugue",
        "email": "sebastien.dugue@bull.net",
        "time": "Mon Dec 01 14:09:07 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 22:35:29 2009 +0100"
      },
      "message": "hrtimers: allow the hot-unplugging of all cpus\n\nImpact: fix CPU hotplug hang on Power6 testbox\n\nOn architectures that support offlining all cpus (at least powerpc/pseries),\nhot-unpluging the tick_do_timer_cpu can result in a system hang.\n\nThis comes from the fact that if the cpu going down happens to be the\ncpu doing the tick, then as the tick_do_timer_cpu handover happens after the\ncpu is dead (via the CPU_DEAD notification), we\u0027re left without ticks,\njiffies are frozen and any task relying on timers (msleep, ...) is stuck.\nThat\u0027s particularly the case for the cpu looping in __cpu_die() waiting\nfor the dying cpu to be dead.\n\nThis patch addresses this by having the tick_do_timer_cpu handover happen\nearlier during the CPU_DYING notification. For this, a new clockevent\nnotification type is introduced (CLOCK_EVT_NOTIFY_CPU_DYING) which is triggered\nin hrtimer_cpu_notify().\n\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d68259db26ad57fd9643f1c69b5181ec9836ca9",
      "tree": "a185444af85f87e31937947c6be902f340addeea",
      "parents": [
        "7cb36b6ccdca03bd87e8faca7fd920643dd1aec7"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "magnus.damm@gmail.com",
        "time": "Fri Jan 16 17:14:38 2009 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jan 16 12:27:39 2009 +0100"
      },
      "message": "clockevents: let set_mode() setup delta information\n\nAllow the set_mode() clockevent callback to decide and fill in delta\ndetails such as shift, mult, max_delta_ns and min_delta_ns.\n\nWith this change the clockevent can be registered without delta details\nwhich allows us to keep the parent clock disabled until the clockevent\ngets setup using set_mode().\n\nLetting set_mode() fill in or update delta details allows us to save\npower by disabling the parent clock while the clockevent is unused.\nThis may however make the parent clock rate change, so next time the\nclockevent gets enabled we need let set_mode() to update the detla\ndetails accordingly. Doing it at registration time is not enough.\n\nFurthermore, the delta details seem unused in the case of periodic-only\nclockevent drivers, so this change also allows registration of such\ndrivers without the delta details filled in.\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "934d96eafadcf3eb3ccd094af9919f020907fc41",
      "tree": "8ccda81ddd77195ebe22d38b98d13f97452eedc6",
      "parents": [
        "6d612b0f943289856c6e8186c564cda922cd040e"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@infradead.org",
        "time": "Wed Jan 14 20:38:17 2009 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 15 12:06:56 2009 +0100"
      },
      "message": "time-sched.c: tick_nohz_update_jiffies should be static\n\nImpact: cleanup, reduce kernel size a bit, avoid sparse warning\n\nFixes sparse warning:\n\n kernel/time/tick-sched.c:137:6: warning: symbol \u0027tick_nohz_update_jiffies\u0027 was not declared. Should it be static?\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e3ee1e123183ca9847e74b7b8e2694c9e3b817a6",
      "tree": "652a84674ed05eaa46a813de2223af0bd0168a5a",
      "parents": [
        "5762ba1873b0bb9faa631aaa02f533c2b9837f82",
        "c59765042f53a79a7a65585042ff463b69cb248c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 12 11:32:03 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 12 11:32:03 2009 +0100"
      },
      "message": "Merge commit \u0027v2.6.29-rc1\u0027 into timers/hrtimers\n\nConflicts:\n\tkernel/time/tick-common.c\n"
    },
    {
      "commit": "57c44c5f6fb0a8002feb258c1af58e1a744b1fcb",
      "tree": "978bd46ca765a88e9c101cb705bbb0bf46015643",
      "parents": [
        "76052749143d03006271cc0ce8205ad756917062",
        "5a9e67b1a19e08a82387709f325d26e07b891d27"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:31:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:31:52 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: (24 commits)\n  trivial: chack -\u003e check typo fix in main Makefile\n  trivial: Add a space (and a comma) to a printk in 8250 driver\n  trivial: Fix misspelling of \"firmware\" in docs for ncr53c8xx/sym53c8xx\n  trivial: Fix misspelling of \"firmware\" in powerpc Makefile\n  trivial: Fix misspelling of \"firmware\" in usb.c\n  trivial: Fix misspelling of \"firmware\" in qla1280.c\n  trivial: Fix misspelling of \"firmware\" in a100u2w.c\n  trivial: Fix misspelling of \"firmware\" in megaraid.c\n  trivial: Fix misspelling of \"firmware\" in ql4_mbx.c\n  trivial: Fix misspelling of \"firmware\" in acpi_memhotplug.c\n  trivial: Fix misspelling of \"firmware\" in ipw2100.c\n  trivial: Fix misspelling of \"firmware\" in atmel.c\n  trivial: Fix misspelled firmware in Kconfig\n  trivial: fix an -\u003e a typos in documentation and comments\n  trivial: fix then -\u003e than typos in comments and documentation\n  trivial: update Jesper Juhl CREDITS entry with new email\n  trivial: fix singal -\u003e signal typo\n  trivial: Fix incorrect use of \"loose\" in event.c\n  trivial: printk: fix indentation of new_text_line declaration\n  trivial: rtc-stk17ta8: fix sparse warning\n  ...\n"
    },
    {
      "commit": "025dfdafe77f20b3890981a394774baab7b9c827",
      "tree": "c4d514990d7a0673df5d32aa11fded95f9644ff0",
      "parents": [
        "0abb8b6a939b742f273edc68b64dba26c57331bc"
      ],
      "author": {
        "name": "Frederik Schwarzer",
        "email": "schwarzerf@gmail.com",
        "time": "Thu Oct 16 19:02:37 2008 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Jan 06 11:28:06 2009 +0100"
      },
      "message": "trivial: fix then -\u003e than typos in comments and documentation\n\n- (better, more, bigger ...) then -\u003e (...) than\n\nSigned-off-by: Frederik Schwarzer \u003cschwarzerf@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "d9be28ea9110c596a05bd2d56afa94251bd19818",
      "tree": "c23a960b9087694a880011a4a956cbcf8c3c5b72",
      "parents": [
        "c70f22d203fc02c805b6ed4a3483b740dc36786b",
        "1c5745aa380efb6417b5681104b007c8612fb496",
        "47fea2adfc9e16846bc57c2f64ff233b354fef39",
        "238c6d54830c624f34ac9cf123ac04aebfca5013"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 09:33:57 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 09:33:57 2009 +0100"
      },
      "message": "Merge branches \u0027sched/clock\u0027, \u0027sched/cleanups\u0027 and \u0027linus\u0027 into sched/urgent\n"
    },
    {
      "commit": "7d3b56ba37a95f1f370f50258ed3954c304c524b",
      "tree": "86102527b92f02450aa245f084ffb491c18d2e0a",
      "parents": [
        "269b012321f2f1f8e4648c43a93bf432b42c6668",
        "ab14398abd195af91a744c320a52a1bce814dd1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "message": "Merge branch \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (77 commits)\n  x86: setup_per_cpu_areas() cleanup\n  cpumask: fix compile error when CONFIG_NR_CPUS is not defined\n  cpumask: use alloc_cpumask_var_node where appropriate\n  cpumask: convert shared_cpu_map in acpi_processor* structs to cpumask_var_t\n  x86: use cpumask_var_t in acpi/boot.c\n  x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids\n  sched: put back some stack hog changes that were undone in kernel/sched.c\n  x86: enable cpus display of kernel_max and offlined cpus\n  ia64: cpumask fix for is_affinity_mask_valid()\n  cpumask: convert RCU implementations, fix\n  xtensa: define __fls\n  mn10300: define __fls\n  m32r: define __fls\n  h8300: define __fls\n  frv: define __fls\n  cris: define __fls\n  cpumask: CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS\n  cpumask: zero extra bits in alloc_cpumask_var_node\n  cpumask: replace for_each_cpu_mask_nr with for_each_cpu in kernel/time/\n  cpumask: convert mm/\n  ...\n"
    },
    {
      "commit": "61420f59a589c0668f70cbe725785837c78ece90",
      "tree": "79ae77d731cd2425677b9527d50079d8cf34c3b2",
      "parents": [
        "d97106ab53f812910a62d18afb9dbe882819c1ba",
        "c742b31c03f37c5c499178f09f57381aa6c70131"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:56:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:56:24 2009 -0800"
      },
      "message": "Merge branch \u0027cputime\u0027 of git://git390.osdl.marist.edu/pub/scm/linux-2.6\n\n* \u0027cputime\u0027 of git://git390.osdl.marist.edu/pub/scm/linux-2.6:\n  [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID\n  [PATCH] improve idle cputime accounting\n  [PATCH] improve precision of idle time detection.\n  [PATCH] improve precision of process accounting.\n  [PATCH] idle cputime accounting\n  [PATCH] fix scaled \u0026 unscaled cputime accounting\n"
    },
    {
      "commit": "7eb19553369c46cc1fa64caf120cbcab1b597f7c",
      "tree": "ef1a3beae706b9497c845d0a2557ceb4d2754998",
      "parents": [
        "6092848a2a23b660150a38bc06f59d75838d70c8",
        "8c384cdee3e04d6194a2c2b192b624754f990835"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Dec 31 17:34:16 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 18:53:31 2009 +0100"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask\n\nConflicts:\n\tarch/x86/kernel/io_apic.c\n\tkernel/rcuclassic.c\n\tkernel/sched.c\n\tkernel/time/tick-sched.c\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n[ mingo@elte.hu: backmerged typo fix for io_apic.c ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b840d79631c882786925303c2b0f4fefc31845ed",
      "tree": "cda60a95d4507fe1321fc285af38982d7eb9693b",
      "parents": [
        "597b0d21626da4e6f09f132442caf0cc2b0eb47c",
        "c3d80000e3a812fe5a200d6bde755fbd7fa65481"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 11:44:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 11:44:09 2009 -0800"
      },
      "message": "Merge branch \u0027cpus4096-for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (66 commits)\n  x86: export vector_used_by_percpu_irq\n  x86: use logical apicid in x2apic_cluster\u0027s x2apic_cpu_mask_to_apicid_and()\n  sched: nominate preferred wakeup cpu, fix\n  x86: fix lguest used_vectors breakage, -v2\n  x86: fix warning in arch/x86/kernel/io_apic.c\n  sched: fix warning in kernel/sched.c\n  sched: move test_sd_parent() to an SMP section of sched.h\n  sched: add SD_BALANCE_NEWIDLE at MC and CPU level for sched_mc\u003e0\n  sched: activate active load balancing in new idle cpus\n  sched: bias task wakeups to preferred semi-idle packages\n  sched: nominate preferred wakeup cpu\n  sched: favour lower logical cpu number for sched_mc balance\n  sched: framework for sched_mc/smt_power_savings\u003dN\n  sched: convert BALANCE_FOR_xx_POWER to inline functions\n  x86: use possible_cpus\u003dNUM to extend the possible cpus allowed\n  x86: fix cpu_mask_to_apicid_and to include cpu_online_mask\n  x86: update io_apic.c to the new cpumask code\n  x86: Introduce topology_core_cpumask()/topology_thread_cpumask()\n  x86: xen: use smp_call_function_many()\n  x86: use work_on_cpu in x86/kernel/cpu/mcheck/mce_amd_64.c\n  ...\n\nFixed up trivial conflict in kernel/time/tick-sched.c manually\n"
    },
    {
      "commit": "5db0e1e9e0f30f160b832a0b5cd1131954bf4f6e",
      "tree": "c49877290fcbebb6245429bc5d554bea438c4fe8",
      "parents": [
        "174596a0b9f21e8844d70566a6bb29bf48a87750"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:29 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:29 2009 +1030"
      },
      "message": "cpumask: replace for_each_cpu_mask_nr with for_each_cpu in kernel/time/\n\nImpact: cleanup\n\nSimple replacement, now the _nr is redundant.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "6b954823c24f04ed026a8517f6bab5abda279db8",
      "tree": "bc034346fa51ba63361e23a1631e163eeb52097e",
      "parents": [
        "e7577c50f2fb2d1c167e2c04a4b4c2cc042acb82"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:25 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:25 2009 +1030"
      },
      "message": "cpumask: convert kernel time functions\n\nImpact: Use new APIs\n\nConvert kernel/time functions to use struct cpumask *.\n\nNote the ugly bitmap declarations in tick-broadcast.c.  These should\nbe cpumask_var_t, but there was no obvious initialization function to\nput the alloc_cpumask_var() calls in.  This was safe.\n\n(Eventually \u0027struct cpumask\u0027 will be undefined for CONFIG_CPUMASK_OFFSTACK,\nso we use a bitmap here to show we really mean it).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "79741dd35713ff4f6fd0eafd59fa94e8a4ba922d",
      "tree": "73c6b503fbd274cb3fcca7a0a68c6f636e3a53ad",
      "parents": [
        "457533a7d3402d1d91fbc125c8bd1bd16dcd3cd4"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Dec 31 15:11:38 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Dec 31 15:11:46 2008 +0100"
      },
      "message": "[PATCH] idle cputime accounting\n\nThe cpu time spent by the idle process actually doing something is\ncurrently accounted as idle time. This is plain wrong, the architectures\nthat support VIRT_CPU_ACCOUNTING\u003dy can do better: distinguish between the\ntime spent doing nothing and the time spent by idle doing work. The first\nis accounted with account_idle_time and the second with account_system_time.\nThe architectures that use the account_xxx_time interface directly and not\nthe account_xxx_ticks interface now need to do the check for the idle\nprocess in their arch code. In particular to improve the system vs true\nidle time accounting the arch code needs to measure the true idle time\ninstead of just testing for the idle process.\nTo improve the tick based accounting as well we would need an architecture\nprimitive that can tell us if the pt_regs of the interrupted context\npoints to the magic instruction that halts the cpu.\n\nIn addition idle time is no more added to the stime of the idle process.\nThis field now contains the system time of the idle process as it should\nbe. On systems without VIRT_CPU_ACCOUNTING this will always be zero as\nevery tick that occurs while idle is running will be accounted as idle\ntime.\n\nThis patch contains the necessary common code changes to be able to\ndistinguish idle system time and true idle time. The architectures with\nsupport for VIRT_CPU_ACCOUNTING need some changes to exploit this.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "457533a7d3402d1d91fbc125c8bd1bd16dcd3cd4",
      "tree": "cbe69310a66176dea2a9e7bd201db95efe4a2890",
      "parents": [
        "6a94cb73064c952255336cc57731904174b2c58f"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Dec 31 15:11:37 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Dec 31 15:11:46 2008 +0100"
      },
      "message": "[PATCH] fix scaled \u0026 unscaled cputime accounting\n\nThe utimescaled / stimescaled fields in the task structure and the\nglobal cpustat should be set on all architectures. On s390 the calls\nto account_user_time_scaled and account_system_time_scaled never have\nbeen added. In addition system time that is accounted as guest time\nto the user time of a process is accounted to the scaled system time\ninstead of the scaled user time.\nTo fix the bugs and to prevent future forgetfulness this patch merges\naccount_system_time_scaled into account_system_time and\naccount_user_time_scaled into account_user_time.\n\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Michael Neuling \u003cmikey@neuling.org\u003e\nAcked-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "2ca1a615835d9f4990f42102ab1f2ef434e7e89c",
      "tree": "726cf3d5f29a6c66c44e4bd68e7ebed2fd83d059",
      "parents": [
        "e12f0102ac81d660c9f801d0a0e10ccf4537a9de",
        "6a94cb73064c952255336cc57731904174b2c58f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Dec 31 23:05:57 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Dec 31 23:05:57 2008 +1030"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tarch/x86/kernel/io_apic.c\n"
    },
    {
      "commit": "1c5745aa380efb6417b5681104b007c8612fb496",
      "tree": "263b81742f7973c0dd86efe414a79a324c0769e4",
      "parents": [
        "6a94cb73064c952255336cc57731904174b2c58f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 22 23:05:28 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 31 09:53:21 2008 +0100"
      },
      "message": "sched_clock: prevent scd-\u003eclock from moving backwards, take #2\n\nRedo:\n\n  5b7dba4: sched_clock: prevent scd-\u003eclock from moving backwards\n\nwhich had to be reverted due to s2ram hangs:\n\n  ca7e716: Revert \"sched_clock: prevent scd-\u003eclock from moving backwards\"\n\n... this time with resume restoring GTOD later in the sequence\ntaken into account as well.\n\nThe \"timekeeping_suspended\" flag is not very nice but we cannot call into\nGTOD before it has been properly resumed and the scheduler will run very\nearly in the resume sequence.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5762ba1873b0bb9faa631aaa02f533c2b9837f82",
      "tree": "3ea61b03a12ec16620f8527c4c83cb90d80cf6cc",
      "parents": [
        "0ce74d9296c971b2355c26984ad0bc538e34dd6c"
      ],
      "author": {
        "name": "Sebastien Dugue",
        "email": "sebastien.dugue@bull.net",
        "time": "Mon Dec 01 14:09:07 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 30 07:37:19 2008 +0100"
      },
      "message": "hrtimers: allow the hot-unplugging of all cpus\n\nImpact: fix CPU hotplug hang on Power6 testbox\n\nOn architectures that support offlining all cpus (at least powerpc/pseries),\nhot-unpluging the tick_do_timer_cpu can result in a system hang.\n\nThis comes from the fact that if the cpu going down happens to be the\ncpu doing the tick, then as the tick_do_timer_cpu handover happens after the\ncpu is dead (via the CPU_DEAD notification), we\u0027re left without ticks,\njiffies are frozen and any task relying on timers (msleep, ...) is stuck.\nThat\u0027s particularly the case for the cpu looping in __cpu_die() waiting\nfor the dying cpu to be dead.\n\nThis patch addresses this by having the tick_do_timer_cpu handover happen\nearlier during the CPU_DYING notification. For this, a new clockevent\nnotification type is introduced (CLOCK_EVT_NOTIFY_CPU_DYING) which is triggered\nin hrtimer_cpu_notify().\n\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "32e8d18683adb322c994d1a0fe02d66380991f45",
      "tree": "1c697f6d1c042dc560b096dca76680f4acf415b3",
      "parents": [
        "4a6908a3a050aacc9c3a2f36b276b46c0629ad91",
        "0a57b783018a77ca16097198844438bdff4d012e",
        "39c04b55240342d0742ac48538d3d8c71bfc0a94",
        "b2e3c0adec918ea22b6c9d7c76193dd3aaba9bd4",
        "001474491fabeca233168a8598f721c808040f90",
        "c29541b24fb2c6301021637229ae5347c877330a",
        "8187926bdae98648db24db3391c4efd21ec669b1",
        "a5a64498c194c82ecad3a2d67cff6231cda8d3dd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 25 18:02:25 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 25 18:02:25 2008 +0100"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hpet\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/rtc\u0027 into timers/core\n"
    },
    {
      "commit": "968ea6d80e395cf11a51143cfa1b9a14ada676df",
      "tree": "dc2acec8c9bdced33afe1e273ee5e0b0b93d2703",
      "parents": [
        "7be7585393d311866653564fbcd10a3232773c0b",
        "8299608f140ae321e4eb5d1306184265d2b9511e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:55:51 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:55:51 2008 +1030"
      },
      "message": "Merge ../linux-2.6-x86\n\nConflicts:\n\n\tarch/x86/kernel/io_apic.c\n\tkernel/sched.c\n\tkernel/sched_stats.h\n"
    },
    {
      "commit": "320ab2b0b1e08e3805a3e1084a2f0eb1938d5d67",
      "tree": "1303d8ca53cca655425d512d65cc9ab043254b31",
      "parents": [
        "0de26520c7cabf36e1de090ea8092f011a6106ce"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:20:26 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:20:26 2008 +1030"
      },
      "message": "cpumask: convert struct clock_event_device to cpumask pointers.\n\nImpact: change calling convention of existing clock_event APIs\n\nstruct clock_event_timer\u0027s cpumask field gets changed to take pointer,\nas does the -\u003ebroadcast function.\n\nAnother single-patch change.  For safety, we BUG_ON() in\nclockevents_register_device() if it\u0027s not set.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "0de26520c7cabf36e1de090ea8092f011a6106ce"
}
