)]}'
{
  "log": [
    {
      "commit": "361833efac4d277d209008e1e0658e597bc1bdef",
      "tree": "ef3b3f3bbe274f1e59cc1521566a85584777ace7",
      "parents": [
        "54ef76f37bcccf8c16fbaaed13c3c40825195958",
        "c300ba252829e9325e08f0af60687add94445b25"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 14 12:19:13 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 14 12:19:13 2008 +0200"
      },
      "message": "Merge branch \u0027sched/clock\u0027 into sched/devel\n"
    },
    {
      "commit": "c300ba252829e9325e08f0af60687add94445b25",
      "tree": "93c583012a3f26617e95aea516c02716ce254f5d",
      "parents": [
        "a83bc47c33ab182f1e48977fd5a04024d713c75e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 09 00:15:33 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:28 2008 +0200"
      },
      "message": "sched_clock: and multiplier for TSC to gtod drift\n\nThe sched_clock code currently tries to keep all CPU clocks of all CPUS\nsomewhat in sync. At every clock tick it records the gtod clock and\nuses that and jiffies and the TSC to calculate a CPU clock that tries to\nstay in sync with all the other CPUs.\n\nftrace depends heavily on this timer and it detects when this timer\n\"jumps\".  One problem is that the TSC and the gtod also drift.\nWhen the TSC is 0.1% faster or slower than the gtod it is very noticeable\nin ftrace. To help compensate for this, I\u0027ve added a multiplier that\ntries to keep the CPU clock updating at the same rate as the gtod.\n\nI\u0027ve tried various ways to get it to be in sync and this ended up being\nthe most reliable. At every scheduler tick we calculate the new multiplier:\n\n  multi \u003d delta_gtod / delta_TSC\n\nThis means we perform a 64 bit divide at the tick (once a HZ). A shift\nis used to handle the accuracy.\n\nOther methods that failed due to dynamic HZ are:\n\n(not used)  multi +\u003d (gtod - tsc) / delta_gtod\n(not used)  multi +\u003d (gtod - (last_tsc + delta_tsc)) / delta_gtod\n\nas well as other variants.\n\nThis code still allows for a slight drift between TSC and gtod, but\nit keeps the damage down to a minimum.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a83bc47c33ab182f1e48977fd5a04024d713c75e",
      "tree": "759eb1afc83271ee2815dbd1214635ec7b506b5c",
      "parents": [
        "c0c87734f125d2fa8ebc70310f3257fa6209f2b6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 09 00:15:32 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:27 2008 +0200"
      },
      "message": "sched_clock: record TSC after gtod\n\nTo read the gtod we need to grab the xtime lock for read. Reading the gtod\nbefore the TSC can cause a bigger gab if the xtime lock is contended.\n\nThis patch simply reverses the order to read the TSC after the gtod.\nThe locking in the reading of the gtod handles any barriers one might\nthink is needed.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c0c87734f125d2fa8ebc70310f3257fa6209f2b6",
      "tree": "c94f9f6c1e8dcc68c2a30caaff64db7e81a65510",
      "parents": [
        "2b8a0cf4890d7537a77b51caa8f508e4a05a0e67"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 09 00:15:31 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:27 2008 +0200"
      },
      "message": "sched_clock: only update deltas with local reads.\n\nReading the CPU clock should try to stay accurate within the CPU.\nBy reading the CPU clock from another CPU and updating the deltas can\ncause unneeded jumps when reading from the local CPU.\n\nThis patch changes the code to update the last read TSC only when read\nfrom the local CPU.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2b8a0cf4890d7537a77b51caa8f508e4a05a0e67",
      "tree": "a591ef66a6340bf03e6380b6f2aa76ef2fc45ce2",
      "parents": [
        "af52a90a14cdaa54ecbfb6e6982abb13466a4b56"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 07 19:49:41 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:26 2008 +0200"
      },
      "message": "sched_clock: fix calculation of other CPU\n\nThe algorithm to calculate the \u0027now\u0027 of another CPU is not correct.\nAt each scheduler tick, each CPU records the last sched_clock and\ngtod (tick_raw and tick_gtod respectively). If the TSC is somewhat the\nsame in speed between two clocks the algorithm would be:\n\n  tick_gtod1 + (now1 - tick_raw1) \u003d tick_gtod2 + (now2 - tick_raw2)\n\nTo calculate now2 we would have:\n\n  now2 \u003d (tick_gtod1 - tick_gtod2) + (tick_raw2 - tick_raw1) + now1\n\nCurrently the algorithm is:\n\n  now2 \u003d (tick_gtod1 - tick_gtod2) + (tick_raw1 - tick_raw2) + now1\n\nThis solves most of the rest of the issues I\u0027ve had with timestamps in\nftace.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "af52a90a14cdaa54ecbfb6e6982abb13466a4b56",
      "tree": "2488d6d7943b167987c33f984f7109c3dc4ae783",
      "parents": [
        "f7cce27f5605b9e137b829a47949cb2d3c7e1cab"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 07 14:16:52 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:26 2008 +0200"
      },
      "message": "sched_clock: stop maximum check on NO HZ\n\nWorking with ftrace I would get large jumps of 11 millisecs or more with\nthe clock tracer. This killed the latencing timings of ftrace and also\ncaused the irqoff self tests to fail.\n\nWhat was happening is with NO_HZ the idle would stop the jiffy counter and\nbefore the jiffy counter was updated the sched_clock would have a bad\ndelta jiffies to compare with the gtod with the maximum.\n\nThe jiffies would stop and the last sched_tick would record the last gtod.\nOn wakeup, the sched clock update would compare the gtod + delta jiffies\n(which would be zero) and compare it to the TSC. The TSC would have\ncorrectly (with a stable TSC) moved forward several jiffies. But because the\njiffies has not been updated yet the clock would be prevented from moving\nforward because it would appear that the TSC jumped too far ahead.\n\nThe clock would then virtually stop, until the jiffies are updated. Then\nthe next sched clock update would see that the clock was very much behind\nsince the delta jiffies is now correct. This would then jump the clock\nforward by several jiffies.\n\nThis caused ftrace to report several milliseconds of interrupts off\nlatency at every resume from NO_HZ idle.\n\nThis patch adds hooks into the nohz code to disable the checking of the\nmaximum clock update when nohz is in effect. It resumes the max check\nwhen nohz has updated the jiffies again.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f7cce27f5605b9e137b829a47949cb2d3c7e1cab",
      "tree": "fbe270ccfb5cee3d055a52b6351ade2d34c5d74b",
      "parents": [
        "62c43dd9864dbd52ff158922d1d08c75f20335af"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 07 14:16:51 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:25 2008 +0200"
      },
      "message": "sched_clock: widen the max and min time\n\nWith keeping the max and min sched time within one jiffy of the gtod clock\nwas too tight. Just before a schedule tick the max could easily be hit, as\nwell as just after a schedule_tick the min could be hit. This caused the\nclock to jump around by a jiffy.\n\nThis patch widens the minimum to\n   last gtod + (delta_jiffies ? delta_jiffies - 1 : 0) * TICK_NSECS\n\nand the maximum to\n    last gtod + (2 + delta_jiffies) * TICK_NSECS\n\nThis keeps the minum to gtod or if one jiffy less than delta jiffies\nand the maxim 2 jiffies ahead of gtod. This may cause unstable TSCs to be\na bit more sporadic, but it helps keep a clock with a stable TSC working well.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "62c43dd9864dbd52ff158922d1d08c75f20335af",
      "tree": "9b8ce91f634b56e1420759f6872c6bfc21deec97",
      "parents": [
        "70ff05554f91a1edda1f11684da1dbde09e2feea"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 07 14:16:50 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:53:25 2008 +0200"
      },
      "message": "sched_clock: record from last tick\n\nThe sched_clock code tries to keep within the gtod time by one tick (jiffy).\nThe current code mistakenly keeps track of the delta jiffies between\nupdates of the clock, where the the delta is used to compare with the\nnumber of jiffies that have past since an update of the gtod. The gtod is\nupdated at each schedule tick not each sched_clock update. After one\njiffy passes the clock is updated fine. But the delta is taken from the\nlast update so if the next update happens before the next tick the delta\njiffies used will be incorrect.\n\nThis patch changes the code to check the delta of jiffies between ticks\nand not updates to match the comparison of the updates with the gtod.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d452c9b10caeec455eb5e56a0ef4ed485178213",
      "tree": "8c7af10fa4b2f69307a1b4e0a997ed9d4e2ed32d",
      "parents": [
        "4c9fe8ad813b257a2b9ddf0f752105a75a7dae63"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jun 29 15:01:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jun 29 15:05:00 2008 +0200"
      },
      "message": "sched: sched_clock_cpu() based cpu_clock(), lockdep fix\n\nVegard Nossum reported:\n\n\u003e WARNING: at kernel/lockdep.c:2738 check_flags+0x142/0x160()\n\nwhich happens due to:\n\n unsigned long long cpu_clock(int cpu)\n {\n         unsigned long long clock;\n         unsigned long flags;\n\n         raw_local_irq_save(flags);\n\nas lower level functions can take locks, we must not do that, use\nproper lockdep-annotated irq save/restore.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4c9fe8ad813b257a2b9ddf0f752105a75a7dae63",
      "tree": "fd8264ab8a8840fbaeb8a894ee35fb2a8c57b924",
      "parents": [
        "55e12e5e7b1d7e7c05a4be10cb5fd092c039aa78"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 14:49:35 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 14:49:06 2008 +0200"
      },
      "message": "sched: export cpu_clock\n\nthe rcutorture module relies on cpu_clock.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "76a2a6ee8a0660a29127f05989ac59ae1ce865fa",
      "tree": "93ae1dd3cc5f564fc1e9d30bcdb0cd313f67221a",
      "parents": [
        "c09595f63bb1909c5dc4dca288f4fe818561b5f3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 27 13:41:15 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 14:31:30 2008 +0200"
      },
      "message": "sched: sched_clock_cpu() based cpu_clock()\n\nwith sched_clock_cpu() being reasonably in sync between cpus (max 1 jiffy\ndifference) use this to provide cpu_clock().\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a381759d6ad5c5dea5a981918e0b4493e9b66ac7",
      "tree": "059df197fe2974c655fc098e3aaf6968a3cc2a3c",
      "parents": [
        "6363ca57c76b7b83639ca8c83fc285fa26a7880e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu May 29 10:07:15 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 29 11:29:19 2008 +0200"
      },
      "message": "sched: fix sched_clock_cpu()\n\nMake sched_clock_cpu() return 0 before it has been initialized and avoid\ncorrupting its state due to doing so.\n\nThis fixes the weird printk timestamp jump reported.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n"
    },
    {
      "commit": "3e51f33fcc7f55e6df25d15b55ed10c8b4da84cd",
      "tree": "3752f9ea8e014ec40e95a1b197b0a3d18e1056a8",
      "parents": [
        "a5574cf65b5f03ce9ade3918764fe22e5e2371e3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat May 03 18:29:28 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 05 23:56:18 2008 +0200"
      },
      "message": "sched: add optional support for CONFIG_HAVE_UNSTABLE_SCHED_CLOCK\n\nthis replaces the rq-\u003eclock stuff (and possibly cpu_clock()).\n\n - architectures that have an \u0027imperfect\u0027 hardware clock can set\n   CONFIG_HAVE_UNSTABLE_SCHED_CLOCK\n\n - the \u0027jiffie\u0027 window might be superfulous when we update tick_gtod\n   before the __update_sched_clock() call in sched_clock_tick()\n\n - cpu_clock() might be implemented as:\n\n     sched_clock_cpu(smp_processor_id())\n\n   if the accuracy proves good enough - how far can TSC drift in a\n   single jiffie when considering the filtering and idle hooks?\n\n[ mingo@elte.hu: various fixes and cleanups ]\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
