)]}'
{
  "commit": "e30fab3ad34aa8bfb55c9f0337d4a92a0595f41f",
  "tree": "7c38e6060ce0f1f02b43454585f1c14e524e9fa7",
  "parents": [
    "eda08b1befaabcdfea1a9216ae13f9065e69baa7"
  ],
  "author": {
    "name": "Zachary Amsden",
    "email": "zach@vmware.com",
    "time": "Mon Mar 05 00:30:39 2007 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Mon Mar 05 07:57:52 2007 -0800"
  },
  "message": "[PATCH] vmi: pit override\n\nThe time_init_hook in paravirt-ops no longer functions in the correct manner\nafter the integration of the hrtimers code.  The problem is that now the call\npath for time initialization is:\n\n  time_init :\n       late_time_init \u003d hpet_time_init;\n\n  late_time_init -\u003e hpet_time_init:\n       setup_pit_timer (BAD)\n       do_time_init --\u003e (via paravirt.h)\n          time_init_hook --\u003e (via arch_hooks.h)\n              time_init_hook (in SUBARCH/setup.c)\n\nIf this isn\u0027t confusing enough, the paravirt case goes through an indirect\nfunction pointer in the paravirt-ops table.  The problem is, by the time the\nparavirt hook is called, the pit timer is already enabled.\n\nBut paravirt guests have their own timer, and don\u0027t want to use the PIT.\nRather than intensify the struggle for power going on here, just make it all\nnice and simple and just unconditionally do all timer setup in the\nlate_time_init hook.  This also has the advantage of enabling timers in the\nsame place in all code paths, so everyone has the same bugs and we don\u0027t have\noutliers who break other code because they turn on timer too early or too\nlate.\n\nSo the paravirt-ops time init function is now by default hpet_time_init, which\nis the time init function used for native hardware.  Paravirt guests have the\nchance to override this when they setup the paravirt-ops table, and should\nneed no change.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "871448db1425ffe77a10be780d2fddb6901f2b6c",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/paravirt.c",
      "new_id": "2ec331e03fa9ede01a5bed5bee5faf1043b9f6dd",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/paravirt.c"
    },
    {
      "type": "modify",
      "old_id": "a5350059557a6541c0c96b8f8ba6933073999d05",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/time.c",
      "new_id": "ccd3734edb8ff46112ff469a01fc3168f28b0d89",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "1e4226a85263c73d0b270d33a7bb4a97c6d63f2f",
      "old_mode": 33188,
      "old_path": "include/asm-i386/paravirt.h",
      "new_id": "f8319cae2ac5c6b789ed974c0de59a044efd9877",
      "new_mode": 33188,
      "new_path": "include/asm-i386/paravirt.h"
    },
    {
      "type": "modify",
      "old_id": "ea8065af825a998654e23a92ffc18e60f34885ec",
      "old_mode": 33188,
      "old_path": "include/asm-i386/time.h",
      "new_id": "eac011366dc2c09337abfe3d146bafcb01b1d686",
      "new_mode": 33188,
      "new_path": "include/asm-i386/time.h"
    }
  ]
}
