)]}'
{
  "commit": "fdd374b62ca4df144c0138359dcffa83df7a0ea8",
  "tree": "8f52a7648adb30012b01589892b71913cdbc4cd7",
  "parents": [
    "9b83ecb0a3cf1bf7ecf84359ddcfb9dd49646bf2"
  ],
  "author": {
    "name": "Anton Blanchard",
    "email": "anton@samba.org",
    "time": "Mon Aug 02 20:09:52 2010 +0000"
  },
  "committer": {
    "name": "Benjamin Herrenschmidt",
    "email": "benh@kernel.crashing.org",
    "time": "Thu Sep 02 14:07:30 2010 +1000"
  },
  "message": "powerpc: Optimise 64bit csum_partial_copy_generic and add csum_and_copy_from_user\n\nWe use the same core loop as the new csum_partial, adding in the\nstores and exception handling code. To keep things simple we do all the\nexception fixup in csum_and_copy_from_user. This wrapper function is\nmodelled on the generic checksum code and is careful to always calculate\na complete checksum even if we only copied part of the data to userspace.\n\nTo test this I forced checksumming on over loopback and ran socklib (a\nsimple TCP benchmark). On a POWER6 575 throughput improved by 19% with\nthis patch. If I forced both the sender and receiver onto the same cpu\n(with the hope of shifting the benchmark from being cache bandwidth limited\nto cpu limited), adding this patch improved performance by 55%\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7cdf358337cf246c21634650af8495086750361a",
      "old_mode": 33188,
      "old_path": "arch/powerpc/include/asm/checksum.h",
      "new_id": "9ea58c0e7cfb00cbf8030623cda1927cd9344e4e",
      "new_mode": 33188,
      "new_path": "arch/powerpc/include/asm/checksum.h"
    },
    {
      "type": "modify",
      "old_id": "5bb89c828070173a3b20496435b65c3928f18515",
      "old_mode": 33188,
      "old_path": "arch/powerpc/lib/Makefile",
      "new_id": "ad4a36848f2562c6fc4e708f7bd2062014d2a774",
      "new_mode": 33188,
      "new_path": "arch/powerpc/lib/Makefile"
    },
    {
      "type": "modify",
      "old_id": "404d5a6e3387ddce178a50e92d53078434599037",
      "old_mode": 33188,
      "old_path": "arch/powerpc/lib/checksum_64.S",
      "new_id": "18245af38aea7f747bd034dd5892c300ce73111c",
      "new_mode": 33188,
      "new_path": "arch/powerpc/lib/checksum_64.S"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "614cff1a8e0e6023d157c1d245a5c375480bc5ad",
      "new_mode": 33188,
      "new_path": "arch/powerpc/lib/checksum_wrappers_64.c"
    }
  ]
}
