)]}'
{
  "commit": "6bb74df481223731af6c7e0ff3adb31f6442cfcd",
  "tree": "2aa0b0cfa55cb4b9a9236bd94b723d83eb0bdaa8",
  "parents": [
    "4540768011352d38afb89d400eacb3e261507b70"
  ],
  "author": {
    "name": "john stultz",
    "email": "johnstul@us.ibm.com",
    "time": "Mon Mar 05 00:30:50 2007 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Mon Mar 05 07:57:53 2007 -0800"
  },
  "message": "[PATCH] clocksource init adjustments (fix bug #7426)\n\nThis patch resolves the issue found here:\nhttp://bugme.osdl.org/show_bug.cgi?id\u003d7426\n\nThe basic summary is:\nCurrently we register most of i386/x86_64 clocksources at module_init\ntime. Then we enable clocksource selection at late_initcall time. This\ncauses some problems for drivers that use gettimeofday for init\ncalibration routines (specifically the es1968 driver in this case),\nwhere durring module_init, the only clocksource available is the low-res\njiffies clocksource. This may cause slight calibration errors, due to\nthe small sampling time used.\n\nIt should be noted that drivers that require fine grained time may not\nfunction on architectures that do not have better then jiffies\nresolution timekeeping (there are a few). However, this does not\ndiscount the reasonable need for such fine-grained timekeeping at init\ntime.\n\nThus the solution here is to register clocksources earlier (ideally when\nthe hardware is being initialized), and then we enable clocksource\nselection at fs_initcall (before device_initcall).\n\nThis patch should probably get some testing time in -mm, since\nclocksource selection is one of the most important issues for correct\ntimekeeping, and I\u0027ve only been able to test this on a few of my own\nboxes.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\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": "e1006b7acc9e56d5be196599cd997d9cd364be8b",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/hpet.c",
      "new_id": "f3ab61ee749826282b8d1ee905f631c7b1efb06c",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/hpet.c"
    },
    {
      "type": "modify",
      "old_id": "a6bc7bb38834282239bba67631b6ae2041b14e2b",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/i8253.c",
      "new_id": "5cbb776b3089b96f9d9a113c234037e28f3aa1c8",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/i8253.c"
    },
    {
      "type": "modify",
      "old_id": "122623dcc6e1bc94543f0d343d0fe4a19e90cef7",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/setup.c",
      "new_id": "698c24fe482eef9085fd380233b9364333581c14",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/setup.c"
    },
    {
      "type": "modify",
      "old_id": "ccd3734edb8ff46112ff469a01fc3168f28b0d89",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/time.c",
      "new_id": "94e5cb09110402ddc1d8b793d8b8c9d002fb5cf5",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "59222a04234b929cb98b086caaad46f021b259df",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/tsc.c",
      "new_id": "875d8a6ecc02bd25efb14524c687c5349eaf1fba",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/tsc.c"
    },
    {
      "type": "modify",
      "old_id": "65a0edd71a17ebd296336ef6162ff8c14590a933",
      "old_mode": 33188,
      "old_path": "arch/x86_64/kernel/hpet.c",
      "new_id": "8cf0b8a13778ae0e497ffd228fb24f9eef8d163d",
      "new_mode": 33188,
      "new_path": "arch/x86_64/kernel/hpet.c"
    },
    {
      "type": "modify",
      "old_id": "c9addcfb96dc32793fc266178acc257eb4407f15",
      "old_mode": 33188,
      "old_path": "arch/x86_64/kernel/time.c",
      "new_id": "75d73a9aa9ff8aab536785f3e7ee8862d6200e69",
      "new_mode": 33188,
      "new_path": "arch/x86_64/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "8958318650190ce0260b3d63ec1742b2216c0155",
      "old_mode": 33188,
      "old_path": "arch/x86_64/kernel/tsc.c",
      "new_id": "1a0edbbffaa0eb0340359ece6711b9c9a36ec1f7",
      "new_mode": 33188,
      "new_path": "arch/x86_64/kernel/tsc.c"
    },
    {
      "type": "modify",
      "old_id": "ccaa6a39cb4b8195a9f30dafc38a41f6de821028",
      "old_mode": 33188,
      "old_path": "drivers/clocksource/acpi_pm.c",
      "new_id": "d42060ede93024481916f3497d479a45e5848184",
      "new_mode": 33188,
      "new_path": "drivers/clocksource/acpi_pm.c"
    },
    {
      "type": "modify",
      "old_id": "4f3925ceb36041a8cdbdaab80b0c330eebb28a61",
      "old_mode": 33188,
      "old_path": "drivers/clocksource/cyclone.c",
      "new_id": "1bde303b970ba2d008813d4dfd67d48ffeb5ceff",
      "new_mode": 33188,
      "new_path": "drivers/clocksource/cyclone.c"
    },
    {
      "type": "modify",
      "old_id": "9a0a368852c72955826ffe3772917b10a2c3baf3",
      "old_mode": 33188,
      "old_path": "include/asm-x86_64/tsc.h",
      "new_id": "26c3e98282886cf5f4d1d9d9a903df5d27f60352",
      "new_mode": 33188,
      "new_path": "include/asm-x86_64/tsc.h"
    },
    {
      "type": "modify",
      "old_id": "193a0793af95440dfbf712fab6432e5e9553d275",
      "old_mode": 33188,
      "old_path": "kernel/time/clocksource.c",
      "new_id": "5b0e46b56fd0aeb08b16bafe437f0f0a1ce37796",
      "new_mode": 33188,
      "new_path": "kernel/time/clocksource.c"
    }
  ]
}
