)]}'
{
  "commit": "cf9efce0ce3136fa076f53e53154e98455229514",
  "tree": "0e110018b160aff4813b81e0e8c3a43a364edd48",
  "parents": [
    "93c22703efa72c7527dbd586d1951c1f4a85fd70"
  ],
  "author": {
    "name": "Paul Mackerras",
    "email": "paulus@samba.org",
    "time": "Thu Aug 26 19:56:43 2010 +0000"
  },
  "committer": {
    "name": "Benjamin Herrenschmidt",
    "email": "benh@kernel.crashing.org",
    "time": "Thu Sep 02 14:07:31 2010 +1000"
  },
  "message": "powerpc: Account time using timebase rather than PURR\n\nCurrently, when CONFIG_VIRT_CPU_ACCOUNTING is enabled, we use the\nPURR register for measuring the user and system time used by\nprocesses, as well as other related times such as hardirq and\nsoftirq times.  This turns out to be quite confusing for users\nbecause it means that a program will often be measured as taking\nless time when run on a multi-threaded processor (SMT2 or SMT4 mode)\nthan it does when run on a single-threaded processor (ST mode), even\nthough the program takes longer to finish.  The discrepancy is\naccounted for as stolen time, which is also confusing, particularly\nwhen there are no other partitions running.\n\nThis changes the accounting to use the timebase instead, meaning that\nthe reported user and system times are the actual number of real-time\nseconds that the program was executing on the processor thread,\nregardless of which SMT mode the processor is in.  Thus a program will\ngenerally show greater user and system times when run on a\nmulti-threaded processor than on a single-threaded processor.\n\nOn pSeries systems on POWER5 or later processors, we measure the\nstolen time (time when this partition wasn\u0027t running) using the\nhypervisor dispatch trace log.  We check for new entries in the\nlog on every entry from user mode and on every transition from\nkernel process context to soft or hard IRQ context (i.e. when\naccount_system_vtime() gets called).  So that we can correctly\ndistinguish time stolen from user time and time stolen from system\ntime, without having to check the log on every exit to user mode,\nwe store separate timestamps for exit to user mode and entry from\nuser mode.\n\nOn systems that have a SPURR (POWER6 and POWER7), we read the SPURR\nin account_system_vtime() (as before), and then apportion the SPURR\nticks since the last time we read it between scaled user time and\nscaled system time according to the relative proportions of user\ntime and system time over the same interval.  This avoids having to\nread the SPURR on every kernel entry and exit.  On systems that have\nPURR but not SPURR (i.e., POWER5), we do the same using the PURR\nrather than the SPURR.\n\nThis disables the DTL user interface in /sys/debug/kernel/powerpc/dtl\nfor now since it conflicts with the use of the dispatch trace log\nby the time accounting code.\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "57c4000719959cd4409d109f13d5cb723e70e95c",
      "old_mode": 33188,
      "old_path": "arch/powerpc/include/asm/exception-64s.h",
      "new_id": "7778d6f0c878a614a4bda84c52f2a77d02012a07",
      "new_mode": 33188,
      "new_path": "arch/powerpc/include/asm/exception-64s.h"
    },
    {
      "type": "modify",
      "old_id": "6d02624b622cddc0de26a0fff7e0f6b00576b73f",
      "old_mode": 33188,
      "old_path": "arch/powerpc/include/asm/lppaca.h",
      "new_id": "cfb85ec85750e86025e0315aaf4dd7edb00044f1",
      "new_mode": 33188,
      "new_path": "arch/powerpc/include/asm/lppaca.h"
    },
    {
      "type": "modify",
      "old_id": "1ff6662f7faf28ffce6577ac40f0a237f2b866e8",
      "old_mode": 33188,
      "old_path": "arch/powerpc/include/asm/paca.h",
      "new_id": "6af6c1613409c3cd568c804ac3ec8f1a21929786",
      "new_mode": 33188,
      "new_path": "arch/powerpc/include/asm/paca.h"
    },
    {
      "type": "modify",
      "old_id": "498fe09263d3e7df23ca37b848996339ff50b23c",
      "old_mode": 33188,
      "old_path": "arch/powerpc/include/asm/ppc_asm.h",
      "new_id": "98210067c1ccbac17f449946a4a5b42023cea1f2",
      "new_mode": 33188,
      "new_path": "arch/powerpc/include/asm/ppc_asm.h"
    },
    {
      "type": "modify",
      "old_id": "dc779dfcf25813a4502bf767e6bd6cd2f6c3a5bb",
      "old_mode": 33188,
      "old_path": "arch/powerpc/include/asm/time.h",
      "new_id": "fe6f7c2c9c6889600bd0ec00fab55ed6b7daf1f6",
      "new_mode": 33188,
      "new_path": "arch/powerpc/include/asm/time.h"
    },
    {
      "type": "modify",
      "old_id": "1c0607ddccc09e7b3c34dc19695ebdfbbff6295b",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/asm-offsets.c",
      "new_id": "c6349409085451d219d9cc8304af0babe2c42261",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/asm-offsets.c"
    },
    {
      "type": "modify",
      "old_id": "4d5fa12ca6e83db318c922834f0d06f01dac367d",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/entry_64.S",
      "new_id": "d82878c4daa677c416cf116924b4d34e58d501d3",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/entry_64.S"
    },
    {
      "type": "modify",
      "old_id": "37bc8ff16cac33f9423580bb178d8f26fb4fdfff",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/process.c",
      "new_id": "84906d3fc8607befb6e2abca027480f12120d17d",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/process.c"
    },
    {
      "type": "modify",
      "old_id": "9019f0f1bb5e23d90d14c047dc9306ff61c0fb97",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/smp.c",
      "new_id": "68034bbf2e4f0affdeaa991a56b75482b6c3d615",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/smp.c"
    },
    {
      "type": "modify",
      "old_id": "8533b3b83f5d0e35b50fb39eefb663e6d81975b0",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/time.c",
      "new_id": "fca20643c3686f3b2480cbfce688fe1337c78255",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "adfd5441b612f8e0c331430862d660140b90f9f8",
      "old_mode": 33188,
      "old_path": "arch/powerpc/platforms/pseries/dtl.c",
      "new_id": "0357655db49dd39de3c99645fbe5335100424101",
      "new_mode": 33188,
      "new_path": "arch/powerpc/platforms/pseries/dtl.c"
    },
    {
      "type": "modify",
      "old_id": "a17fe4a9059f059ce1eec2fa9c2f6546109476e6",
      "old_mode": 33188,
      "old_path": "arch/powerpc/platforms/pseries/lpar.c",
      "new_id": "f129040d974ce2a9faffc1d0899d6eb7410dc31e",
      "new_mode": 33188,
      "new_path": "arch/powerpc/platforms/pseries/lpar.c"
    },
    {
      "type": "modify",
      "old_id": "a6d19e3a505e62b15958573ca7f95a093aef5394",
      "old_mode": 33188,
      "old_path": "arch/powerpc/platforms/pseries/setup.c",
      "new_id": "d345bfd56bbe35ead2c45e166704a98264524bf9",
      "new_mode": 33188,
      "new_path": "arch/powerpc/platforms/pseries/setup.c"
    }
  ]
}
