)]}'
{
  "log": [
    {
      "commit": "cb9fbc5c37b69ac584e61d449cfd590f5ae1f90d",
      "tree": "3079752ba33535a21db08bed1390aca9136fadfe",
      "parents": [
        "309df0c503c35fbb5a09537fcbb1f4967b9ca489"
      ],
      "author": {
        "name": "Arthur Kepner",
        "email": "akepner@sgi.com",
        "time": "Tue Apr 29 01:00:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:12 2008 -0700"
      },
      "message": "IB: expand ib_umem_get() prototype\n\nAdd a new parameter, dmasync, to the ib_umem_get() prototype.  Use dmasync \u003d 1\nwhen mapping user-allocated CQs with ib_umem_get().\n\nSigned-off-by: Arthur Kepner \u003cakepner@sgi.com\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8d8beea0383e47c9d65d45f0ca95626ec435fcd",
      "tree": "00f409205683f3489344eb0cf1b86f8091354fc7",
      "parents": [
        "247e020ee5e2a7bf46f2d7a3d4490a670a712a40"
      ],
      "author": {
        "name": "Joachim Fenkes",
        "email": "fenkes@de.ibm.com",
        "time": "Thu Sep 13 18:15:28 2007 +0200"
      },
      "committer": {
        "name": "Roland Dreier",
        "email": "rolandd@cisco.com",
        "time": "Tue Oct 09 19:59:13 2007 -0700"
      },
      "message": "IB/umem: Add hugetlb flag to struct ib_umem\n\nDuring ib_umem_get(), determine whether all pages from the memory\nregion are hugetlb pages and report this in the \"hugetlb\" member.\nLow-level drivers can use this information if they need it.\n\nSigned-off-by: Joachim Fenkes \u003cfenkes@de.ibm.com\u003e\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1bf66a30421ca772820f489d88c16d0c430d6a67",
      "tree": "b1ab223e6908d772bcad7f9bc3382c33ad5a4490",
      "parents": [
        "f7c6a7b5d59980b076abbf2ceeb8735591290285"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "rolandd@cisco.com",
        "time": "Wed Apr 18 20:20:28 2007 -0700"
      },
      "committer": {
        "name": "Roland Dreier",
        "email": "rolandd@cisco.com",
        "time": "Tue May 08 18:00:37 2007 -0700"
      },
      "message": "IB: Put rlimit accounting struct in struct ib_umem\n\nWhen memory pinned with ib_umem_get() is released, ib_umem_release()\nneeds to subtract the amount of memory being unpinned from\nmm-\u003elocked_vm.  However, ib_umem_release() may be called with\nmm-\u003emmap_sem already held for writing if the memory is being released\nas part of an munmap() call, so it is sometimes necessary to defer\nthis accounting into a workqueue.\n\nHowever, the work struct used to defer this accounting is dynamically\nallocated before it is queued, so there is the possibility of failing\nthat allocation.  If the allocation fails, then ib_umem_release has no\nchoice except to bail out and leave the process with a permanently\nelevated locked_vm.\n\nFix this by allocating the structure to defer accounting as part of\nthe original struct ib_umem, so there\u0027s no possibility of failing a\nlater allocation if creating the struct ib_umem and pinning memory\nsucceeds.\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\n"
    },
    {
      "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"
    }
  ]
}
