)]}'
{
  "commit": "09c8a5b85e5f1e74a19bdd7c85547429d51df1cd",
  "tree": "9bb255d9f596ab062996de49032875e8b9253971",
  "parents": [
    "ad643f54c8514998333bc6c7b201fda2267496be"
  ],
  "author": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Tue Sep 08 12:01:49 2009 -0700"
  },
  "committer": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Tue Sep 08 17:30:24 2009 -0700"
  },
  "message": "ioat: switch watchdog and reset handler from workqueue to timer\n\nIn order to support dynamic resizing of the descriptor ring or polling\nfor a descriptor in the presence of a hung channel the reset handler\nneeds to make progress while in a non-preemptible context.  The current\nworkqueue implementation precludes polling channel reset completion\nunder spin_lock().\n\nThis conversion also allows us to return to opportunistic cleanup in the\nioat2 case as the timer implementation guarantees at least one cleanup\nafter every descriptor is submitted.  This means the worst case\ncompletion latency becomes the timer frequency (for exceptional\ncircumstances), but with the benefit of avoiding busy waiting when the\nlock is contended.\n\nSigned-off-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f59b6f42f866bfa3a2ce18035b5b1d0ad02ed979",
      "old_mode": 33188,
      "old_path": "drivers/dma/ioat/dma.c",
      "new_id": "17a518d0386f2094be5416909a4e8702ad9ac36b",
      "new_mode": 33188,
      "new_path": "drivers/dma/ioat/dma.c"
    },
    {
      "type": "modify",
      "old_id": "ec851cf5345c8fcc8ee978dac8ae052d57fadb02",
      "old_mode": 33188,
      "old_path": "drivers/dma/ioat/dma.h",
      "new_id": "dbfccac3e80c0dab989c49b1f2206c0c555a4700",
      "new_mode": 33188,
      "new_path": "drivers/dma/ioat/dma.h"
    },
    {
      "type": "modify",
      "old_id": "1aa2974e7a93b26f3f1a2679098d66828dce2830",
      "old_mode": 33188,
      "old_path": "drivers/dma/ioat/dma_v2.c",
      "new_id": "72e59a0d0f2ed322bca1e68cddc4520d38938439",
      "new_mode": 33188,
      "new_path": "drivers/dma/ioat/dma_v2.c"
    },
    {
      "type": "modify",
      "old_id": "bdde5373cf667ece654a95c7efe21a7eac7c7736",
      "old_mode": 33188,
      "old_path": "drivers/dma/ioat/dma_v2.h",
      "new_id": "73b04a2eb4b0bbe9118ba8f0f3437e19721b62ce",
      "new_mode": 33188,
      "new_path": "drivers/dma/ioat/dma_v2.h"
    },
    {
      "type": "modify",
      "old_id": "4380f6fbf056f8894fbab55594ea627a1a29b1c6",
      "old_mode": 33188,
      "old_path": "drivers/dma/ioat/registers.h",
      "new_id": "e4334a19538054ba30d3fecf1f79dae33e88e51c",
      "new_mode": 33188,
      "new_path": "drivers/dma/ioat/registers.h"
    },
    {
      "type": "modify",
      "old_id": "f2ec7243549ed5df0b71b44f5cc5cdcdda6aaae3",
      "old_mode": 33188,
      "old_path": "drivers/idle/i7300_idle.c",
      "new_id": "1f20a042a4f508197ff45ebec146a9ff2daeeccd",
      "new_mode": 33188,
      "new_path": "drivers/idle/i7300_idle.c"
    }
  ]
}
