)]}'
{
  "log": [
    {
      "commit": "ca23e405e06d5fffb005df004c72781f76062f51",
      "tree": "92f708eb81325c70c3e2827e68eb413c0c14d355",
      "parents": [
        "cf88c79006bd6a09ad725ba0b34c0e23db20b19e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:52 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:52 2009 +0900"
      },
      "message": "vmalloc: implement pcpu_get_vm_areas()\n\nTo directly use spread NUMA memories for percpu units, percpu\nallocator will be updated to allow sparsely mapping units in a chunk.\nAs the distances between units can be very large, this makes\nallocating single vmap area for each chunk undesirable.  This patch\nimplements pcpu_get_vm_areas() and pcpu_free_vm_areas() which\nallocates and frees sparse congruent vmap areas.\n\npcpu_get_vm_areas() take @offsets and @sizes array which define\ndistances and sizes of vmap areas.  It scans down from the top of\nvmalloc area looking for the top-most address which can accomodate all\nthe areas.  The top-down scan is to avoid interacting with regular\nvmallocs which can push up these congruent areas up little by little\nending up wasting address space and page table.\n\nTo speed up top-down scan, the highest possible address hint is\nmaintained.  Although the scan is linear from the hint, given the\nusual large holes between memory addresses between NUMA nodes, the\nscanning is highly likely to finish after finding the first hole for\nthe last unit which is scanned first.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\n"
    },
    {
      "commit": "0edcf8d6926f4038443dbc24e319530177ca0353",
      "tree": "6010af62f73d01ab673d5106f310eaf4f4228e32",
      "parents": [
        "87b203079ed949de52f0d92aeae20e5e0116c12f",
        "40150d37be7f7949b2ec07d511244da856647d84"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 24 21:52:45 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 24 21:52:45 2009 +0100"
      },
      "message": "Merge branch \u0027tj-percpu\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu\n\nConflicts:\n\tarch/x86/include/asm/pgtable.h\n"
    },
    {
      "commit": "c0c0a29379b5848aec2e8f1c58d853d3cb7118b8",
      "tree": "521d4c8ae5756652e7ed3f7242c516b79df76aa2",
      "parents": [
        "2d0aae41695257603fc281b519677131ab5a752b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "message": "vmalloc: add @align to vm_area_register_early()\n\nImpact: allow larger alignment for early vmalloc area allocation\n\nSome early vmalloc users might want larger alignment, for example, for\ncustom large page mapping.  Add @align to vm_area_register_early().\nWhile at it, drop docbook comment on non-existent @size.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\n"
    },
    {
      "commit": "8fc48985006da4ceba24508db64ec77fc0dfe3bb",
      "tree": "2234b92b13c53bfd1972e967c50ff305b6efe013",
      "parents": [
        "f0aa6617903648077dffe5cfcf7c4458f4610fa7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "vmalloc: add un/map_kernel_range_noflush()\n\nImpact: two more public map/unmap functions\n\nImplement map_kernel_range_noflush() and unmap_kernel_range_noflush().\nThese functions respectively map and unmap address range in kernel VM\narea but doesn\u0027t do any vcache or tlb flushing.  These will be used by\nnew percpu allocator.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\n"
    },
    {
      "commit": "f0aa6617903648077dffe5cfcf7c4458f4610fa7",
      "tree": "c97ab20b953bfea8a6516d741585ea088a8bf7ef",
      "parents": [
        "f2a8205c4ef1af917d175c36a4097ae5587791c8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "vmalloc: implement vm_area_register_early()\n\nImpact: allow multiple early vm areas\n\nThere are places where kernel VM area needs to be allocated before\nvmalloc is initialized.  This is done by allocating static vm_struct,\ninitializing several fields and linking it to vmlist and later vmalloc\ninitialization picking up these from vmlist.  This is currently done\nmanually and if there\u0027s more than one such areas, there\u0027s no defined\nway to arbitrate who gets which address.\n\nThis patch implements vm_area_register_early(), which takes vm_area\nstruct with flags and size initialized, assigns address to it and puts\nit on the vmlist.  This way, multiple early vm areas can determine\nwhich addresses they should use.  The only current user - alpha mm\ninit - is converted to use it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c296861291669f305deef19b78042330d7135017",
      "tree": "a623faa7815c0eb70ea463966c8a8715e7e69246",
      "parents": [
        "5955c7a2cfb6a35429adea5dc480002b15ca8cfc"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Wed Feb 18 14:48:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:53 2009 -0800"
      },
      "message": "vmalloc: add __get_vm_area_caller()\n\nWe have get_vm_area_caller() and __get_vm_area() but not\n__get_vm_area_caller()\n\nOn powerpc, I use __get_vm_area() to separate the ranges of addresses\ngiven to vmalloc vs.  ioremap (various good reasons for that) so in order\nto be able to implement the new caller tracking in /proc/vmallocinfo, I\nneed a \"_caller\" variant of it.\n\n(akpm: needed for ongoing powerpc development, so merge it early)\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69beeb1d3428424fbc7546f85e5cd7ac4119c09d",
      "tree": "b00c806e4ced5ace1bdf4a492c985ee4fa0605b7",
      "parents": [
        "efab81864161f8c546d4403873e7ae7831ed5b26"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "mm: make vread() and vwrite() declaration\n\nSparse output following warnings.\n\nmm/vmalloc.c:1436:6: warning: symbol \u0027vread\u0027 was not declared. Should it be static?\nmm/vmalloc.c:1474:6: warning: symbol \u0027vwrite\u0027 was not declared. Should it be static?\n\nHowever, it is used by /dev/kmem. fixed here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f6a6a9c4e4d790aae55cb412a7643329057c5e0",
      "tree": "06b984b29e2e100874a4627ba6e22eb3e96a2640",
      "parents": [
        "7b3c3a50a3e0ea46815150d420fa276ac254572b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 03:50:47 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 15:48:28 2008 +0400"
      },
      "message": "proc: move /proc/vmallocinfo to mm/vmalloc.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db64fe02258f1507e13fe5212a989922323685ce",
      "tree": "ed24c8d4e3b0bcadfce3a8c3916a6b35d6c891cb",
      "parents": [
        "cb8f488c33539f096580e202f5438a809195008f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:27:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: rewrite vmap layer\n\nRewrite the vmap allocator to use rbtrees and lazy tlb flushing, and\nprovide a fast, scalable percpu frontend for small vmaps (requires a\nslightly different API, though).\n\nThe biggest problem with vmap is actually vunmap.  Presently this requires\na global kernel TLB flush, which on most architectures is a broadcast IPI\nto all CPUs to flush the cache.  This is all done under a global lock.  As\nthe number of CPUs increases, so will the number of vunmaps a scaled\nworkload will want to perform, and so will the cost of a global TLB flush.\n This gives terrible quadratic scalability characteristics.\n\nAnother problem is that the entire vmap subsystem works under a single\nlock.  It is a rwlock, but it is actually taken for write in all the fast\npaths, and the read locking would likely never be run concurrently anyway,\nso it\u0027s just pointless.\n\nThis is a rewrite of vmap subsystem to solve those problems.  The existing\nvmalloc API is implemented on top of the rewritten subsystem.\n\nThe TLB flushing problem is solved by using lazy TLB unmapping.  vmap\naddresses do not have to be flushed immediately when they are vunmapped,\nbecause the kernel will not reuse them again (would be a use-after-free)\nuntil they are reallocated.  So the addresses aren\u0027t allocated again until\na subsequent TLB flush.  A single TLB flush then can flush multiple\nvunmaps from each CPU.\n\nXEN and PAT and such do not like deferred TLB flushing because they can\u0027t\nalways handle multiple aliasing virtual addresses to a physical address.\nThey now call vm_unmap_aliases() in order to flush any deferred mappings.\nThat call is very expensive (well, actually not a lot more expensive than\na single vunmap under the old scheme), however it should be OK if not\ncalled too often.\n\nThe virtual memory extent information is stored in an rbtree rather than a\nlinked list to improve the algorithmic scalability.\n\nThere is a per-CPU allocator for small vmaps, which amortizes or avoids\nglobal locking.\n\nTo use the per-CPU interface, the vm_map_ram / vm_unmap_ram interfaces\nmust be used in place of vmap and vunmap.  Vmalloc does not use these\ninterfaces at the moment, so it will not be quite so scalable (although it\nwill use lazy TLB flushing).\n\nAs a quick test of performance, I ran a test that loops in the kernel,\nlinearly mapping then touching then unmapping 4 pages.  Different numbers\nof tests were run in parallel on an 4 core, 2 socket opteron.  Results are\nin nanoseconds per map+touch+unmap.\n\nthreads           vanilla         vmap rewrite\n1                 14700           2900\n2                 33600           3000\n4                 49500           2800\n8                 70631           2900\n\nSo with a 8 cores, the rewritten version is already 25x faster.\n\nIn a slightly more realistic test (although with an older and less\nscalable version of the patch), I ripped the not-very-good vunmap batching\ncode out of XFS, and implemented the large buffer mapping with vm_map_ram\nand vm_unmap_ram...  along with a couple of other tricks, I was able to\nspeed up a large directory workload by 20x on a 64 CPU system.  I believe\nvmap/vunmap is actually sped up a lot more than 20x on such a system, but\nI\u0027m running into other locks now.  vmap is pretty well blown off the\nprofiles.\n\nBefore:\n1352059 total                                      0.1401\n798784 _write_lock                              8320.6667 \u003c- vmlist_lock\n529313 default_idle                             1181.5022\n 15242 smp_call_function                         15.8771  \u003c- vmap tlb flushing\n  2472 __get_vm_area_node                         1.9312  \u003c- vmap\n  1762 remove_vm_area                             4.5885  \u003c- vunmap\n   316 map_vm_area                                0.2297  \u003c- vmap\n   312 kfree                                      0.1950\n   300 _spin_lock                                 3.1250\n   252 sn_send_IPI_phys                           0.4375  \u003c- tlb flushing\n   238 vmap                                       0.8264  \u003c- vmap\n   216 find_lock_page                             0.5192\n   196 find_next_bit                              0.3603\n   136 sn2_send_IPI                               0.2024\n   130 pio_phys_write_mmr                         2.0312\n   118 unmap_kernel_range                         0.1229\n\nAfter:\n 78406 total                                      0.0081\n 40053 default_idle                              89.4040\n 33576 ia64_spinlock_contention                 349.7500\n  1650 _spin_lock                                17.1875\n   319 __reg_op                                   0.5538\n   281 _atomic_dec_and_lock                       1.0977\n   153 mutex_unlock                               1.5938\n   123 iget_locked                                0.1671\n   117 xfs_dir_lookup                             0.1662\n   117 dput                                       0.1406\n   114 xfs_iget_core                              0.0268\n    92 xfs_da_hashname                            0.1917\n    75 d_alloc                                    0.0670\n    68 vmap_page_range                            0.0462 \u003c- vmap\n    58 kmem_cache_alloc                           0.0604\n    57 memset                                     0.0540\n    52 rb_next                                    0.1625\n    50 __copy_user                                0.0208\n    49 bitmap_find_free_region                    0.2188 \u003c- vmap\n    46 ia64_sn_udelay                             0.1106\n    45 find_inode_fast                            0.1406\n    42 memcmp                                     0.2188\n    42 finish_task_switch                         0.1094\n    42 __d_lookup                                 0.0410\n    40 radix_tree_lookup_slot                     0.1250\n    37 _spin_unlock_irqrestore                    0.3854\n    36 xfs_bmapi                                  0.0050\n    36 kmem_cache_free                            0.0256\n    35 xfs_vn_getattr                             0.0322\n    34 radix_tree_lookup                          0.1062\n    33 __link_path_walk                           0.0035\n    31 xfs_da_do_buf                              0.0091\n    30 _xfs_buf_find                              0.0204\n    28 find_get_page                              0.0875\n    27 xfs_iread                                  0.0241\n    27 __strncpy_from_user                        0.2812\n    26 _xfs_buf_initialize                        0.0406\n    24 _xfs_buf_lookup_pages                      0.0179\n    24 vunmap_page_range                          0.0250 \u003c- vunmap\n    23 find_lock_page                             0.0799\n    22 vm_map_ram                                 0.0087 \u003c- vmap\n    20 kfree                                      0.0125\n    19 put_page                                   0.0330\n    18 __kmalloc                                  0.0176\n    17 xfs_da_node_lookup_int                     0.0086\n    17 _read_lock                                 0.0885\n    17 page_waitqueue                             0.0664\n\nvmap has gone from being the top 5 on the profiles and flushing the crap\nout of all TLBs, to using less than 1% of kernel time.\n\n[akpm@linux-foundation.org: cleanups, section fix]\n[akpm@linux-foundation.org: fix build on alpha]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "605d9288b3e8a3d15e6f36185c2fc737b6979572",
      "tree": "010addb96a08b07eaef0db1231bb395c719bb857",
      "parents": [
        "71ef2a46fce43042a60d7ccbf55ecbd789c03c2e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Aug 16 11:07:21 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 16 16:45:56 2008 -0700"
      },
      "message": "mm: VM_flags comment fixes\n\nTry to comment away a little of the confusion between mm\u0027s vm_area_struct\nvm_flags and vmalloc\u0027s vm_struct flags: based on an idea by Ulrich Drepper.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2301696932b55e2ea2085cefc84f7b94fa2dd54b",
      "tree": "4a564951b4bd34feee922e59cac12962ac0f73c8",
      "parents": [
        "a10aa579878fc6f9cd17455067380bbdf1d53c91"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 28 02:12:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:21 2008 -0700"
      },
      "message": "vmallocinfo: add caller information\n\nAdd caller information so that /proc/vmallocinfo shows where the allocation\nrequest for a slice of vmalloc memory originated.\n\nResults in output like this:\n\n0xffffc20000000000-0xffffc20000801000 8392704 alloc_large_system_hash+0x127/0x246 pages\u003d2048 vmalloc vpages\n0xffffc20000801000-0xffffc20000806000   20480 alloc_large_system_hash+0x127/0x246 pages\u003d4 vmalloc\n0xffffc20000806000-0xffffc20000c07000 4198400 alloc_large_system_hash+0x127/0x246 pages\u003d1024 vmalloc vpages\n0xffffc20000c07000-0xffffc20000c0a000   12288 alloc_large_system_hash+0x127/0x246 pages\u003d2 vmalloc\n0xffffc20000c0a000-0xffffc20000c0c000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff68000 ioremap\n0xffffc20000c0c000-0xffffc20000c0f000   12288 acpi_os_map_memory+0x13/0x1c phys\u003dcff64000 ioremap\n0xffffc20000c10000-0xffffc20000c15000   20480 acpi_os_map_memory+0x13/0x1c phys\u003dcff65000 ioremap\n0xffffc20000c16000-0xffffc20000c18000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff69000 ioremap\n0xffffc20000c18000-0xffffc20000c1a000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dfed1f000 ioremap\n0xffffc20000c1a000-0xffffc20000c1c000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff68000 ioremap\n0xffffc20000c1c000-0xffffc20000c1e000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff68000 ioremap\n0xffffc20000c1e000-0xffffc20000c20000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff68000 ioremap\n0xffffc20000c20000-0xffffc20000c22000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff68000 ioremap\n0xffffc20000c22000-0xffffc20000c24000    8192 acpi_os_map_memory+0x13/0x1c phys\u003dcff68000 ioremap\n0xffffc20000c24000-0xffffc20000c26000    8192 acpi_os_map_memory+0x13/0x1c phys\u003de0081000 ioremap\n0xffffc20000c26000-0xffffc20000c28000    8192 acpi_os_map_memory+0x13/0x1c phys\u003de0080000 ioremap\n0xffffc20000c28000-0xffffc20000c2d000   20480 alloc_large_system_hash+0x127/0x246 pages\u003d4 vmalloc\n0xffffc20000c2d000-0xffffc20000c31000   16384 tcp_init+0xd5/0x31c pages\u003d3 vmalloc\n0xffffc20000c31000-0xffffc20000c34000   12288 alloc_large_system_hash+0x127/0x246 pages\u003d2 vmalloc\n0xffffc20000c34000-0xffffc20000c36000    8192 init_vdso_vars+0xde/0x1f1\n0xffffc20000c36000-0xffffc20000c38000    8192 pci_iomap+0x8a/0xb4 phys\u003dd8e00000 ioremap\n0xffffc20000c38000-0xffffc20000c3a000    8192 usb_hcd_pci_probe+0x139/0x295 [usbcore] phys\u003dd8e00000 ioremap\n0xffffc20000c3a000-0xffffc20000c3e000   16384 sys_swapon+0x509/0xa15 pages\u003d3 vmalloc\n0xffffc20000c40000-0xffffc20000c61000  135168 e1000_probe+0x1c4/0xa32 phys\u003dd8a20000 ioremap\n0xffffc20000c61000-0xffffc20000c6a000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc20000c6a000-0xffffc20000c73000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc20000c73000-0xffffc20000c7c000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc20000c7c000-0xffffc20000c7f000   12288 e1000e_setup_tx_resources+0x29/0xbe pages\u003d2 vmalloc\n0xffffc20000c80000-0xffffc20001481000 8392704 pci_mmcfg_arch_init+0x90/0x118 phys\u003de0000000 ioremap\n0xffffc20001481000-0xffffc20001682000 2101248 alloc_large_system_hash+0x127/0x246 pages\u003d512 vmalloc\n0xffffc20001682000-0xffffc20001e83000 8392704 alloc_large_system_hash+0x127/0x246 pages\u003d2048 vmalloc vpages\n0xffffc20001e83000-0xffffc20002204000 3674112 alloc_large_system_hash+0x127/0x246 pages\u003d896 vmalloc vpages\n0xffffc20002204000-0xffffc2000220d000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc2000220d000-0xffffc20002216000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc20002216000-0xffffc2000221f000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc2000221f000-0xffffc20002228000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc20002228000-0xffffc20002231000   36864 _xfs_buf_map_pages+0x8e/0xc0 vmap\n0xffffc20002231000-0xffffc20002234000   12288 e1000e_setup_rx_resources+0x35/0x122 pages\u003d2 vmalloc\n0xffffc20002240000-0xffffc20002261000  135168 e1000_probe+0x1c4/0xa32 phys\u003dd8a60000 ioremap\n0xffffc20002261000-0xffffc2000270c000 4894720 sys_swapon+0x509/0xa15 pages\u003d1194 vmalloc vpages\n0xffffffffa0000000-0xffffffffa0022000  139264 module_alloc+0x4f/0x55 pages\u003d33 vmalloc\n0xffffffffa0022000-0xffffffffa0029000   28672 module_alloc+0x4f/0x55 pages\u003d6 vmalloc\n0xffffffffa002b000-0xffffffffa0034000   36864 module_alloc+0x4f/0x55 pages\u003d8 vmalloc\n0xffffffffa0034000-0xffffffffa003d000   36864 module_alloc+0x4f/0x55 pages\u003d8 vmalloc\n0xffffffffa003d000-0xffffffffa0049000   49152 module_alloc+0x4f/0x55 pages\u003d11 vmalloc\n0xffffffffa0049000-0xffffffffa0050000   28672 module_alloc+0x4f/0x55 pages\u003d6 vmalloc\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a10aa579878fc6f9cd17455067380bbdf1d53c91",
      "tree": "c42fbb1e9422e5334c2207cafed4a2b5b1ad16c4",
      "parents": [
        "b45445684198a946b587732265692e6495993abf"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 28 02:12:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:21 2008 -0700"
      },
      "message": "vmalloc: show vmalloced areas via /proc/vmallocinfo\n\nImplement a new proc file that allows the display of the currently allocated\nvmalloc memory.\n\nIt allows to see the users of vmalloc.  That is important if vmalloc space is\nscarce (i386 for example).\n\nAnd it\u0027s going to be important for the compound page fallback to vmalloc.\nMany of the current users can be switched to use compound pages with fallback.\n This means that the number of users of vmalloc is reduced and page tables no\nlonger necessary to access the memory.  /proc/vmallocinfo allows to review how\nthat reduction occurs.\n\nIf memory becomes fragmented and larger order allocations are no longer\npossible then /proc/vmallocinfo allows to see which compound page allocations\nfell back to virtual compound pages.  That is important for new users of\nvirtual compound pages.  Such as order 1 stack allocation etc that may\nfallback to virtual compound pages in the future.\n\n/proc/vmallocinfo permissions are made readable-only-by-root to avoid possible\ninformation leakage.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: CONFIG_MMU\u003dn build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3bdda02aa547a0753b4fdbc105e86ef9046b30b",
      "tree": "969557274d94bd0a8e3c638b796c0a13f3e3afd2",
      "parents": [
        "48667e7a43c1a1e0ba743f93ae946f8cb34ff2f9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "vmalloc: add const to void* parameters\n\nMake vmalloc functions work the same way as kfree() and friends that\ntake a const void * argument.\n\n[akpm@linux-foundation.org: fix consts, coding-style]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9585116ba09f1d8c52d0a1346e20bb9d443e9c02",
      "tree": "c3380b477754d3d2d77fa8dbd08f0b0d08fdcadf",
      "parents": [
        "a2900975ef3f1df33c83e750cc1e490de3374ca8"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Sat Jul 21 17:11:35 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jul 21 18:37:14 2007 -0700"
      },
      "message": "i386: fix iounmap\u0027s use of vm_struct\u0027s size field\n\nget_vm_area always returns an area with an adjacent guard page.  That guard\npage is included in vm_struct.size.  iounmap uses vm_struct.size to\ndetermine how much address space needs to have change_page_attr applied to\nit, which will BUG if applied to the guard page.\n\nThis patch adds a helper function - get_vm_area_size() in linux/vmalloc.h -\nto return the actual size of a vm area, and uses it to make iounmap do the\nright thing.  There are probably other places which should be using\nget_vm_area_size().\n\nThanks to Dave Young \u003chidave.darkstar@gmail.com\u003e for debugging the\nproblem.\n\n[ Andi, it wasn\u0027t clear to me whether x86_64 needs the same fix. ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nCc: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f4352fbffd6c45123dbce9e195efd54df4e177e",
      "tree": "e2a0316e2f2d22c266e7cae3015ddc0f2f77f64f",
      "parents": [
        "bdef40a6af64a0140a65df49bf504124d57094a9"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:04 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "Allocate and free vmalloc areas\n\nAllocate/release a chunk of vmalloc address space:\n alloc_vm_area reserves a chunk of address space, and makes sure all\n the pagetables are constructed for that address range - but no pages.\n\n free_vm_area releases the address space range.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: \"Jan Beulich\" \u003cJBeulich@novell.com\u003e\nCc: \"Andi Kleen\" \u003cak@muc.de\u003e\n"
    },
    {
      "commit": "c19c03fc749147f565e807fa65f1729066800571",
      "tree": "d5ba2eb6d43b5001c93c42523fc5b2431ef61664",
      "parents": [
        "3c8c90ab8810a8ebb38a5f1dde2595b750d5adff"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Jun 04 15:15:35 2007 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 14 22:29:56 2007 +1000"
      },
      "message": "[POWERPC] unmap_vm_area becomes unmap_kernel_range for the public\n\nThis makes unmap_vm_area static and a wrapper around a new\nexported unmap_kernel_range that takes an explicit range instead\nof a vm_area struct.\n\nThis makes it more versatile for code that wants to play with kernel\npage tables outside of the standard vmalloc area.\n\n(One example is some rework of the PowerPC PCI IO space mapping\ncode that depends on that patch and removes some code duplication\nand horrible abuse of forged struct vm_struct).\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "1eeb66a1bb973534dc3d064920a5ca683823372e",
      "tree": "19c22d611e6adefb352dbc107b859e4d13ba38c1",
      "parents": [
        "e3869792990f708c97be5877499cada70d469bd3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:27:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:04 2007 -0700"
      },
      "message": "move die notifier handling to common code\n\nThis patch moves the die notifier handling to common code.  Previous\nvarious architectures had exactly the same code for it.  Note that the new\ncode is compiled unconditionally, this should be understood as an appel to\nthe other architecture maintainer to implement support for it aswell (aka\nsprinkling a notify_die or two in the proper place)\n\narm had a notifiy_die that did something totally different, I renamed it to\narm_notify_die as part of the patch and made it static to the file it\u0027s\ndeclared and used at.  avr32 used to pass slightly less information through\nthis interface and I brought it into line with the other architectures.\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: fix vmalloc_sync_all bustage]\n[bryan.wu@analog.com: fix vmalloc_sync_all in nommu]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b4ac44e7c7e16cf9411b81693ff3e604f332bf1",
      "tree": "af167ed7cf9e76f7b155d1af53a62c5d9c3b03ba",
      "parents": [
        "088406bcf66d6c7fd8a5c04c00aa410ae9077403"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Fri Nov 10 12:27:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 13 07:40:42 2006 -0800"
      },
      "message": "[PATCH] vmalloc: optimization, cleanup, bugfixes\n\n- reorder \u0027struct vm_struct\u0027 to speedup lookups on CPUS with small cache\n  lines.  The fields \u0027next,addr,size\u0027 should be now in the same cache line,\n  to speedup lookups.\n\n- One minor cleanup in __get_vm_area_node()\n\n- Bugfixes in vmalloc_user() and vmalloc_32_user() NULL returns from\n  __vmalloc() and __find_vm_area() were not tested.\n\n[akpm@osdl.org: remove redundant BUG_ONs]\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52fd24ca1db3a741f144bbc229beefe044202cac",
      "tree": "bb3959b403c4bfec138b61e7943e17a76dc6cad6",
      "parents": [
        "6a2aae06cc1e87e9712a26a639f6a2f3442e2027"
      ],
      "author": {
        "name": "Giridhar Pemmasani",
        "email": "pgiri@yahoo.com",
        "time": "Sat Oct 28 10:38:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:52 2006 -0700"
      },
      "message": "[PATCH] __vmalloc with GFP_ATOMIC causes \u0027sleeping from invalid context\u0027\n\nIf __vmalloc is called to allocate memory with GFP_ATOMIC in atomic\ncontext, the chain of calls results in __get_vm_area_node allocating memory\nfor vm_struct with GFP_KERNEL, causing the \u0027sleeping from invalid context\u0027\nwarning.  This patch fixes it by passing the gfp flags along so\n__get_vm_area_node allocates memory for vm_struct with the same flags.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d24afc57d51b1be41f95521e81399061fa5875a6",
      "tree": "325d8cd04919980d7d51e82d44dcfd9a4521e3f5",
      "parents": [
        "ead04089b138ed669658f80fafbe11fc7d97740b"
      ],
      "author": {
        "name": "Rolf Eike Beer",
        "email": "eike-kernel@sf-tec.de",
        "time": "Wed Sep 27 01:50:13 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:13 2006 -0700"
      },
      "message": "[PATCH] Mark __remove_vm_area() static\n\nThe function is exported but not used from anywhere else.  It\u0027s also marked as\n\"not for driver use\" so noone out there should really care.\n\nSigned-off-by: Rolf Eike Beer \u003ceike-kernel@sf-tec.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b221385bc41d6789edde3d2fa0cb20d5045730eb",
      "tree": "93f3317247d587fd011eb9d77cd73a49670d8d5f",
      "parents": [
        "204ec841fbea3e5138168edbc3a76d46747cc987"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Sep 25 23:31:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:45 2006 -0700"
      },
      "message": "[PATCH] mm/: make functions static\n\nThis patch makes the following needlessly global functions static:\n - slab.c: kmem_find_general_cachep()\n - swap.c: __page_cache_release()\n - vmalloc.c: __vmalloc_node()\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8757d5fa6b75e8ea906baf0309d49b980e7f9bc9",
      "tree": "ec3c1a505b5254133cd453c922beb8db226d03e6",
      "parents": [
        "e322fedf0c59938716cdfbafbe364a170919aa1a"
      ],
      "author": {
        "name": "Jan Kiszka",
        "email": "jan.kiszka@web.de",
        "time": "Fri Jul 14 00:23:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:51 2006 -0700"
      },
      "message": "[PATCH] mm: fix oom roll-back of __vmalloc_area_node\n\n__vunmap must not rely on area-\u003enr_pages when picking the release methode\nfor area-\u003epages.  It may be too small when __vmalloc_area_node failed early\ndue to lacking memory.  Instead, use a flag in vmstruct to differentiate.\n\nSigned-off-by: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "833423143c3a7c6545e409d65febd0d92deb351b",
      "tree": "13a1881f1ffd6e546e80a2ec04b1ac44ad145298",
      "parents": [
        "762834e8bf46bf41ce9034d062a7c1f8563175f3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jun 23 02:03:20 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:49 2006 -0700"
      },
      "message": "[PATCH] mm: introduce remap_vmalloc_range()\n\nAdd remap_vmalloc_range, vmalloc_user, and vmalloc_32_user so that drivers\ncan have a nice interface for remapping vmalloc memory.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "930fc45a49ddebe7555cc5c837d82b9c27e65ff4",
      "tree": "f0e4b32bd4e2f951c4eb1bc1fcdeefdcbb8e6195",
      "parents": [
        "be15cd72d256e5eb3261a781b8507fac83ab33f6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sat Oct 29 18:15:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:35 2005 -0700"
      },
      "message": "[PATCH] vmalloc_node\n\nThis patch adds\n\nvmalloc_node(size, node)\t-\u003e Allocate necessary memory on the specified node\n\nand\n\nget_vm_area_node(size, flags, node)\n\nand the other functions that it depends on.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd0fc66fb33cd610bc1a5db8a5e232d34879b4d7",
      "tree": "51f96a9db96293b352e358f66032e1f4ff79fafb",
      "parents": [
        "3b0e77bd144203a507eb191f7117d2c5004ea1de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Fri Oct 07 07:46:04 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 08 15:00:57 2005 -0700"
      },
      "message": "[PATCH] gfp flags annotations - part 1\n\n - added typedef unsigned int __nocast gfp_t;\n\n - replaced __nocast uses for gfp flags with gfp_t - it gives exactly\n   the same warnings as far as sparse is concerned, doesn\u0027t change\n   generated code (from gcc point of view we replaced unsigned int with\n   typedef) and documents what\u0027s going on far better.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd195c49fb17a21e232f50bddb2267150053cf34",
      "tree": "ab9370a3d351eb7594e5086ae8d3aa5401a1e375",
      "parents": [
        "9b4ee40ebbbaf3f8c775b023d89ceedda1167d79"
      ],
      "author": {
        "name": "Deepak Saxena",
        "email": "dsaxena@plexity.net",
        "time": "Sat Sep 03 15:54:58 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:46 2005 -0700"
      },
      "message": "[PATCH] arm: allow for arch-specific IOREMAP_MAX_ORDER\n\nVersion 6 of the ARM architecture introduces the concept of 16MB pages\n(supersections) and 36-bit (40-bit actually, but nobody uses this) physical\naddresses.  36-bit addressed memory and I/O and ARMv6 can only be mapped\nusing supersections and the requirement on these is that both virtual and\nphysical addresses be 16MB aligned.  In trying to add support for ioremap()\nof 36-bit I/O, we run into the issue that get_vm_area() allows for a\nmaximum of 512K alignment via the IOREMAP_MAX_ORDER constant.  To work\naround this, we can:\n\n- Allocate a larger VM area than needed (size + (1ul \u003c\u003c IOREMAP_MAX_ORDER))\n  and then align the pointer ourselves, but this ends up with 512K of\n  wasted VM per ioremap().\n\n- Provide a new __get_vm_area_aligned() API and make __get_vm_area() sit\n  on top of this. I did this and it works but I don\u0027t like the idea\n  adding another VM API just for this one case.\n\n- My preferred solution which is to allow the architecture to override\n  the IOREMAP_MAX_ORDER constant with it\u0027s own version.\n\nSigned-off-by: Deepak Saxena \u003cdsaxena@plexity.net\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7856dfeb23c16ef3d8dac8871b4d5b93c70b59b9",
      "tree": "0e9f799c3882dce14b49356c6db10bb6f4ba1713",
      "parents": [
        "c4d1fcf3a2ea89b6d6221fa8b4588c77aff50995"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Fri May 20 14:27:57 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri May 20 15:48:20 2005 -0700"
      },
      "message": "[PATCH] x86_64: Fixed guard page handling again in iounmap\n\nCaused oopses again.  Also fix potential mismatch in checking if\nchange_page_attr was needed.\n\nTo do it without races I needed to change mm/vmalloc.c to export a\n__remove_vm_area that does not take vmlist lock.\n\nNoticed by Terence Ripperda and based on a patch of his.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
