)]}'
{
  "log": [
    {
      "commit": "11df65c3c6f7fdc837a5be8787d31011e8bb93c1",
      "tree": "83447de3b35d2c211ccae7046b8ca8365a948776",
      "parents": [
        "c19ef7fd8e534c870166213e9e30de9c44b34a76"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 15 11:30:55 2009 +0100"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Feb 15 12:50:10 2009 +0100"
      },
      "message": "scripts: add x86 64 bit support to the markup_oops.pl script\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "c19ef7fd8e534c870166213e9e30de9c44b34a76",
      "tree": "163e722b2a0bc6370e27504e403c066dd306a096",
      "parents": [
        "5123b327c107db9e560fd62d50c27a3816e5a078"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 15 11:30:52 2009 +0100"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Feb 15 12:50:10 2009 +0100"
      },
      "message": "scripts: add x86 register parser to markup_oops.pl\n\nAn oops dump also contains the register values.\n\nThis patch parses these for (32 bit) x86, and then annotates the\ndisassembly with these values; this helps in analysis of the oops by the\ndeveloper, for example, NULL pointer or other pointer bugs show up clearly\nthis way.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "d32ad102c6d748b510fd89f1af4232eac1be8732",
      "tree": "a4ce3739944046310efa0b190a320867ebe198f5",
      "parents": [
        "7df52316601bfe308e427e0882f3e801682d800b"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Jan 11 15:03:23 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 12 16:39:58 2009 -0800"
      },
      "message": "script: improve markup_oops.pl to also decode oopses in modules\n\nThere has been some light flamewar on lkml about decoding oopses\nin modules (as part of the crashdump flamewar).\n\nNow this isn\u0027t rocket science, just the markup_oops.pl script\ncheaped out and didn\u0027t handle modules. But really; a flamewar\nall about that?? What happened to C++ in the kernel or reading\nfiles from inside the kernel?\n\nThis patch adds module support to markup_oops.pl; it\u0027s not the\nmost pretty perl but it works for my testcases...\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5aea50b5c76b07f2b6bda3426dba998156eaf6d0",
      "tree": "20e522f88586e8c0835893e9236dded9fc6d87f2",
      "parents": [
        "d6624f996ae539344e8d748cce1117ae7af06fbf"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Jan 06 14:40:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:12 2009 -0800"
      },
      "message": "scripts: script from kerneloops.org to pretty print oops dumps\n\nWe\u0027re struggling all the time to figure out where the code came from that\noopsed..  The script below (a adaption from a script used by\nkerneloops.org) can help developers quite a bit, at least for non-module\ncases.\n\nIt works and looks like this:\n\n[/home/arjan/linux]$ dmesg | perl scripts/markup_oops.pl vmlinux\n {\n \tstruct agp_memory *memory;\n\n \tmemory \u003d agp_allocate_memory(agp_bridge, pg_count, type);\n c055c10f:\t89 c2                \tmov    %eax,%edx\n \tif (memory \u003d\u003d NULL)\n c055c111:\t74 19                \tje     c055c12c \u003cagp_allocate_memory_wrap+0x30\u003e\n /* This function must only be called when current_controller !\u003d NULL */\n static void agp_insert_into_pool(struct agp_memory * temp)\n {\n \tstruct agp_memory *prev;\n\n \tprev \u003d agp_fe.current_controller-\u003epool;\n c055c113:\ta1 ec dc 8f c0       \tmov    0xc08fdcec,%eax\n*c055c118:\t8b 40 10             \tmov    0x10(%eax),%eax     \u003c----- faulting instruction\n\n \tif (prev !\u003d NULL) {\n c055c11b:\t85 c0                \ttest   %eax,%eax\n c055c11d:\t74 05                \tje     c055c124 \u003cagp_allocate_memory_wrap+0x28\u003e\n \t\tprev-\u003eprev \u003d temp;\n c055c11f:\t89 50 04             \tmov    %edx,0x4(%eax)\n \t\ttemp-\u003enext \u003d prev;\n c055c122:\t89 02                \tmov    %eax,(%edx)\n \t}\n \tagp_fe.current_controller-\u003epool \u003d temp;\n c055c124:\ta1 ec dc 8f c0       \tmov    0xc08fdcec,%eax\n c055c129:\t89 50 10             \tmov    %edx,0x10(%eax)\n \tif (memory \u003d\u003d NULL)\n \t\treturn NULL;\n\n \tagp_insert_into_pool(memory);\n\nso in this case, we faulted while dereferencing agp_fe.current_controller\npointer, and we get to see exactly which function and line it affects...\nPersonally I find this very useful, and I can see value for having this\nscript in the kernel for more-than-just-me to use.\n\nCaveats:\n* It only works for oopses not-in-modules\n* It only works nicely for kernels compiled with CONFIG_DEBUG_INFO\n* It\u0027s not very fast.\n* It only works on x86\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
