)]}'
{
  "log": [
    {
      "commit": "1f73897861b8ef0be64ff4b801f8d6f830f683b5",
      "tree": "b4bae8f12e1422113910d8cb00a19d010dc4a52f",
      "parents": [
        "b904d7131d116900524bd36ec170dcd97846bfd3",
        "64ffc9ff424c65adcffe7d590018cc75e2d5d42a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild\n\n* \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild: (81 commits)\n  kbuild: Revert part of e8d400a to resolve a conflict\n  kbuild: Fix checking of scm-identifier variable\n  gconfig: add support to show hidden options that have prompts\n  menuconfig: add support to show hidden options which have prompts\n  gconfig: remove show_debug option\n  gconfig: remove dbg_print_ptype() and dbg_print_stype()\n  kconfig: fix zconfdump()\n  kconfig: some small fixes\n  add random binaries to .gitignore\n  kbuild: Include gen_initramfs_list.sh and the file list in the .d file\n  kconfig: recalc symbol value before showing search results\n  .gitignore: ignore *.lzo files\n  headerdep: perlcritic warning\n  scripts/Makefile.lib: Align the output of LZO\n  kbuild: Generate modules.builtin in make modules_install\n  Revert \"kbuild: specify absolute paths for cscope\"\n  kbuild: Do not unnecessarily regenerate modules.builtin\n  headers_install: use local file handles\n  headers_check: fix perl warnings\n  export_report: fix perl warnings\n  ...\n"
    },
    {
      "commit": "59dde3853e07aaadc2b63abd16c954d5b0606cf1",
      "tree": "100bca308ab56e77b632a45401b0a915982bd290",
      "parents": [
        "52e13e219d5930fb8fb774050e6ecffa244a60a9"
      ],
      "author": {
        "name": "Hui Zhu",
        "email": "hui.zhu@windriver.com",
        "time": "Mon Feb 01 13:41:22 2010 +0800"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Fri Feb 05 22:33:43 2010 +0100"
      },
      "message": "markup_oops.pl: minor fixes\n\n1. Fix a little format issue.\n2. Check the return of \"Getopt::Long::GetOptions\".  Output usage and\n   exit if it get error.\n3. Change $ARGV[$#ARGV] to $ARGV[0].\n4. Change the code which get $modulefile from modinfo.  Replace the\n   pipeline with `modinfo -F filename $module`.\n4. Change usage from \"Specify the module directory name\" to \"Specify the\n   module filename\".\n\nSigned-off-by: Hui Zhu \u003cteawater@gmail.com\u003e\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "52e13e219d5930fb8fb774050e6ecffa244a60a9",
      "tree": "377cc7b7603ef21ce2ada4d9a6f5a0e245bad9a0",
      "parents": [
        "d224a94ab988c01f2841dccd39a518424fd26336"
      ],
      "author": {
        "name": "Hui Zhu",
        "email": "hui.zhu@windriver.com",
        "time": "Tue Jan 26 17:13:07 2010 +0800"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Fri Feb 05 22:32:23 2010 +0100"
      },
      "message": "markup_oops.pl: add options to improve cross-sompilation environments\n\nThe markup_oops.pl have 3 troubles to support cross-compiler environment:\n1.  It use objdump directly.\n2.  It use modinfo to get the message of module.\n3.  It use hex function that cannot support 64-bit number in 32-bit arch.\n\nThis patch add 3 options to markup_oops.pl:\n1. -c CROSS_COMPILE\tSpecify the prefix used for toolchain.\n2. -m MODULE_DIRNAME\tSpecify the module directory name.\n3. Change hex function to Math::BigInt-\u003efrom_hex.\n\nAfter this patch, parse the x8664 oops in x86, we can:\ncat amd64m | perl ~/kernel/tmp/m.pl -c /home/teawater/kernel/bin/x8664- -m ./e.ko vmlinux\n\nThanks,\nHui\n\nSigned-off-by: Hui Zhu \u003cteawater@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: ozan@pardus.org.tr\nCc: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "ef2b9b054580ef835078d8aa411bd06542cd5c1c",
      "tree": "077d0b4c34df1f42b5ee1fa86b70f444994675bb",
      "parents": [
        "99cf611613f8826f52c156810bfb9e34c71d193a"
      ],
      "author": {
        "name": "Hui Zhu",
        "email": "teawater@gmail.com",
        "time": "Tue Feb 02 13:44:09 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 02 18:11:22 2010 -0800"
      },
      "message": "markup_oops.pl: fix $func_offset error with x86_64\n\nWhen I use markup_oops.pl parse a x8664 oops, I got:\n\nobjdump: --start-address: bad number: NaN\nNo matching code found\nThis is because:\nmain::(./m.pl:228):\topen(FILE, \"objdump -dS --adjust-vma\u003d$vmaoffset --start-address\u003d$decodestart --stop-address\u003d$decodestop $filename |\") || die \"Cannot start objdump\";\n  DB\u003c3\u003e p $decodestart\nNaN\n\nThis NaN is from:\nmain::(./m.pl:176):\tmy $decodestart \u003d Math::BigInt-\u003efrom_hex(\"0x$target\") - Math::BigInt-\u003efrom_hex(\"0x$func_offset\");\n  DB\u003c2\u003e p $func_offset\n0x175\n\nThere is already a \"0x\" in $func_offset, another 0x makes it a NaN.\n\nThe $func_offset is from line:\n\n\tif ($line \u003d~ /RIP: 0010:\\[\\\u003c[0-9a-f]+\\\u003e\\]  \\[\\\u003c[0-9a-f]+\\\u003e\\] ([a-zA-Z0-9\\_]+)\\+(0x[0-9a-f]+)\\/0x[a-f0-9]/) {\n\t\t$function \u003d $1;\n\t\t$func_offset \u003d $2;\n\t}\n\nI make a patch to change \"(0x[0-9a-f]+)\\/0x[a-f0-9]/)\" to \"0x([0-9a-f]+)\\/0x[a-f0-9]/)\".\n\nSigned-off-by: Hui Zhu \u003cteawater@gmail.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Michal Marek \u003cmmarek@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0139f1d9539395ca341e17060ae26f44f5f31434",
      "tree": "7e09135e69126119f50a50f3dfcf961fc38790af",
      "parents": [
        "94a47083522ec4bcfc03134ebe908f1bfb393057"
      ],
      "author": {
        "name": "Hui Zhu",
        "email": "hui.zhu@windriver.com",
        "time": "Thu Jan 28 06:58:02 2010 +0000"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Tue Feb 02 14:33:56 2010 +0100"
      },
      "message": "markup_oops.pl: fix for faulting instruction in the first line of a range\n\nI got a \"No matching code found\" when I use markup_oops.pl parse a error\nin a x86_64 module.\n\ncat e.c\n\nint init_module(void)\n{\n\tchar\t*buf \u003d 0;\n\n\tbuf[0] \u003d 3;\n\n\treturn 0;\n}\n\nvoid cleanup_module(void)\n{\n\t//char\t*buf \u003d 0;\n\n\t//buf[0] \u003d 3;\n}\n\nMODULE_AUTHOR(\"Hui Zhu\");\nMODULE_LICENSE(\"GPL\");\n\n0000000000000000 \u003cinit_module\u003e:\ninit_module():\n/home/teawater/study/kernel/stack2core/example/e.c:10\n   0:\tc6 04 25 00 00 00 00 \tmovb   $0x3,0x0\n   7:\t03\n/home/teawater/study/kernel/stack2core/example/e.c:13\n   8:\t31 c0                \txor    %eax,%eax\n   a:\tc3                   \tretq\n   b:\t0f 1f 44 00 00       \tnopl   0x0(%rax,%rax,1)\n\n0000000000000010 \u003ccleanup_module\u003e:\ncleanup_module():\n/home/teawater/study/kernel/stack2core/example/e.c:20\n  10:\tf3 c3                \trepz retq\n  12:\t90                   \tnop\n  13:\t90                   \tnop\nDisassembly of section .modinfo:\n\nThis is because the faulting instruction \"movb   $0x3,0x0\" is the first\nline of the range.\n\nIn the markup_oops.pl:\nmain::(./scripts/markup_oops.pl:245):\n245:\t\t\t\tif (InRange($1, $target)) {\n  DB\u003c2\u003e p $line\nffffffffa001b000:\tc6 04 25 00 00 00 00 \tmovb   $0x3,0x0\n  DB\u003c3\u003e p $counter\n0\n\nIt just set $center in next loop. So it cannot get the $center.\n\nAnd even if $center is set to the right value 0.\nif ($center \u003d\u003d 0) {\n\tprint \"No matching code found \\n\";\n\texit;\n}\nThe first line $center will be 0, so I change the default value to -1.\n\nSigned-off-by: Hui Zhu \u003cteawater@gmail.com\u003e\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "1f8cdae43929d32e3706c314eb2a302dc3683fba",
      "tree": "cc99ca58e77d383dec6c78e034fdb30ee3e6d73a",
      "parents": [
        "97922b5462fa543484831d42ab0fe4562b9373fc"
      ],
      "author": {
        "name": "Hui Zhu",
        "email": "teawater@gmail.com",
        "time": "Fri Jan 15 17:01:07 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:37 2010 -0800"
      },
      "message": "markup_oops.pl: fix error with x86\n\nWhen I try to use markup_oops.pl in x86, I always get:\n\ncat 1 | perl markup_oops.pl ./vmlinux\nobjdump: --start-address: bad number: NaN\nNo matching code found\n\nThis is because in line:\n\tif ($line \u003d~ /EIP is at ([a-zA-Z0-9\\_]+)\\+0x([0-9a-f]+)\\/[a-f0-9]/) {\n \t\t$function \u003d $1;\n \t\t$func_offset \u003d $2;\n \t}\n\n$func_offset will get a number like \"0x2\"\n\nBut in follow code:\n\nmy $decodestart \u003d Math::BigInt-\u003efrom_hex(\"0x$target\") -\nMath::BigInt-\u003efrom_hex(\"0x$func_offset\");\n\nIt add other ox to ox2.  Then this value will be set to NaN.\n\nSo I made a small patch to fix it.\n\nSigned-off-by: Hui Zhu \u003cteawater@gmail.com\u003e\nAcked-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"
    },
    {
      "commit": "82fa39552fd858468a5647fa58d14955ecd50eb4",
      "tree": "92b29c2f4780dc5480a1125354415f8f3bfd4bf1",
      "parents": [
        "f9d490ab374236a115440c771ecf0fb2890eb929"
      ],
      "author": {
        "name": "Ozan Çaglayan",
        "email": "ozan@pardus.org.tr",
        "time": "Fri Sep 18 12:49:27 2009 -0700"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Sep 20 12:27:43 2009 +0200"
      },
      "message": "markup_oops: use modinfo to avoid confusion with underscored module names\n\nWhen EIP is at a module having an underscore in its name, the current code\nfails to find it because the module filenames has \u0027-\u0027 instead of \u0027_\u0027.  Use\nmodinfo for a better path finding.\n\nSigned-off-by: Ozan Çaglayan \u003cozan@pardus.org.tr\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "51fbb4bab6c8710eb897ab3fb06efbbc921f3a8d",
      "tree": "bb6c71ef38c85ec8db5c6475e1426a96c3375662",
      "parents": [
        "f5886c7f96f2542382d3a983c5f13e03d7fc5259"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Wed Jul 29 15:02:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:34 2009 -0700"
      },
      "message": "markup_oops: fix it with 32-bit userspace on a 64-bit kernel\n\nA 32-bit perl can\u0027t handle 64-bit addresses without using the BigInt\npackage.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nAcked-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"
    },
    {
      "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"
    }
  ]
}
