)]}'
{
  "commit": "f7c6a7b5d59980b076abbf2ceeb8735591290285",
  "tree": "29c35b47052bba87f031a4744d8ad12ff5187149",
  "parents": [
    "36f021b579d195cdc5fa6f3e2bab198b4bf70643"
  ],
  "author": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Sun Mar 04 16:15:11 2007 -0800"
  },
  "committer": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Tue May 08 18:00:37 2007 -0700"
  },
  "message": "IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules\n\nExport ib_umem_get()/ib_umem_release() and put low-level drivers in\ncontrol of when to call ib_umem_get() to pin and DMA map userspace,\nrather than always calling it in ib_uverbs_reg_mr() before calling the\nlow-level driver\u0027s reg_user_mr method.\n\nAlso move these functions to be in the ib_core module instead of\nib_uverbs, so that driver modules using them do not depend on\nib_uverbs.\n\nThis has a number of advantages:\n - It is better design from the standpoint of making generic code a\n   library that can be used or overridden by device-specific code as\n   the details of specific devices dictate.\n - Drivers that do not need to pin userspace memory regions do not\n   need to take the performance hit of calling ib_mem_get().  For\n   example, although I have not tried to implement it in this patch,\n   the ipath driver should be able to avoid pinning memory and just\n   use copy_{to,from}_user() to access userspace memory regions.\n - Buffers that need special mapping treatment can be identified by\n   the low-level driver.  For example, it may be possible to solve\n   some Altix-specific memory ordering issues with mthca CQs in\n   userspace by mapping CQ buffers with extra flags.\n - Drivers that need to pin and DMA map userspace memory for things\n   other than memory regions can use ib_umem_get() directly, instead\n   of hacks using extra parameters to their reg_phys_mr method.  For\n   example, the mlx4 driver that is pending being merged needs to pin\n   and DMA map QP and CQ buffers, but it does not need to create a\n   memory key for these buffers.  So the cleanest solution is for mlx4\n   to call ib_umem_get() in the create_qp and create_cq methods.\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "66b36de9fa6f531a3a9b329ac3177ad0cceead68",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/Kconfig",
      "new_id": "82afba5c0bf4dc00e87b4fc0dcdf6829b0e825ac",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "189e5d4b9b17ed271027e2c015b252f929fbd32d",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/Makefile",
      "new_id": "cb1ab3ea49986f448474ce941c8e2f9cf7418b64",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/Makefile"
    },
    {
      "type": "modify",
      "old_id": "7fabb425b033a2de2243d50b24164937c0e99e49",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/device.c",
      "new_id": "592c90aa31830eea4b5856f6a150178b4c636958",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/device.c"
    },
    {
      "type": "rename",
      "old_id": "c95fe952abd5e8e7b47bd5bc92c9bcbfa8d74cfb",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/uverbs_mem.c",
      "new_id": "48e854cf416f4c273a0272d2972dc60fe9d78268",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/umem.c",
      "score": 63
    },
    {
      "type": "modify",
      "old_id": "102a59c033ff9fe3b0f79b8aedc66ced43515eb4",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/uverbs.h",
      "new_id": "c33546f9e96199b28811ed5396c3daabda27e8c4",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/uverbs.h"
    },
    {
      "type": "modify",
      "old_id": "bab66769be14a2ae6b422113e80b038a35f4b988",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/uverbs_cmd.c",
      "new_id": "01d70084aebe8c0737dc685c0bf3c4db3a57b4ec",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/uverbs_cmd.c"
    },
    {
      "type": "modify",
      "old_id": "d44e54799651b68645f1643a2f520f2fea90348d",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/uverbs_main.c",
      "new_id": "14d7ccd8919534d646814fb7cf58c89a81f07bc0",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/uverbs_main.c"
    },
    {
      "type": "modify",
      "old_id": "109166223c09159ad0e85efdb6073006ad81da92",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/amso1100/c2_provider.c",
      "new_id": "997cf1530762458f80e285cd8f6297a5d8eeb94e",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/amso1100/c2_provider.c"
    },
    {
      "type": "modify",
      "old_id": "fc906223220fcafba269028995b86e0df5ab98b1",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/amso1100/c2_provider.h",
      "new_id": "1076df2ee96ae3bc0cdd1869b2a35ca4f7e35952",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/amso1100/c2_provider.h"
    },
    {
      "type": "modify",
      "old_id": "a891493fd34017adbab711ce5a3cd0125c074c24",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/cxgb3/iwch_provider.c",
      "new_id": "e7c2c3948037e6853586be07e01f2c1f3b5731bb",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/cxgb3/iwch_provider.c"
    },
    {
      "type": "modify",
      "old_id": "93bcc56756bd42a14cce112f51b1a7ba2b3f8797",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/cxgb3/iwch_provider.h",
      "new_id": "48833f3f3bd03779e4139b6db8e91166af0fff04",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/cxgb3/iwch_provider.h"
    },
    {
      "type": "modify",
      "old_id": "10fb8fbafa0c4cd31457ae3d511586b0a7e54c20",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/ehca/ehca_classes.h",
      "new_id": "f64d42b08674a9f60fad0aa2635e9f585b747b57",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/ehca/ehca_classes.h"
    },
    {
      "type": "modify",
      "old_id": "e14b029332c8a59d23be4399003ec54bc31b39ba",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/ehca/ehca_iverbs.h",
      "new_id": "37e7fe0908cfad268e8da90142f9d6f8aeaa85ec",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/ehca/ehca_iverbs.h"
    },
    {
      "type": "modify",
      "old_id": "d22ab563633f0ed10c7cb476e5ebe5deec452ed0",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/ehca/ehca_mrmw.c",
      "new_id": "84c5bb4985634a47f0e2bec5cf8b54038f32c95d",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/ehca/ehca_mrmw.c"
    },
    {
      "type": "modify",
      "old_id": "31e70732e36950bc4d765a74779c6a86ded4cf3a",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/ipath/ipath_mr.c",
      "new_id": "bdeef8d4f279cb5abb8c5954e15dda65a461128d",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/ipath/ipath_mr.c"
    },
    {
      "type": "modify",
      "old_id": "7064fc22272765c8f943de8a7a5f35b176120f17",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/ipath/ipath_verbs.h",
      "new_id": "088b837ebea8f2c22770f1d578e778d378696224",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/ipath/ipath_verbs.h"
    },
    {
      "type": "modify",
      "old_id": "1c05486c3c68b6171077b9f57fb345c2717403b5",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/mthca/mthca_provider.c",
      "new_id": "6bcde1cb9688f9860b8116fb22526553a23d5746",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/mthca/mthca_provider.c"
    },
    {
      "type": "modify",
      "old_id": "1d266ac2e094c404d2cd8d3167261c07e20c0f6d",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/mthca/mthca_provider.h",
      "new_id": "262616c8ebb644d75ab603e5ce12b5f668baa5ac",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/mthca/mthca_provider.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "06307f7e43e0d0c9f8e5ca2458963279178e5dc4",
      "new_mode": 33188,
      "new_path": "include/rdma/ib_umem.h"
    },
    {
      "type": "modify",
      "old_id": "5342ac64ed1a786147a34546970234f57c2e1868",
      "old_mode": 33188,
      "old_path": "include/rdma/ib_verbs.h",
      "new_id": "47cefca59c899819cf181582cf9df4fde4bbc872",
      "new_mode": 33188,
      "new_path": "include/rdma/ib_verbs.h"
    }
  ]
}
