)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9002958a96e70ef0f8acc70ceeccac5327efae9e",
      "old_mode": 33188,
      "old_path": "kernel/hrtimer.c",
      "new_id": "829e0664b72ea9b300d00b6a02c164cd27321932",
      "new_mode": 33188,
      "new_path": "kernel/hrtimer.c"
    },
    {
      "type": "modify",
      "old_id": "e8c77d9c633acbffc4872b8d0c4b8a9929d399c2",
      "old_mode": 33188,
      "old_path": "kernel/time/timekeeping.c",
      "new_id": "7a248135c6f24678a331a3e96bb90caca13c59a0",
      "new_mode": 33188,
      "new_path": "kernel/time/timekeeping.c"
    }
  ]
}
