)]}'
{
  "commit": "13371731487896a6ef158b1cd74297f40a3da4bb",
  "tree": "af09fca3fd8811340b373faaddcdb528f8a07669",
  "parents": [
    "04f7a3f12e10032ee3d44df1a509dbf5b2001fce"
  ],
  "author": {
    "name": "Chris Metcalf",
    "email": "cmetcalf@tilera.com",
    "time": "Mon Feb 28 13:21:52 2011 -0500"
  },
  "committer": {
    "name": "Chris Metcalf",
    "email": "cmetcalf@tilera.com",
    "time": "Tue Mar 01 16:20:04 2011 -0500"
  },
  "message": "arch/tile: fix __ndelay etc to work better\n\nThe current implementations of __ndelay and __udelay call a hypervisor\nservice to delay, but the hypervisor service isn\u0027t actually implemented\nvery well, and the consensus is that Linux should handle figuring this\nout natively and not use a hypervisor service.\n\nBy converting nanoseconds to cycles, and then spinning until the\ncycle counter reaches the desired cycle, we get several benefits:\nfirst, we are sensitive to the actual clock speed; second, we use\nless power by issuing a slow SPR read once every six cycles while\nwe delay; and third, we properly handle the case of an interrupt by\nexiting at the target time rather than after some number of cycles.\n\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3baf5fc4c0a174370ee442895d679ef3fd1166bc",
      "old_mode": 33188,
      "old_path": "arch/tile/include/asm/timex.h",
      "new_id": "29921f0b86da76f2e7c15845179de0f194245225",
      "new_mode": 33188,
      "new_path": "arch/tile/include/asm/timex.h"
    },
    {
      "type": "modify",
      "old_id": "f672544cd4f94ed2ebdfbdb9af2cd8edbb021f3a",
      "old_mode": 33188,
      "old_path": "arch/tile/include/hv/hypervisor.h",
      "new_id": "103986b0c10aa45b167ffafdeeef20793d82bb96",
      "new_mode": 33188,
      "new_path": "arch/tile/include/hv/hypervisor.h"
    },
    {
      "type": "modify",
      "old_id": "fd8dc42abdcb15c07e231f57205045f735c815c0",
      "old_mode": 33188,
      "old_path": "arch/tile/kernel/entry.S",
      "new_id": "c3aa0676ed067955848be553b54f6ef53f8816c4",
      "new_mode": 33188,
      "new_path": "arch/tile/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "f2e156e44692505e620c7e6c1a35e1ca948c3855",
      "old_mode": 33188,
      "old_path": "arch/tile/kernel/time.c",
      "new_id": "49a605be94c56bb3712dabfa988969261eb446bb",
      "new_mode": 33188,
      "new_path": "arch/tile/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "5801b03c13ef3f52a81a86b0887eca78abce588e",
      "old_mode": 33188,
      "old_path": "arch/tile/lib/delay.c",
      "new_id": "cdacdd11d360e61f16ea85187991a8778a2728d6",
      "new_mode": 33188,
      "new_path": "arch/tile/lib/delay.c"
    }
  ]
}
