)]}'
{
  "log": [
    {
      "commit": "c465a76af658b443075d6efee1c3131257643020",
      "tree": "63c28c9fab02dedec7f03cee4a3ef7fe4dc1c072",
      "parents": [
        "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
        "1b02469088ac7a13d7e622b618b7410d0f1ce5ec",
        "fb02fbc14d17837b4b7b02dbb36142c16a7bf208",
        "d40e944c25fb4642adb2a4c580a48218a9f3f824",
        "1508487e7f16d992ad23cabd3712563ff912f413",
        "322acf6585f3c4e82ee32a246b0483ca0f6ad3f4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/debug\u0027 into v28-timers-for-linus\n"
    },
    {
      "commit": "5cd1c9c5cf30d4b33df3d3f74d8142f278d536b7",
      "tree": "6d74ddeff7e9a044d961d36db13071c158f0557a",
      "parents": [
        "eb3f938fd6292dc79f43a5fe14784b044776e9f0"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Mon Sep 22 14:42:43 2008 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 24 17:33:13 2008 +0200"
      },
      "message": "timekeeping: fix rounding problem during clock update\n\nDue to a rounding problem during a clock update it\u0027s possible for readers\nto observe the clock jumping back by 1nsec.  The following simplified\nexample demonstrates the problem:\n\ncycle\txtime\n0\t0\n1000\t999999.6\n2000\t1999999.2\n3000\t2999998.8\n...\n\n1500 \u003d\t1499999.4\n\u003d\t0.0 + 1499999.4\n\u003d\t999999.6 + 499999.8\n\nWhen reading the clock only the full nanosecond part is used, while\ntimekeeping internally keeps nanosecond fractions.  If the clock is now\nupdated at cycle 1500 here, a nanosecond is missing due to the truncation.\n\nThe simple fix is to round up the xtime value during the update, this also\nchanges the distance to the reference time, but the adjustment will\nautomatically take care that it stays under control.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\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": "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
      "tree": "947e86ec6e2d7362daa9a170a352c035f3618d64",
      "parents": [
        "9a055117d3d9cb562f83f8d4cd88772761f4cab0"
      ],
      "author": {
        "name": "John Stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Wed Aug 20 16:37:30 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 21 09:50:24 2008 +0200"
      },
      "message": "clocksource: introduce CLOCK_MONOTONIC_RAW\n\nIn talking with Josip Loncaric, and his work on clock synchronization (see\nbtime.sf.net), he mentioned that for really close synchronization, it is\nuseful to have access to \"hardware time\", that is a notion of time that is\nnot in any way adjusted by the clock slewing done to keep close time sync.\n\nPart of the issue is if we are using the kernel\u0027s ntp adjusted\nrepresentation of time in order to measure how we should correct time, we\ncan run into what Paul McKenney aptly described as \"Painting a road using\nthe lines we\u0027re painting as the guide\".\n\nI had been thinking of a similar problem, and was trying to come up with a\nway to give users access to a purely hardware based time representation\nthat avoided users having to know the underlying frequency and mask values\nneeded to deal with the wide variety of possible underlying hardware\ncounters.\n\nMy solution is to introduce CLOCK_MONOTONIC_RAW.  This exposes a\nnanosecond based time value, that increments starting at bootup and has no\nfrequency adjustments made to it what so ever.\n\nThe time is accessed from userspace via the posix_clock_gettime() syscall,\npassing CLOCK_MONOTONIC_RAW as the clock_id.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9a055117d3d9cb562f83f8d4cd88772761f4cab0",
      "tree": "a822607ebb46491e3b480d11c136c5bc8585e38c",
      "parents": [
        "1aa5dfb751d275ae7117d3b73ac423b4a46f2a73"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed Aug 20 16:37:28 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 21 09:50:24 2008 +0200"
      },
      "message": "clocksource: introduce clocksource_forward_now()\n\nTo keep the raw monotonic patch simple first introduce\nclocksource_forward_now(), which takes care of the offset since the last\nupdate_wall_time() call and adds it to the clock, so there is no need\nanymore to deal with it explicitly at various places, which need to make\nsignificant changes to the clock.\n\nThis is also gets rid of the timekeeping_suspend_nsecs, instead of\nwaiting until resume, the value is accumulated during suspend. In the end\nthere is only a single user of __get_nsec_offset() left, so I integrated\nit back to getnstimeofday().\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7dffa3c673fbcf835cd7be80bb4aec8ad3f51168",
      "tree": "63264208ed97f18a74a5a7cd2e100cc2c4e13449",
      "parents": [
        "8383c42399f394a89bd6c2f03632c53689bdde7a"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Thu May 01 04:34:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:59 2008 -0700"
      },
      "message": "ntp: handle leap second via timer\n\nRemove the leap second handling from second_overflow(), which doesn\u0027t have to\ncheck for it every second anymore.  With CONFIG_NO_HZ this also makes sure the\nleap second is handled close to the full second.  Additionally this makes it\npossible to abort a leap second properly by resetting the STA_INS/STA_DEL\nstatus bits.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: 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": "8383c42399f394a89bd6c2f03632c53689bdde7a",
      "tree": "c3f3a42a546a4afe3746e5894bcd425dc5a3d0bb",
      "parents": [
        "7fc5c78409479d826341b103bdf734cb4fb02436"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Thu May 01 04:34:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:59 2008 -0700"
      },
      "message": "ntp: remove current_tick_length()\n\ncurrent_tick_length used to do a little more, but now it just returns\ntick_length, which we can also access directly at the few places, where it\u0027s\nneeded.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: 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": "7fc5c78409479d826341b103bdf734cb4fb02436",
      "tree": "e68d8edddd633a9ed410b304684343afacf36175",
      "parents": [
        "153b5d054ac2d98ea0d86504884326b6777f683d"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Thu May 01 04:34:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:59 2008 -0700"
      },
      "message": "ntp: rename TICK_LENGTH_SHIFT to NTP_SCALE_SHIFT\n\nAs TICK_LENGTH_SHIFT is used for more than just the tick length, the name\nisn\u0027t quite approriate anymore, so this renames it to NTP_SCALE_SHIFT.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: 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": "d8bb6f4c1670c8324e4135c61ef07486f7f17379",
      "tree": "d53b676621b3bd6bb4d39a4b22588b58e1a7ea45",
      "parents": [
        "f1326973262382150c26bf4dfccd0fce310c4a9c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 01 19:45:18 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:19:55 2008 +0200"
      },
      "message": "x86: tsc prevent time going backwards\n\nWe already catch most of the TSC problems by sanity checks, but there\nis a subtle bug which has been in the code forever. This can cause\ntime jumps in the range of hours.\n\nThis was reported in:\n     http://lkml.org/lkml/2007/8/23/96\nand\n     http://lkml.org/lkml/2008/3/31/23\n\nI was able to reproduce the problem with a gettimeofday loop test on a\ndual core and a quad core machine which both have sychronized\nTSCs. The TSCs seems not to be perfectly in sync though, but the\nkernel is not able to detect the slight delta in the sync check. Still\nthere exists an extremly small window where this delta can be observed\nwith a real big time jump. So far I was only able to reproduce this\nwith the vsyscall gettimeofday implementation, but in theory this\nmight be observable with the syscall based version as well.\n\nCPU 0 updates the clock source variables under xtime/vyscall lock and\nCPU1, where the TSC is slighty behind CPU0, is reading the time right\nafter the seqlock was unlocked.\n\nThe clocksource reference data was updated with the TSC from CPU0 and\nthe value which is read from TSC on CPU1 is less than the reference\ndata. This results in a huge delta value due to the unsigned\nsubtraction of the TSC value and the reference value. This algorithm\ncan not be changed due to the support of wrapping clock sources like\npm timer.\n\nThe huge delta is converted to nanoseconds and added to xtime, which\nis then observable by the caller. The next gettimeofday call on CPU1\nwill show the correct time again as now the TSC has advanced above the\nreference value.\n\nTo prevent this TSC specific wreckage we need to compare the TSC value\nagainst the reference value and return the latter when it is larger\nthan the actual TSC value.\n\nI pondered to mark the TSC unstable when the readout is smaller than\nthe reference value, but this would render an otherwise good and fast\nclocksource unusable without a real good reason.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "92896bd9fd75b1c993b92874d339a8088bb75560",
      "tree": "2bd8bc5a8c8ee10a4b1fd62804281d2b486067f0",
      "parents": [
        "d2532dd20a126020de407c1c2476a75b53fce7ac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 24 11:07:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 24 11:07:15 2008 -0700"
      },
      "message": "Don\u0027t \u0027printk()\u0027 while holding xtime lock for writing\n\nThe printk() can deadlock because it can wake up klogd(), and\ntask enqueueing will try to read the time in order to set a hrtimer.\n\nReported-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nDebugged-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10a398d04c4a1fc395840f4d040493375f562302",
      "tree": "02096fe81b70e2baf8db35ebc9d303a1b13029c3",
      "parents": [
        "a79017660ea4597ec489fab3b5aaf71dd776dfc7"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Tue Mar 04 15:14:26 2008 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 09 08:42:57 2008 +0100"
      },
      "message": "time: remove obsolete CLOCK_TICK_ADJUST\n\nThe first version of the ntp_interval/tick_length inconsistent usage patch was\nrecently merged as bbe4d18ac2e058c56adb0cd71f49d9ed3216a405\n\nhttp://git.kernel.org/gitweb.cgi?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommit;h\u003dbbe4d18ac2e058c56adb0cd71f49d9ed3216a405\n\nWhile the fix did greatly improve the situation, it was correctly pointed out\nby Roman that it does have a small bug: If the users change clocksources after\nthe system has been running and NTP has made corrections, the correctoins made\nagainst the old clocksource will be applied against the new clocksource,\ncausing error.\n\nThe second attempt, which corrects the issue in the NTP_INTERVAL_LENGTH\ndefinition has also made it up-stream as commit\ne13a2e61dd5152f5499d2003470acf9c838eab84\n\nhttp://git.kernel.org/gitweb.cgi?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommit;h\u003de13a2e61dd5152f5499d2003470acf9c838eab84\n\nRoman has correctly pointed out that CLOCK_TICK_ADJUST is calculated\nbased on the PIT\u0027s frequency, and isn\u0027t really relevant to non-PIT\ndriven clocksources (that is, clocksources other then jiffies and pit).\n\nThis patch reverts both of those changes, and simply removes\nCLOCK_TICK_ADJUST.\n\nThis does remove the granularity error correction for users of PIT and Jiffies\nclocksource users, but the granularity error but for the majority of users, it\nshould be within the 500ppm range NTP can accommodate for.\n\nFor systems that have granularity errors greater then 500ppm, the\n\"ntp_tick_adj\u003d\" boot option can be used to compensate.\n\n[johnstul@us.ibm.com: provided changelog]\n[mattilinnanvuori@yahoo.com: maek ntp_tick_adj static]\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nAcked-by: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Matti Linnanvuori \u003cmattilinnanvuori@yahoo.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: mingo@elte.hu\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3eb056764dd806bbe84eb604e45e7470feeaafd8",
      "tree": "97a8fe2123d2c9df2bcb48052ac33d445a00f64c",
      "parents": [
        "cf4fc6cb76e50b01666e28a9f4b2e6fbcbb96d5f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Feb 08 04:19:25 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:29 2008 -0800"
      },
      "message": "time: fix typo in comments\n\nFix typo in comments.\n\nBTW: I have to fix coding style in arch/ia64/kernel/time.c also, otherwise\ncheckpatch.pl will be complaining.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf4fc6cb76e50b01666e28a9f4b2e6fbcbb96d5f",
      "tree": "ac1e027b7e759822014bd3a72ababd1fa1052198",
      "parents": [
        "0b858e6ff9a38b987a83d22e6f2a2f621c80608d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Feb 08 04:19:24 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:29 2008 -0800"
      },
      "message": "timekeeping: rename timekeeping_is_continuous to timekeeping_valid_for_hres\n\nFunction timekeeping_is_continuous() no longer checks flag\nCLOCK_IS_CONTINUOUS, and it checks CLOCK_SOURCE_VALID_FOR_HRES now.  So rename\nthe function accordingly.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1001d0a9ee74a468077dfd4da0565174e88de26b",
      "tree": "8775592b23e8049700ff98a7bdbcf9c802a0f127",
      "parents": [
        "3588a085cd52ef080bf72df772378e1ba6bb292f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 01 17:45:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 01 17:45:13 2008 +0100"
      },
      "message": "timekeeping: update xtime_cache when time(zone) changes\n\nxtime_cache needs to be updated whenever xtime and or wall_to_monotic\nare changed. Otherwise users of xtime_cache might see a stale (and in\nthe case of timezone changes utterly wrong) value until the next\nupdate happens.\n\nFixup the obvious places, which miss this update.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nTested-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bbe4d18ac2e058c56adb0cd71f49d9ed3216a405",
      "tree": "bc81b3a04cc01fed11ac47673475bf4019cc013f",
      "parents": [
        "37a47db8d7f0f38dac5acf5a13abbc8f401707fa"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Wed Jan 30 13:30:03 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:30:03 2008 +0100"
      },
      "message": "NTP: correct inconsistent ntp interval/tick_length usage\n\nI recently noticed on one of my boxes that when synched with an NTP\nserver, the drift value reported for the system was ~283ppm. While in\nsome cases, clock hardware can be that bad, it struck me as unusual as\nthe system was using the acpi_pm clocksource, which is one of the more\ntrustworthy and accurate clocksources on x86 hardware.\n\nI brought up another system and let it sync to the same NTP server, and\nI noticed a similar 280some ppm drift.\n\nIn looking at the code, I found that the acpi_pm\u0027s constant frequency\nwas being computed correctly at boot-up, however once the system was up,\neven without the ntp daemon running, the clocksource\u0027s frequency was\nbeing modified by the clocksource_adjust() function.\n\nDigging deeper, I realized that in the code that keeps track of how much\nthe clocksource is skewing from the ntp desired time, we were using\ndifferent lengths to establish how long an time interval was.\n\nThe clocksource was being setup with the following interval:\n\tNTP_INTERVAL_LENGTH \u003d NSEC_PER_SEC/NTP_INTERVAL_FREQ\n\nWhile the ntp code was using the tick_length_base value:\n\ttick_length_base ~\u003d (tick_usec * NSEC_PER_USEC * USER_HZ)\n\t\t\t\t\t/NTP_INTERVAL_FREQ\n\nThe subtle difference is:\n\t(tick_usec * NSEC_PER_USEC * USER_HZ) !\u003d NSEC_PER_SEC\n\nThis difference in calculation was causing the clocksource correction\ncode to apply a correction factor to the clocksource so the two\nintervals were the same, however this results in the actual frequency of\nthe clocksource to be made incorrect. I believe this difference would\naffect all clocksources, although to differing degrees depending on the\nclocksource resolution.\n\nThe issue was introduced when my HZ free ntp patch landed in 2.6.21-rc1,\nso my apologies for the mistake, and for not noticing it until now.\n\nThe following patch, corrects the clocksource\u0027s initialization code so\nit uses the same interval length as the code in ntp.c. After applying\nthis patch, the drift value for the same system went from ~283ppm to\nonly 2.635ppm.\n\nI believe this patch to be good, however it does affect all arches and\nI\u0027ve only tested on x86, so some caution is advised. I do think it would\nbe a likely candidate for a stable 2.6.24.x release.\n\nAny thoughts or feedback would be appreciated.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "efd9ac8630e89b9ee7ce64008bd7783952374f37",
      "tree": "2b06184b9241770aff309a9940f6e400371003a4",
      "parents": [
        "1d76c2622813fbc692b0d323028cfef9ee36051a"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "Geert.Uytterhoeven@sonycom.com",
        "time": "Wed Jan 30 13:30:01 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:30:01 2008 +0100"
      },
      "message": "time: fold __get_realtime_clock_ts() into getnstimeofday()\n\n  - getnstimeofday() was just a wrapper around __get_realtime_clock_ts()\n  - Replace calls to __get_realtime_clock_ts() by calls to getnstimeofday()\n  - Fix bogus reference to get_realtime_clock_ts(), which never existed\n\nSigned-off-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "af5ca3f4ec5cc4432a42a73b050dd8898ce8fd00",
      "tree": "3e5a3081b2802547f10da72c0026b4929d0e287b",
      "parents": [
        "528a4bf1d5ffed310d26fc1d82d45c02949f71cf"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu Dec 20 02:09:39 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:40 2008 -0800"
      },
      "message": "Driver core: change sysdev classes to use dynamic kobject names\n\nAll kobjects require a dynamically allocated name now. We no longer\nneed to keep track if the name is statically assigned, we can just\nunconditionally free() all kobject names on cleanup.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ba2a631b14fe8a9c122801c648c49a543d020d8d",
      "tree": "7f89f02d314c9aec6959066a1285fcd16f5bc2b1",
      "parents": [
        "f44ec6f3f89889a469773b1fd894f8fcc07c29cf"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Oct 16 23:27:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:53 2007 -0700"
      },
      "message": "kernel/time/timekeeping.c: cleanups\n\n- remove the no longer required __attribute__((weak)) of xtime_lock\n- remove the following no longer used EXPORT_SYMBOL\u0027s:\n  - xtime\n  - xtime_lock\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f20bf6125605acbbc7eb8c9420d7221c91aa83eb",
      "tree": "ce3dd753431dd32b346aa19f2f7b6bb84bb1f22e",
      "parents": [
        "8636225e8d23e6079d43f56faf415bd71b589dc0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 16 16:09:20 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 10:01:50 2007 -0700"
      },
      "message": "time: introduce xtime_seconds\n\nimprove performance of sys_time(). sys_time() returns time in seconds,\nbut it does so by calling do_gettimeofday() and then returning the\ntv_sec portion of the GTOD time. But the data structure \"xtime\", which\nis updated by every timer/scheduler tick, already offers HZ granularity\ntime.\n\nthe patch improves the sysbench oltp macrobenchmark by 4-5% on an AMD\ndual-core system:\n\nv2.6.23:\n\n#threads\n\n   1:     transactions:                        4073   (407.23 per sec.)\n   2:     transactions:                        8530   (852.81 per sec.)\n   3:     transactions:                        8321   (831.88 per sec.)\n   4:     transactions:                        8407   (840.58 per sec.)\n   5:     transactions:                        8070   (806.74 per sec.)\n\nv2.6.23 + sys_time-speedup.patch:\n\n   1:     transactions:                        4281   (428.09 per sec.)\n   2:     transactions:                        8910   (890.85 per sec.)\n   3:     transactions:                        8659   (865.79 per sec.)\n   4:     transactions:                        8676   (867.34 per sec.)\n   5:     transactions:                        8532   (852.91 per sec.)\n\nand by 4-5% on an Intel dual-core system too:\n\n2.6.23:\n\n  1:     transactions:                        4560   (455.94 per sec.)\n  2:     transactions:                        10094  (1009.30 per sec.)\n  3:     transactions:                        9755   (975.36 per sec.)\n  4:     transactions:                        9859   (985.78 per sec.)\n  5:     transactions:                        9701   (969.72 per sec.)\n\n2.6.23 + sys_time-speedup.patch:\n\n  1:     transactions:                        4779   (477.84 per sec.)\n  2:     transactions:                        10103  (1010.14 per sec.)\n  3:     transactions:                        10141  (1013.93 per sec.)\n  4:     transactions:                        10371  (1036.89 per sec.)\n  5:     transactions:                        10178  (1017.50 per sec.)\n\n(the more CPUs the system has, the more speedup this patch gives for\nthis particular workload.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a669ee8a790487b7ec1edda762d39615a78264b",
      "tree": "487270be1b035d75622f0f9b1e34f1c6b2cfbeae",
      "parents": [
        "3be9095063885d482b87d3875ea7f28e635882d0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "timekeeping: Prevent time going backwards on resume\n\nTimekeeping resume adjusts xtime by adding the slept time in seconds and\nresets the reference value of the clock source (clock-\u003ecycle_last).\nclock-\u003ecycle last is used to calculate the delta between the last xtime\nupdate and the readout of the clock source in __get_nsec_offset(). xtime\nplus the offset is the current time. The resume code ignores the delta\nwhich had already elapsed between the last xtime update and the actual\ntime of suspend. If the suspend time is short, then we can see time\ngoing backwards on resume.\n\nSuspend:\noffs_s \u003d clock-\u003eread() - clock-\u003ecycle_last;\nnow \u003d xtime + offs_s;\ntimekeeping_suspend_time \u003d read_rtc();\n\nResume:\nsleep_time \u003d read_rtc() - timekeeping_suspend_time;\nxtime.tv_sec +\u003d sleep_time;\nclock-\u003ecycle_last \u003d clock-\u003eread();\noffs_r \u003d clock-\u003eread() - clock-\u003ecycle_last;\nnow \u003d xtime + offs_r;\n\nif sleep_time_seconds \u003d\u003d 0 and offs_r \u003c offs_s, then time goes\nbackwards.\n\nFix this by storing the offset from the last xtime update and add it to\nxtime during resume, when we reset clock-\u003ecycle_last:\n\nsleep_time \u003d read_rtc() - timekeeping_suspend_time;\nxtime.tv_sec +\u003d sleep_time;\nxtime +\u003d offs_s;\t/* Fixup xtime offset at suspend time */\nclock-\u003ecycle_last \u003d clock-\u003eread();\noffs_r \u003d clock-\u003eread() - clock-\u003ecycle_last;\nnow \u003d xtime + offs_r;\n\nThanks to Marcelo for tracking this down on the OLPC and providing the\nnecessary details to analyze the root cause.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Tosatti \u003cmarcelo@kvack.org\u003e\n\n"
    },
    {
      "commit": "3be9095063885d482b87d3875ea7f28e635882d0",
      "tree": "c29f9a90a244032515c4f830e1d73d4dd2a3f1ac",
      "parents": [
        "d0174640eedc1cd756754f03afe2dbb3d56de74e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "timekeeping: access rtc outside of xtime lock\n\nLockdep complains about the access of rtc in timekeeping_suspend\ninside the interrupt disabled region of the write locked xtime lock.\nMove the access outside.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\n\n"
    },
    {
      "commit": "17c38b7490b3f0300c7812aefdae2ddda7ab4112",
      "tree": "0f7a9ee0c691aef3497030e38c3ba8e3c13a985c",
      "parents": [
        "2c6b47de17c75d553de3e2fb426d8298d2074585"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 24 18:38:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 25 10:17:44 2007 -0700"
      },
      "message": "Cache xtime every call to update_wall_time\n\nThis avoids xtime lag seen with dynticks, because while \u0027xtime\u0027 itself\nis still not updated often, we keep a \u0027xtime_cache\u0027 variable around that\ncontains the approximate real-time that _is_ updated each time we do a\n\u0027update_wall_time()\u0027, and is thus never off by more than one tick.\n\nIOW, this restores the original semantics for \u0027xtime\u0027 users, as long as\nyou use the proper abstraction functions (ie \u0027current_kernel_time()\u0027 or\n\u0027get_seconds()\u0027 depending on whether you want a timespec or just the\nseconds field).\n\n[ Updated Patch.  As penance for my sins I\u0027ve also yanked another #ifdef\n  that was added to avoid the xtime lag w/ hrtimers.  ]\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c6b47de17c75d553de3e2fb426d8298d2074585",
      "tree": "c8edc3d727d85cb3e1c043583c350a04a133e1a3",
      "parents": [
        "0de085bb474f64e4fdb2f1ff3268590792648c7b"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 24 17:47:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 25 10:09:20 2007 -0700"
      },
      "message": "Cleanup non-arch xtime uses, use get_seconds() or current_kernel_time().\n\nThis avoids use of the kernel-internal \"xtime\" variable directly outside\nof the actual time-related functions.  Instead, use the helper functions\nthat we already have available to us.\n\nThis doesn\u0027t actually change any behaviour, but this will allow us to\nfix the fact that \"xtime\" isn\u0027t updated very often with CONFIG_NO_HZ\n(because much of the realtime information is maintained as separate\noffsets to \u0027xtime\u0027), which has caused interfaces that use xtime directly\nto get a time that is out of sync with the real-time clock by up to a\nthird of a second or so.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c36c282b88963d0957368a443168588e62301fda",
      "tree": "6343887ae42a65635a61b4ad99fd7f3e8dd24758",
      "parents": [
        "f4fbfb0dda5577075a049eec7fb7ad38abca1912",
        "1f564ad6d4182859612cbae452122e5eb2d62a76"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 20 11:26:47 2007 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 20 11:26:47 2007 -0700"
      },
      "message": "Pull ia64-clocksource into release branch\n"
    },
    {
      "commit": "1f564ad6d4182859612cbae452122e5eb2d62a76",
      "tree": "ef98ce12ed64853437c35a81e29f0d1c09a4393b",
      "parents": [
        "0aa366f351d044703e25c8425e508170e80d83b1"
      ],
      "author": {
        "name": "Bob Picco",
        "email": "bob.picco@hp.com",
        "time": "Wed Jul 18 15:51:28 2007 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 20 11:23:02 2007 -0700"
      },
      "message": "[IA64] remove time interpolator\n\nRemove time_interpolator code (This is generic code, but\nonly user was ia64.  It has been superseded by the\nCONFIG_GENERIC_TIME code).\n\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Peter Keilty \u003cpeter.keilty@hp.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "71120f183bff04ba4f7ba3cc554202061912d548",
      "tree": "3b8281d6d3c6034aab4c3fa1c15dfd95faf2c17f",
      "parents": [
        "10146801e8b960d7473e350b60458d9d5a2be1cf"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 19 01:49:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "timekeeping: fixup shadow variable argument\n\nclocksource_adjust() has a clock argument, which shadows the file global clock\nvariable.  Fix this up.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c3f1a573237b90ef331267260358a0ec4ac9079",
      "tree": "f308047c4f40022d4b8f7226fba73b067dcd2d70",
      "parents": [
        "35ef63f635aa0e414ad6cdb2a4092e1caf99272c"
      ],
      "author": {
        "name": "Tomas Janousek",
        "email": "tjanouse@redhat.com",
        "time": "Sun Jul 15 23:39:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:41 2007 -0700"
      },
      "message": "Introduce boot based time\n\nThe commits\n\n  411187fb05cd11676b0979d9fbf3291db69dbce2 (GTOD: persistent clock support)\n  c1d370e167d66b10bca3b602d3740405469383de (i386: use GTOD persistent clock\n    support)\n\nchanged the monotonic time so that it no longer jumps after resume, but it\u0027s\nnot possible to use it for boot time and process start time calculations then.\n Also, the uptime no longer increases during suspend.\n\nI add a variable to track the wall_to_monotonic changes, a function to get the\nreal boot time and a function to get the boot based time from the monotonic\none.\n\n[akpm@linux-foundation.org: remove exports, add comment]\nSigned-off-by: Tomas Janousek \u003ctjanouse@redhat.com\u003e\nCc: Tomas Smetana \u003ctsmetana@redhat.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d10ff3fb62bd38415c0f7be3d75d107e1f67e59a",
      "tree": "402df109059cb64f88fb26c0cf5eb86b8c9fdae3",
      "parents": [
        "705962ccc9d21a08b74b6b6e1d3cf10f98968a67"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 14 11:10:02 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 14 12:13:11 2007 -0700"
      },
      "message": "timekeeping fix patch got mis-applied\n\nThe time keeping code move to kernel/time/timekeeping.c broke the\nclocksource resume logic patch, which got applied to the old file by a\nfuzzy application.  Fix it up and move the clocksource_resume() call to\nthe appropriate place.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n[ tssk, tssk, everybody should use --fuzz\u003d0 ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8524070b7982d76258942275908b7434cfcab4b4",
      "tree": "6e63c45c3b9ff6a86ad32b1de7adf48889eb0bfc",
      "parents": [
        "329c8d84ca1946c037d9859dc251b56d8b1b4630"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue May 08 00:27:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:06 2007 -0700"
      },
      "message": "Move timekeeping code to timekeeping.c\n\nMove the timekeeping code out of kernel/timer.c and into\nkernel/time/timekeeping.c.  I made no cleanups or other changes in transit.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
