)]}'
{
  "commit": "93dbda7cbcd70a0bd1a99f39f44a9ccde8ab9040",
  "tree": "132347cd952fb8281247c1fb38ec1c608c19a3f6",
  "parents": [
    "b9719a4d9cfa5d46fa6a1eb3e3fc2238e7981e4d"
  ],
  "author": {
    "name": "Jeremy Fitzhardinge",
    "email": "jeremy.fitzhardinge@citrix.com",
    "time": "Thu Feb 26 17:35:44 2009 -0800"
  },
  "committer": {
    "name": "H. Peter Anvin",
    "email": "hpa@zytor.com",
    "time": "Sat Mar 14 15:37:14 2009 -0700"
  },
  "message": "x86: add brk allocation for very, very early allocations\n\nImpact: new interface\n\nAdd a brk()-like allocator which effectively extends the bss in order\nto allow very early code to do dynamic allocations.  This is better than\nusing statically allocated arrays for data in subsystems which may never\nget used.\n\nThe space for brk allocations is in the bss ELF segment, so that the\nspace is mapped properly by the code which maps the kernel, and so\nthat bootloaders keep the space free rather than putting a ramdisk or\nsomething into it.\n\nThe bss itself, delimited by __bss_stop, ends before the brk area\n(__brk_base to __brk_limit).  The kernel text, data and bss is reserved\nup to __bss_stop.\n\nAny brk-allocated data is reserved separately just before the kernel\npagetable is built, as that code allocates from unreserved spaces\nin the e820 map, potentially allocating from any unused brk memory.\nUltimately any unused memory in the brk area is used in the general\nkernel memory pool.\n\nInitially the brk space is set to 1MB, which is probably much larger\nthan any user needs (the largest current user is i386 head_32.S\u0027s code\nto build the pagetables to map the kernel, which can get fairly large\nwith a big kernel image and no PSE support).  So long as the system\nhas sufficient memory for the bootloader to reserve the kernel+1MB brk,\nthere are no bad effects resulting from an over-large brk.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2b8c5160388fb4863f05c33c15e42e22c53fc7a2",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/sections.h",
      "new_id": "1b7ee5d673c23552514e7f6d6466bbcaa10ebeda",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/sections.h"
    },
    {
      "type": "modify",
      "old_id": "05c6f6b11fd5d25354ddcd7d3d07cf7cf7bf3fe5",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/setup.h",
      "new_id": "45454f3fa121d7341a3a263f87061b9e8afe8d9e",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/setup.h"
    },
    {
      "type": "modify",
      "old_id": "ac108d1fe182a44abcd0da75f18aae5fde32e1c0",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/head32.c",
      "new_id": "29f1095b08499399358a3ddcc7946a7eb52de5d4",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/head32.c"
    },
    {
      "type": "modify",
      "old_id": "f5b2722476907bcd3fe7ace735238330c604b9e9",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/head64.c",
      "new_id": "70eaa852c732a2db3ae5c809f56f27b9c0f42dc1",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/head64.c"
    },
    {
      "type": "modify",
      "old_id": "f28c56e6bf94a4cc30617f6b39d0349f13f9ebff",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/setup.c",
      "new_id": "e6b742d2a3f503e0d83707c477811cf430868b4a",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/setup.c"
    },
    {
      "type": "modify",
      "old_id": "0d860963f268f5a79c1198a6dffba0fee22f897d",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/vmlinux_32.lds.S",
      "new_id": "27e44aa215853da1b983a203ad44891c3f3f66d2",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/vmlinux_32.lds.S"
    },
    {
      "type": "modify",
      "old_id": "fe5d21ce72417f4d11b1005d9e957eae4bb11758",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/vmlinux_64.lds.S",
      "new_id": "ff373423138cd6a0ddb32eac33f0bd1b98d8325a",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/vmlinux_64.lds.S"
    },
    {
      "type": "modify",
      "old_id": "9c4294986af779ed62ab088af0dae0f0048eb0c9",
      "old_mode": 33188,
      "old_path": "arch/x86/mm/pageattr.c",
      "new_id": "1280565670e4c75736c823688f92e67015f5d8f4",
      "new_mode": 33188,
      "new_path": "arch/x86/mm/pageattr.c"
    },
    {
      "type": "modify",
      "old_id": "cb6afa4ec95c524ce8e95fa20b47b88a2f65dac9",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/mmu.c",
      "new_id": "72f6a76dbfb9b7d8bd7e216c9c500555a3570b25",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/mmu.c"
    }
  ]
}
