)]}'
{
  "log": [
    {
      "commit": "86ec1173ef7815653d111693e9720f8363d70c3d",
      "tree": "8d15bd31fe1045108878f51fd7b7698b7c11084c",
      "parents": [
        "63cea6edc51ef4605c14692417392c1505cfb738"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:31:50 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "tables.h: add assembler versions\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "63cea6edc51ef4605c14692417392c1505cfb738",
      "tree": "122043c3dab6b9033736a229ce4e1d608d05a11e",
      "parents": [
        "81c47108597e52e1f4cd10786893ec9ba337b9c4"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:20:52 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "asm-generic/sections.h: extend assembler push_section_type()\n\nAdd flags support to the assembler version of push_section_type().\nThis also makes then SECTION_TYPE() be the assembler default if\nthe flags are empty. This is optional, but since we are enabling\n\nSECTION_TYPE() to be defined for all code this lets us keep a\ndefinition for it for C code, assembly, and assembler.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "81c47108597e52e1f4cd10786893ec9ba337b9c4",
      "tree": "f459fbb74967ec5c4167d79c8bf33746222e45bb",
      "parents": [
        "31e11e2a3a34222eb781ef791e7d0515707e35bc"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:04:06 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "asm-generic/sections.h: add assembler version of push_section_type()\n\nThis lets us match the style of using using push_section_type for\nasm volatile but for use in actual foo.S code. We keep the\nSECTION_TYPE() declaration as well since both tables.h and ranges.h\nuse it for all code (C code, assembly, and assembler). We keep it\nas we\u0027ll also enable next extending the assembler version of\npush_section_type() with a flags option, SECTION_TYPE() on the\nassembler version can be used for when the flags is empty.\n\nWhile at it avoid requiring quotes for the level, this lets us\nmatch all uses of the levels for all code.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "31e11e2a3a34222eb781ef791e7d0515707e35bc",
      "tree": "c5aacc860b257ad658fb49e74a3f8cc5b4e73a57",
      "parents": [
        "56b6b43926232e258d63bf5a981cc64575d27f8b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Jun 28 12:27:13 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "x86: add architecture enabled ps_shr()\n\nThis shows how we can add an architecture enabled optimization for\nps_shr(). This is currently disabled though as I\u0027m sure the asm is\nnot right yet. Once the x86 asm is fixed in the header file\narch/x86/include/asm/ps_const.h just edit the top level Makefile and\nuncomment:\n\n  #CFLAGS +\u003d -DCONFIG_HAVE_ARCH_PS_CONST\n\nExpected synth driver output:\n\nSynthetics: ps_shr(0xDEADBEEF, get_demo_shr) returns: 0x0000DEAD\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "56b6b43926232e258d63bf5a981cc64575d27f8b",
      "tree": "99d546e5cdd0b31e5ed50b50045eb27445895164",
      "parents": [
        "b9dce6bf0b9d67d944854fb4ed19a6593493af0d"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Jun 28 13:55:34 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "ranges.h: add push_section_rng() to be used on asm volatile()\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "b9dce6bf0b9d67d944854fb4ed19a6593493af0d",
      "tree": "10d7a892143bf4f215eebc9eddaa7ca883b8f153",
      "parents": [
        "65b85f7b419b16416a53d94b9b3cd1c3e895341c"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Jun 28 13:51:52 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "tables.h: add push_section_tbl() for asm volatile calls\n\nThis is used on C code calling in to asm code via asm volatile().\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "65b85f7b419b16416a53d94b9b3cd1c3e895341c",
      "tree": "f62043f68977a8c31cea8e1cea65381a27df6f86",
      "parents": [
        "c16aefb49f4e6281eae247c162d59e7f557069a5"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 12:24:43 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "asm-generic: add push_section_type() to be used on asm volatile() code\n\nWith generic section type solutions in place we need a general\nasm solution for declaring entries with asm. The first easy target\nis to cover the C asm declarations, guard the header file for now\nwith __ASSEMBLY__ and define a first generic entry push_section_type()\nto be used later for custom section type annotations.\n\nArchitectures can override. As suggested by hpa and later confirmed by\nHeiko for the extreme corner case concern on s390, just \\n should work\nacross the board [0].\n\n[0] https://lkml.kernel.org/r/20160226145603.GA3964@osiris\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "c16aefb49f4e6281eae247c162d59e7f557069a5",
      "tree": "88dc84e415b59a81042f3c832e65b05737c593a0",
      "parents": [
        "923a4eb88b45bc947812a394d3acb92dd4f4bbf3"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Jun 28 13:49:04 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "tables.h: enable use of SECTION_TBL() on asm code\n\nThis enables asm cod eto also use SECTION_TBL(), if we want we can\nlater add an asm equivalent to DECLARE_SECTION_RANGE() but for tables,\nbut we leave this for later as we don\u0027t need it yet.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "923a4eb88b45bc947812a394d3acb92dd4f4bbf3",
      "tree": "4700cb2a70cbba307c29cd9c52c5e45abd93c0d2",
      "parents": [
        "3adf023d2a05a89f4851bd49fd6a3be78bb7f77f"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Jun 28 11:19:52 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 29 17:29:05 2016 -0700"
      },
      "message": "synth: add partially static shift right demo\n\nThis demos the use of \"partially static\" variables, they like\nconsts, however we modify them early in boot time and provide\nfunctions that do the handy work for us. The handy work of\nprocessing them is accomplished through kernel\u0027s alternatives.\nTo this end we add an example simple alternatives processing\nmechanism, its architecture is rather simple given it simply relies\non the linker table with structural data, and updates it as needed.\n\nWe demo a partially static function which shifts a variable to\nthe right by certain amount of times, the amount of times we\nshift is determined through a function passed early in boot,\nand as such can be dynamic.\n\nWithout alternatives processed you\u0027d get:\n\nSynthetics: ps_shr(0XDEADBEEF) returns: 0xDEADBEEF\n\nAfter alternatives is processed you get:\n\nSynthetics: ps_shr(0XDEADBEEF) returns: 0x0000DEAD\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "3adf023d2a05a89f4851bd49fd6a3be78bb7f77f",
      "tree": "60fc5f26475cad2ac9f447fc0ae0de6be79c92fb",
      "parents": [
        "f92e448b26b107890a5e6fa956c8c57530128b91"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:56:30 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "ranges.h: add asm version of DECLARE_SECTION_RANGE()\n\nThis adds an asm version of DECLARE_SECTION_RANGE().\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "f92e448b26b107890a5e6fa956c8c57530128b91",
      "tree": "ac6c7a02e79ec0d264e3712badcfc2186a71f987",
      "parents": [
        "7173c4bfe8959e2d6f51e7029299dff05d426ae7"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Sat Jun 25 00:14:53 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "drivers/synth: add initial synthetic \"or\" function using section ranges\n\nThis demos building a synthetic \"or\" function using section\nranges in asm. The file or.S consists of completely unordered pieces of\ncode, each doing different things and each also pegged onto separate\nthe same section, however specified with a specific order level.\n\nThe different pieces of unordered code illustrates how we\u0027d expect code to\nbe gathered and compiled, each piece of code could realiastically be in\nseparate files. We add some #ifdefs with CONFIG_* options, we could also\nexpect that some of the code might be present and some of it might not\nwhile it all still works together.\n\nWe\u0027ll later add support for building these pieces of code separately.\n\nThe linker stiches these pieces of code for us using the levels for\norder, in the end it builds a single concise function which then runs\norderly.\n\nUpon running this we get a series of variables OR\u0027d together:\n\nSynthetics: synth_init_or(2) returns: 0xDEADBEEF\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "7173c4bfe8959e2d6f51e7029299dff05d426ae7",
      "tree": "b59ee55124b7d7dd9fc65b95da70341f0305588f",
      "parents": [
        "2de6502557917f2a69e497a6eef1ecb4d378d825"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 19:20:29 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "ranges.h: use tbl for tables and rng for ranges\n\nThis simplifes the section names. Requested by hpa.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "2de6502557917f2a69e497a6eef1ecb4d378d825",
      "tree": "c612dd9ffa5b830a2a8cad6f60998704d384a060",
      "parents": [
        "21ae685076d09f91d4c82957a97bbe60eeffbf6d"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 18:18:02 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "sections.h: simplify LINUX_SECTION_ALIGNMENT()\n\nThis does not need to use __typeof__(), since we have\nthe name just refer to it directly. There are quite\na few users of this style in the kernel already as well,\nexample, one example: net/netfilter/xt_repldata.h\n\nIt doesn\u0027t seem worth generalizing this into\ninclude/linux/compiler-gcc.h as we\u0027re providing all our\nattributes in one shot.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "21ae685076d09f91d4c82957a97bbe60eeffbf6d",
      "tree": "bc2942e16f7eca4464a830395c508178853c19d3",
      "parents": [
        "8970a7ca330c7d94b0616fb67661d3d8ab2bc933"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 18:03:17 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "sections.h: drop LINUX_SECTION_ALIGN_FUNC and LINUX_SECTION_ALIGN_STRUCT\n\nUpon review with hpa the second pass issues with ld should be\ngone if the section ranges and linker tables are used as the custom\nlinker script is not going to be relied upon for the alignment. The\n2nd pass issue was due to the fact that the compiler and linker might\nhave different strategies for figuring what the proper alignment\nshould be, and there can be a disconnect between what the compiler\nassumes and what the linker ends up also deciding to use.\n\nBy using section ranges and linker tables that disconnect is no longer\nthere, as we are relying on the compiler exclusively now for alignment.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "8970a7ca330c7d94b0616fb67661d3d8ab2bc933",
      "tree": "ea87a0d7ff8dbec6cba64445039c7a4898165641",
      "parents": [
        "d12b56007b6bbf5f673fdb0ccd6fc9c727187ba9"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 17:50:29 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "README: we\u0027re checking if LTO_REFERENCE_INITCALL() is needed\n\nThis is being discussed:\n\nhttps://lkml.kernel.org/r/CAB\u003dNE6W6Eh1tU\u003dNXf20f-CPYeT22mtXGzrYqM9W-f14dGBrEsA@mail.gmail.com\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "d12b56007b6bbf5f673fdb0ccd6fc9c727187ba9",
      "tree": "965cfbaa33580e0b84f24a35ef68a7112608b6bc",
      "parents": [
        "537156e15ed7d617d79d3ee654f881f20dfcadbd"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 17:43:43 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "ranges.h: add __LINUX_RANGE_ORDER()\n\nAs per hpa, an order level can be highly desirable for section\nranges, for instance to build a synthetic function. We\u0027ll try to\nadd an example of a synthetic function later.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "537156e15ed7d617d79d3ee654f881f20dfcadbd",
      "tree": "fee7666bc6a2b648fbf76b309c198929c59ab3ed",
      "parents": [
        "e63ca7ecdd50f6aeb9ec9f6bb0026b260327c605"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 17:40:20 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "ranges.h: rename __LINUX_SECTION() to __LINUX_RANGE()\n\nThat was the original intention.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "e63ca7ecdd50f6aeb9ec9f6bb0026b260327c605",
      "tree": "1152281cd1ada2e8392e3593553f1c41a2bd5d0c",
      "parents": [
        "1e052b4d366436af18e9ec4a27dd309d2dd8cb36"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 17:37:34 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "sections.h, ranges.h. add support for asm version of SECTION_RANGE()\n\nTo support an asm version of SECTION_RANGE(), add a respective asm\nversion of SECTION_TYPE().\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "1e052b4d366436af18e9ec4a27dd309d2dd8cb36",
      "tree": "f200b72edbe8919fb7f8343c48e78ec30270634b",
      "parents": [
        "3d445cd5f5bb09d034c35dd3e0910f9f185e19be"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 17:22:43 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Jun 27 17:52:55 2016 -0700"
      },
      "message": "tables.h: make DECLARE_LINKTABLE() .data by default\n\nUpon review with hpa its better to have the shorter version for\nwhat we expect linker tables to be used for mostly, and that is data.\nDECLARE_LINKTABLE_TEXT() is then required for .text.\n\nExpand documentation on that we have then only two declarations\nalso:\n\n  o DECLARE_LINKTABLE()        for data\n  o DECLARE_LINKTABLE_RO()     for read-only data\n\nThe definitions are used to associate these with actual sections\non the code that implements support for the table.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "3d445cd5f5bb09d034c35dd3e0910f9f185e19be",
      "tree": "62fee8b89a5c57b44fa32a3fbccfdc3a780538b4",
      "parents": [
        "d855e61af480511d3ba0a5318885bb76abba7a83"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:02:43 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "license: relicense to copyleft-next\n\nA pending patch suggests copyleft-next GPLv2 compatible,\nit integrates the license as the list of possible licenses\nused on modules and files [0] in the Linux kernel. While\nintegration of this patch is pending, relicense this userspace\ncode to copyleft-next in the meantime. copyleft-next is my\nlicense of choice.\n\nThe current template license on tables.h is temporary while\nits sorted out what is best.\n\nAs noted in the proposed patch upstream to add copyleft-next to\nthe list of kernel compatible licenses [0] but added here to explain\n*why* I\u0027ve decided to do this, a summary of benefits of using\ncopyleft-next \u003e\u003d 0.3.1 over GPLv2 is listed below, it shows *why*\nsome folks like myself will prefer it over GPLv2 for future work.\n\nAn obvious gain not in that list is that this particular userspace\ncode is now under copyleft-next, so while GPLv2 applies to the Linux\nkernel we benefit from keeping this code under copyleft-next if\nfuture enhancements are made upstream on the Linux kernel.\n\no It is much shorter and simpler\no It has an explicit patent license grant, unlike GPLv2\no Its notice preservation conditions are clearer\no More free software/open source licenses are compatible\n  with it (via section 4)\no The source code requirement triggered by binary distribution\n  is much simpler in a procedural sense\no Recipients potentially have a contract claim against distributors\n  who are noncompliant with the source code requirement\no There is a built-in inbound\u003doutbound policy for upstream\n  contributions (cf. Apache License 2.0 section 5)\no There are disincentives to engage in the controversial practice\n  of copyleft/ proprietary dual-licensing\no In 15 years copyleft expires, which can be advantageous\n  for legacy code\no There are explicit disincentives to bringing patent infringement\n  claims accusing the licensed work of infringement (see 10b)\no There is a cure period for licensees who are not compliant\n  with the license (there is no cure opportunity in GPLv2)\no copyleft-next has a \u0027built-in or-later\u0027 provision\n\n[0] http://lkml.kernel.org/r/1465929311-13509-1-git-send-email-mcgrof@kernel.org\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "d855e61af480511d3ba0a5318885bb76abba7a83",
      "tree": "c459a4acf2411915958077ddc112f6f410317e03",
      "parents": [
        "011e4508be960557ab63e6c535af1998578f14aa"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 14:21:21 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "tables.h reflect this is a full re-write\n\nAt this point we\u0027ve diverged so much this is clearly\nand obviously a full re-write.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "011e4508be960557ab63e6c535af1998578f14aa",
      "tree": "29cde186927a400163c3949641adf639e1fde922",
      "parents": [
        "eabe5cef269749e6006cda17d01bc8e22e57ab47"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 22 11:15:46 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "README: document section ranges and tables\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "eabe5cef269749e6006cda17d01bc8e22e57ab47",
      "tree": "ac66f0aecfeed1436aea4b2fef6cf60f35aefbcd",
      "parents": [
        "2858901a3d9720f92bf3fd09f38c6aa351093975"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 14:01:13 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "sections.h: add generic section declaration\n\nQuite a few generalizations between section tables\nand ranges:\n\no Replace the *SECTION_TBL*() macros with generic\n  *SECTION_TYPE*() macros. This lets us be more agnostic\n  between the linker tables and section ranges and also\n  lets us add other possible section types in the future\n  in a more generic fashion.\n\no Generalize the arbitrary order of \"any\" as SECTION_ORDER_ANY,\n  any special section type not needing order can use this. The\n  section ranges are an example.\n\no Keep sort for section ranges on vmlinux.lds.S, otherwise\n  the start and end declaration will not work. By keeping the\n  sort and using \"any\" for in between items we\u0027re able to extend\n  section ranges without modifying the linker script.\n\no Rename the special section for tables from .tbl to .tables\no Use    the special section for ranges as           .ranges.\n\no Require SECTION_TYPE_* name declarations for each new type\n  of special section type. We start off with two:\n\n  - SECTION_TYPE_RANGES\tthis is for .tables\n  - SECTION_TYPE_TABLES\tthis is for .ranges\n\n  These are postfixes for each special section type. By\n  using these we can easily modify the special section\n  postfix in header files in one place.\n\no Due to the very explicit divide between section ranges and\n  section tables we now need a separate entry for each in vmlinux.lds.S\n  but we accept this for now as it helps with semantics in separation.\n  Technically we could also just shove both section ranges and\n  section tables under its own special section prefix, perhaps\n  .types and then we can move both section ranges and section tables\n  underneath, so we\u0027d have, for example for .text:\n\n  .text\n  .text.types.*\n  .text.types.tables\n  .text.types.ranges\n\n  While this saves us the need to add a new special section type\n  under vmlinux.lds.S we may loose the ability to sort tables.* and/or\n  we are forcing a sort for *all* special section types, thereby slowing\n  down link time.\n\no Since we modified tons of section stufff, we needed to fix the\n  \u0027make clean\u0027 as otherwise we are left with old objects using\n   the old .tbl section names.\n\nTons of bike shedding opportunities here! We let the fun bike shedding\ndiscussions happen openly with the community.\n\nRun time tested:\n\nInitializing x86 bare metal world\nx86-init: Number of init entries: 7\nInitializing kasan ...\nEarly init for Kasan...\nCompleted initializing kasan !\nInitializing memory ...\nCompleted initializing memory !\nInitializing kprobes ...\n\u003d\u003d OK: test_kprobe_0001 within range!\n\u003d\u003d OK: test_kprobe_0002 not in range as expected!\nCompleted initializing kprobes !\nInitializing pci ...\nPCI fixup size: 1\nDemo: Using LINKTABLE_FOR_EACH\nfoo_fixup\nDemo: Using LINKTABLE_RUN_ALL\nfoo_fixup\nCompleted initializing pci !\nInitializing beta ...\nCompleted initializing beta !\nInitializing alpha ...\nCompleted initializing alpha !\nBooting bare metal\nCalling start_kernel()...\nACME: Initializing ...\nACME: Finished init ... !\nACME: Running scheduled work\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "2858901a3d9720f92bf3fd09f38c6aa351093975",
      "tree": "1594a02732d02e4f422ca125c76f00be04e9891d",
      "parents": [
        "663dc302c8b5232271bf200ba92e4e6a012a9f0c"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 13:13:34 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": ".sched.text: port this sub-section to section ranges\n\nThis ports the the sub-section .sched.text to use\nthe more standard section range interface, doing so\navoids mucking with the linker script and pushes us\nto explicitly annotate the standard section where this\nbelongs, all in C code and header files.\n\nThe section range used, in this case \"sched_text\", is\narbitrary but we needs to be unique within the defined\nsection used, in this case SECTION_TEXT cannot have any\noclaredther \"sched_text\" section ranges.\n\nWe now have:\n\n$ readelf -S kernel/locking/mutex.o | grep sched\n  [ 6] .text.tbl.sched_t PROGBITS         0000000000000000  000000b0\n  [ 9] .text.tbl.sched_t PROGBITS         0000000000000000  00000138\n  [10] .text.tbl.sched_t PROGBITS         0000000000000000  00000138\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "663dc302c8b5232271bf200ba92e4e6a012a9f0c",
      "tree": "97a45cb78f0390fda4062345496b1655f1c19240",
      "parents": [
        "5cef6f4b348f0e1030c7e2523a6c7749897e191a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 13:10:04 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "section.h: add SECTION_SCHED\n\nAlso use this in the linker script. This is the first\npart of porting .sched.text to standardized section ranges.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "5cef6f4b348f0e1030c7e2523a6c7749897e191a",
      "tree": "848c7176d2512ef9ebfdf70c8553aac96cc4e8ee",
      "parents": [
        "8a5a6aae52141d727ff51d24cc6bad4870976f57"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 12:36:00 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "mutex: move mutex calls to .sched.text\n\nWe move mutex calls to its own sub-section, underneath .text.\nWe\u0027ll next try to use the standard section work we\u0027ve been doing\nto see how this will fit as sub-sections within the framework.\n\nreadelf -S kernel/locking/mutex.o | grep sched\n  [ 6] .sched.text       PROGBITS         0000000000000000  000000b0\n  [ 7] .rela.sched.text  RELA             0000000000000000  00001368\n\nWhen we run ./main:\n\nInitializing x86 bare metal world\nx86-init: Number of init entries: 7\nInitializing kasan ...\nEarly init for Kasan...\nCompleted initializing kasan !\nInitializing memory ...\nCompleted initializing memory !\nInitializing kprobes ...\n\u003d\u003d OK: test_kprobe_0001 within range!\n\u003d\u003d OK: test_kprobe_0002 not in range as expected!\nCompleted initializing kprobes !\nInitializing pci ...\nPCI fixup size: 1\nDemo: Using LINKTABLE_FOR_EACH\nfoo_fixup\nDemo: Using LINKTABLE_RUN_ALL\nfoo_fixup\nCompleted initializing pci !\nInitializing beta ...\nCompleted initializing beta !\nInitializing alpha ...\nCompleted initializing alpha !\nBooting bare metal\nCalling start_kernel()...\nACME: Initializing ...\nACME: Finished init ... !\nACME: Running scheduled work\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "8a5a6aae52141d727ff51d24cc6bad4870976f57",
      "tree": "812ade5411fc847791b9dbe6caca6ad48ad27b4a",
      "parents": [
        "f9853adb16a2a00e3f5cca26fcdcf2582a799ffa"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 12:32:41 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "acme: add a simple workqueue example\n\nWorkqueues use mutex_lock() behind the scenes, which we\u0027ll\nsoon port to use its own section matching the Linux\nkernel style.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "f9853adb16a2a00e3f5cca26fcdcf2582a799ffa",
      "tree": "477931313a2336649b2bbcf4bcc2c9e896bfa703",
      "parents": [
        "85b23bc6c47b5a9e1aba0c6afd77d1144c67f452"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 12:17:44 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "acme: port acme to proper Linux kernel built-in driver\n\nThis was using the x86 init tables, that\u0027s for x86.\nMove this stuff to the proper Linux kernel built-in\ndriver infrastructure.\n\nNote that this now loads during start_kernel().\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "85b23bc6c47b5a9e1aba0c6afd77d1144c67f452",
      "tree": "81f7ffe2c41164f4636c06283b513c2d65dcfe3f",
      "parents": [
        "5fe2db96e27cc2c651b4937603faf3dd78c730ed"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 12:15:19 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "kernel: add support for loading built-in drivers\n\nThere are no drivers yet, that\u0027s next.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "5fe2db96e27cc2c651b4937603faf3dd78c730ed",
      "tree": "0286a12422d57b6c8f05158705dd9ac321821edc",
      "parents": [
        "1487d7f18655be4bb39c3b667bd66509b1cef35d"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 11:58:05 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "x86: update to account for feedback\n\nThis updates the x86 init tables to account for some initial\nfeedback after the v2 series. In particular, some highlights:\n\no removed run time sorting: this is not needed yet\no since we now have only 2 declarers:\n\nDECLARE_LINKTABLE() -- const\nDECLARE_LINKTABLE_DATA() - non const\n\nWe use use DECLARE_LINKTABLE_DATA() for the table, and the definition\nactually pegs it to the right section.\n\no we drop x86_init_fn_setup_arch() and x86_init_fn_late_init()\n  as this is better evolved with time with upstream. The point\n  is made and I think its understood what the goal is here.\n\no we drop the char *name from the struct x86_init_fn given to\n  match the upstream kernel use. The kernel can get the name\n  using %pF, but we can\u0027t since libc stdio printf does not support\n  this. Maybe we can port this somehow in... but I can\u0027t see how.\n  For now just comment out %pF uses and deal with it by cluttering\n  our init calls so we know what triggered where.\n\n  For instance the kernel can use but we\u0027ll comment this sort of\n  stuff out:\n\n  pr_err(\"Init sequence fails to declares any supported subarchs: %pF\\n\", fn-\u003eearly_init);\n\no The X86_INIT_EARLY_*() macros are simplified to only provide what we\n  need, we also use lower case, so x86_init_early_pc(), etc.\n\no The xen macro x86_init_early_xen() is added but won\u0027t be part of the\n  v3 upstream submission. That will later be used but we have\n  to re-consider a different level order for it, perhaps a hypervisor\n  order level. That can only happen *iff* we can get load_idt() issue\n  addressed. As it stands we can\u0027t use the subarch on x86_64_start_kernel()\n  prior to load_idt(), our userspace demo here uses it as that\u0027s the\n  goal but in practice this doesn\u0027t work yet on x86 kernels.. we can\n  only access the subarch after load_idt(), so upstream v3 submission\n  will use the x86_init_fn_early_init() on x86_64_start_reservations().\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "1487d7f18655be4bb39c3b667bd66509b1cef35d",
      "tree": "89210e918a64ee99eb01a49206bf42c7cce1eff7",
      "parents": [
        "66b13ebbecf10e0feff390ef9a7a48391383c96b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 11:44:24 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "kernel.h: add pr_fmt support\n\nThis lets us carry code more as-is from upstream.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "66b13ebbecf10e0feff390ef9a7a48391383c96b",
      "tree": "5241c0544b0f8e1df0199afa11a994290fc211b7",
      "parents": [
        "2ebd82068393135d81a16a8b077bb50a4c5fa294"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 11:42:36 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "kernel.h: move BIT() to bitops.h\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "2ebd82068393135d81a16a8b077bb50a4c5fa294",
      "tree": "cc44c45dfe2771d75b918eebe75c9b0428df7621",
      "parents": [
        "05d62fda8523605de4b7e16dec23a05af1bcf137"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 10:47:52 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "start_kernel: move to kernel/main.c\n\nNo functional changes yet.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "05d62fda8523605de4b7e16dec23a05af1bcf137",
      "tree": "2d58abd8f401e9cfbf3b935165375cb1084d0965",
      "parents": [
        "1820fc1d6cbfbda21d8626d8df83879c22c3d662"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 10:45:16 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "kernel.h: add header guard\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "1820fc1d6cbfbda21d8626d8df83879c22c3d662",
      "tree": "02d0f15a5a4dc3495f27e3b449f91de5b4a4cab8",
      "parents": [
        "81d63ec795523d3448685df3ab1dc99744301084"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:26:12 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "module.h: add initial built-in module support\n\nThis adds the references to enable module initialization\nbut only with built-in support.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "81d63ec795523d3448685df3ab1dc99744301084",
      "tree": "2fc23f1859ade3500435308e12fcdbbac1e0988f",
      "parents": [
        "3a9ae36aa1a7a0971f444a18ca3877fa450b6e46"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:25:17 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "init.h: add initial init section using linker tables\n\nWe\u0027ll use this later for initial module support.\nNote this goes with linker table support. It should\ngive an idea of how we can port proper Linux kernel\ninit levels to linker table.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "3a9ae36aa1a7a0971f444a18ca3877fa450b6e46",
      "tree": "f8b983e6e535baf641e10def5b8bff1ad38228e3",
      "parents": [
        "47033ff2561a193003d7442d9a90eccd631f707e"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:24:32 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "kernel.h: add __used definition\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "47033ff2561a193003d7442d9a90eccd631f707e",
      "tree": "619b0754368b158b750bdcb997dcac673d89d6e4",
      "parents": [
        "4e9619c869cef97031ec11e36235656e7bb8ba4a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:23:40 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "compiler.h: add __section() definition\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "4e9619c869cef97031ec11e36235656e7bb8ba4a",
      "tree": "1449242efb19ffaa6cf325fdaecf47f3fa1a6bbd",
      "parents": [
        "9efa5fbfe5a5320e8e5eff74c729e4e62b04df3c"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:15:24 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "workqueue: add workqueue support\n\nWrap Linux workqueue implementation with pthreads.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "9efa5fbfe5a5320e8e5eff74c729e4e62b04df3c",
      "tree": "d3e375e01cde04fd786e736ac22ff29bf4ddceea",
      "parents": [
        "98ce492a9086da1206d3db3a4f0103961ae8740c"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:11:50 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "spinlock: add spinlock support\n\nWe use pthread_spinlock_t with PTHREAD_PROCESS_SHARED.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "98ce492a9086da1206d3db3a4f0103961ae8740c",
      "tree": "66d96477f62a5e892a1b044f94d0257df6d0852d",
      "parents": [
        "c3b7dd5ca162075327a1f6e9677e802844bf00f7"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Jun 03 09:01:37 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "mutex: add initial mutex support\n\nWe\u0027ll later use this to peg __sched, which will be our\nfirst example subsection to test with linker tables.\nBefore we do the work to pget mutext to __sched we\u0027ll\nadd a bit more kernel interface support to make things\na bit more interesting and useful to test.\n\nThis a simple mutex implementation which just wraps around\nthe pthread pthread_mutex_t.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "c3b7dd5ca162075327a1f6e9677e802844bf00f7",
      "tree": "71c3139c510e8ae07b787970805192cf73898b24",
      "parents": [
        "eafb18be37a423e1e4e9340f271aeae0bb3c6758"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 02 15:32:30 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "kernel.h: add BUG_ON() and use abort() to bail on BUG()\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "eafb18be37a423e1e4e9340f271aeae0bb3c6758",
      "tree": "a469bbc6cca2f9ae0463f9623911b7e20156cded",
      "parents": [
        "02ae2eb346c04d9623afaba5b78b4ab7dbf9b191"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 02 10:38:58 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "sections.h expand documentation over function alignment\n\nFound a nugget around SCHED_TEXT documentation on\ninclude/asm-generic/vmlinux.lds.h upstream.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "02ae2eb346c04d9623afaba5b78b4ab7dbf9b191",
      "tree": "cf4437a085e0188930a5dd8643b3cc6f02f387b6",
      "parents": [
        "ba839875c2de872cc21d1b29420fd0d1ad6e5d2b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 02 09:59:30 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "tables.h: use func alignment for items other than first\n\nIn practice max structural alignment breaks iteration.\nUsing functional alignment for each new item works well\nthough. We can hash out what is best with the community.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "ba839875c2de872cc21d1b29420fd0d1ad6e5d2b",
      "tree": "53b89a6c7522fa1aba2f749537a8c8368b867eba",
      "parents": [
        "0a3b8ccc014151dd334cd58bd9d64168de55ca6e"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Jun 01 18:52:06 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "sections.h/ranges.h/tablesh: change alignment to safe conservative values\n\nThe alignment values come from include/asm-generic/vmlinux.lds.h\nthrough lessons picked up from STRUCT_ALIGN ALIGN_FUNCTION.\n\nNote that his doesn\u0027t work though ! Make record of this and\nmake the respective functional changes next. Deciding how we\nalign can then be punted to the community.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "0a3b8ccc014151dd334cd58bd9d64168de55ca6e",
      "tree": "a7b1271519c2cac8305d74b67f8d55d041a2323a",
      "parents": [
        "bfcbe12cd504ba4bfa1fe4d2b5299114b6ee1455"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 20:47:59 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "compiler.h, kprobes.h: add missing header files\n\nI forgot to add these, and fix a few compile errors.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "bfcbe12cd504ba4bfa1fe4d2b5299114b6ee1455",
      "tree": "aef9d5be0731a0ee8de0198f12f3854fcd97ceba",
      "parents": [
        "75187b8895ebbe7d864d35d924572df875bea382"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 19:01:42 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "ranges: add initial kprobes demo\n\nThis adds a small demo of sectoin ranges matching the style\nused in the Linux kernel for kprobes. The only use case we give\nand test here is being able to annotate routines as part of\nthe kprobe section, or not. We test a __kprobes routine, and\nthen also test another routine without the __kprobes annotation.\n\nTo support section ranges properly I noticed we needed to also\nextend ranges.h with a proper:\n\nSECTION_RANGE_BEGIN()\nSECTION_RANGE_END()\n\nThese are used for the DEFINE_SECTION_RANGE(), which is used\nto require the user to specify the specific section the custom\nsection range being defined belongs to.\n\nThe next required set of tests would be to test sub-sections...\nIts not clear what examples there are for these yet though.\nAt least I have not seen them in\n\nResults:\n\nInitializing x86 bare metal world\nNumber of init entries: 8\nInitializing kasan ...\nEarly init for Kasan...\nCompleted initializing kasan !\nInitializing memory ...\nCompleted initializing memory !\nInitializing kprobes ...\n\u003d\u003d OK: test_kprobe_0001 within range!\n\u003d\u003d OK: test_kprobe_0002 not in range as expected!\nCompleted initializing kprobes !\nInitializing pci ...\nPCI fixup size: 1\nDemo: Using LINKTABLE_FOR_EACH\nfoo_fixup\nDemo: Using LINKTABLE_RUN_ALL\nfoo_fixup\nCompleted initializing pci !\nInitializing beta ...\nCompleted initializing beta !\nInitializing alpha ...\nCompleted initializing alpha !\nInitializing acme ...\nCompleted initializing acme !\nBooting bare metal\nCalling start_kernel()...\nRunning setup_arch for kasan ...\nCalling setup_arch work for Kasan...\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "75187b8895ebbe7d864d35d924572df875bea382",
      "tree": "28968c7783ef048e89d2c123f6033668052e3706",
      "parents": [
        "39173728ea2d352032bdc8fc17b453afd6a8375b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 16:43:27 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "tables.h: split off linker table in 3 parts\n\nThere are two ways custom ELF sections are used:\n\na) text \"ranges\":\n\n   Collection of executable routines, this use varies but one\n   example is the kernel\u0027s kprobes. Since kprobes uses two\n   custom sections, to be specific this references the use\n   case for .kprobes.text -- these are currently rolled into\n   the kernel\u0027s INIT_DATA in include/asm-generic/vmlinux.lds.h\n   and used as INIT_DATA_SECTION(16) on x86 under\n   arch/x86/kernel/vmlinux.lds.S\n\nb) tables:\n\n   Custom data structures stitched together\n\nWe split off linker tables into 3 sections:\n\nI.   include/linux/sections.h\nII.  include/linux/tables.h\nIII. include/linux/ranges.h\n\nThe sections.h already existed, we just keep stuffing in there\ngeneric helpers which allow us to streamlne customizing Linux\nsections.\n\nMotivation for this is as per hpa [0]:\n\n-----------------------------------------------------------------------\n1. priority ordering doesn\u0027t make any sense for ranges.\n2. ranges can be hierarchial, that is, range \"bar\" can be entirely\n   inside range \"foo\".\n3. ranges aren\u0027t typed (although in C, that pretty much means they are\n   \"char\" or \"unsigned char\" as there really isn\u0027t any way to define an\n   \"array of void\".)\n4. the only useful operator on a range is \"is address X inside this\n   range\"; this operator is likely *not* useful for a table, since\n   if you have to ever invoke it you are probably doing something very\n   wrong.\n\nFor this to work, we need strings such that they will always sort in the\nappropriate order with the bracket symbols around subranges.\n-----------------------------------------------------------------------\n\nThis is an initial attempt to provide support for this. We do this\nby first acknowledging that that both section ranges and linker tables\nneed common building blocks, and then granting the option to declare\neither a section range, or letting you customize this further\nwith a custom data structure. This at least addresses the conceptual\ndivision between section ranges and linker tables.\n\nNo section range support test case is provided here, although upstream\nthis would be used for the .kprobes.text.\n\nWe\u0027ll next need to try to demo an example with subsections.\n\n[0] http://lkml.kernel.org/r/56CCE9B6.4080000@zytor.com\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "39173728ea2d352032bdc8fc17b453afd6a8375b",
      "tree": "1a8880d15785874328bb26357bdfc3a80196d082",
      "parents": [
        "9443312e2eb6e82081cbcdd2e538c26229293223"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 17:26:14 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "arch/x86/kernel/vmlinux.lds.S: map other Linux sections\n\nThis is just in case our demo uses them, we place them\nin functional equivalents, given we never free or do\nsanity checking, which is one of the ways the refs are\nused for.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "9443312e2eb6e82081cbcdd2e538c26229293223",
      "tree": "a51858c4e35b71c51715138be68841ed49d50a42",
      "parents": [
        "4611e8b59449d66ba97359ec7ccc928584b2b02d"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 15:23:48 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "tables.h: remove postfix _TEXT for .text sectioned code\n\nThe _TEXT postfix is removed to since SECTION_INIT also\nimplicates .init.text -- stick the convention to default\nto .text unless otherwise noted.\n\nReferences for this decision:\n\nhttp://lkml.kernel.org/r/20160224005458.GK25240@wotan.suse.de\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "4611e8b59449d66ba97359ec7ccc928584b2b02d",
      "tree": "d874f589d22c108411b789f042eb8688d302196d",
      "parents": [
        "a947ec65eefb47fc5c9c58b83ceab734e0f6427e"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 15:16:54 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Jun 23 15:23:28 2016 -0700"
      },
      "message": "tables.h: make .text and .init.text const\n\nBe a bit more pedantic about *.text* based sections\nand mark them as read-only by using const.\n\nNote that this does not stuff further things into\n.rodata, we\u0027ve already done that, the section mapping\nfor Linux sections is a separate topic, and as far\nas this effort is concerned, its current goal is simply\nonly to use the exact same mappings it alread head.\nWe\u0027ll just be standardizing the maming scheme used\nto later help identify clearly what proper Linux section\na custom section belongs to, without having to modify\nthe custom linker script.\n\nIf we discover in the process of converting over custom\nsection code to linker tables that they deserve to be\nin a different section we\u0027ll do that as a separate step.\n\nIf one wants to inspect the kernel\u0027s .rodata, one\ncan look at include/asm-generic/vmlinux.lds.h\u0027s\ndefinition of RO_DATA_SECTION(align). Then also\nconsider these:\n\n   #define RODATA          RO_DATA_SECTION(4096)\n   #define RO_DATA(align)  RO_DATA_SECTION(align)\n\nAt least x86 uses RO_DATA(PAGE_SIZE). For documentation\ncompleteness note that .init.rodata is rolled into\nINIT_DATA as per include/asm-generic/vmlinux.lds.h, however\nfor this userspace demo we\u0027re pegging it into .rodata\nproper as userspace has no .init that we\u0027ll later free\nat run time.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "a947ec65eefb47fc5c9c58b83ceab734e0f6427e",
      "tree": "8f11bfafe192efa4a80c191cf7589e0304ec5a0c",
      "parents": [
        "fe9ece4516b565e7ba93a7cfa43b7ae932b78639"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Feb 16 10:06:05 2016 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 14:20:41 2016 -0700"
      },
      "message": "linker-table: add sections.h and port all code to v2 RFC linker table\n\nThis adds the sections.h file to allow easy association of\ncustom sections to standard ELF / Linux sections. It also\ngoes ahead and ports over all of the existing old .tbl\nlinker table code to the new linker table format. In order\nto do this, we try to keep the code to match as much as\npossible with the RFC v2 submission made [0]. Just for\nreferences, you can review the discussion of the RFC v1\nseries as well [1].\n\nOther relevant changes:\n\n* It drops documentation in favor of that being done upstream,\n  this removes the clutter while we just work on the proof\n  of concept code. If this gets upstream then we\u0027ll just sync\n  the tables.h from upstream to this tree. For now this is just\n  a bit of a pain in the ass in between submissions.\n\n* Extends pci.c with an example using LINKTABLE_FOR_EACH()\n  and also LINKTABLE_RUN_ALL().\n\n* Extends include/linux/kernel.h with things we need to make\n  tables.h compile in userspace -- these are things we don\u0027t need.\n\nExpected output:\n\n$./main\nInitializing x86 bare metal world\nNumber of init entries: 7\nInitializing kasan ...\nEarly init for Kasan...\nCompleted initializing kasan !\nInitializing memory ...\nCompleted initializing memory !\nInitializing pci ...\nPCI fixup size: 1\nDemo: Using LINKTABLE_FOR_EACH\nfoo_fixup\nDemo: Using LINKTABLE_RUN_ALL\nfoo_fixup\nCompleted initializing pci !\nInitializing beta ...\nCompleted initializing beta !\nInitializing alpha ...\nCompleted initializing alpha !\nInitializing acme ...\nCompleted initializing acme !\nBooting bare metal\nCalling start_kernel()...\nRunning setup_arch for kasan ...\nCalling setup_arch work for Kasan...\n\n$ ./main -x\nInitializing Xen guest\nNumber of init entries: 7\nInitializing memory ...\nCompleted initializing memory !\nInitializing pci ...\nPCI fixup size: 1\nDemo: Using LINKTABLE_FOR_EACH\nfoo_fixup\nDemo: Using LINKTABLE_RUN_ALL\nfoo_fixup\nCompleted initializing pci !\nInitializing xen_driver ...\nCompleted initializing xen_driver !\nBooting a Xen guest\nCalling start_kernel()..\n\n[0] http://lkml.kernel.org/r/1455889559-9428-1-git-send-email-mcgrof@kernel.org\n[1] http://1450217797-19295-1-git-send-email-mcgrof@do-not-panic.com\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "fe9ece4516b565e7ba93a7cfa43b7ae932b78639",
      "tree": "60d1086b38945ec4f28bd8c16d0abfa085bd44ab",
      "parents": [
        "8ca249a452add0756a588f94378ddc883d2b1352"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 12:56:06 2016 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed May 25 14:20:41 2016 -0700"
      },
      "message": "arch/x86/kernel/vmlinux.lds.S: allow preprocessor use on linker script\n\nWe want to grow arch/x86/kernel/vmlinux.lds.S with macros\nto allow us to standardize on ELF sections, and custom\nLinux sections. This lets us clearly associate custom\nELF sections we add to specific standard ELF / and\nstandard Linux sections.\n\nThe standardizaiton of the sections will be done later. After\nthis vmlinux.lds.S will #include \u003clinux/sections.h\u003e, but in\norder to support this we must ask gcc to preprocess the\nvmlinux.lds.S for us.\n\nAs is standard in the Linux kernel (in scripts/Makefile.build)\nthis also defines __ASSEMBLY__ LINKER_SCRIPT to allow us to\nifdef out code that we know will barf on asm code or the in\nour case, the linker script.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "8ca249a452add0756a588f94378ddc883d2b1352",
      "tree": "03700acb8c950bf2753cca453b796eb35e6665fe",
      "parents": [
        "ada95cd7527859574c16f73032e7e538ddfca40b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Feb 12 00:02:14 2016 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Feb 12 19:21:05 2016 -0800"
      },
      "message": "table.h/pci: add suggested style of linker tables and example\n\nBased on feedback here\u0027s a v2 style for linker tables with\nmore Linux coding style in mind. This goes with an example\nof how to use it.\n\nFor now we don\u0027t remove the old linker table solution.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "ada95cd7527859574c16f73032e7e538ddfca40b",
      "tree": "bc2df902e2a79852786242695cee597b1f3096c3",
      "parents": [
        "fd864c8e1ff8b83382ba8dd00b9e83102aee8b7f"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 19:46:15 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "sort-init.c: move to arch/x86/kernel/sort-init.c\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "fd864c8e1ff8b83382ba8dd00b9e83102aee8b7f",
      "tree": "d628d42d9167c4a713f3ad0d17e2963250bfb1d7",
      "parents": [
        "a4f36435e04fd213e35b6d097b3a4007b8df567f"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:55:17 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "custom.lds.S: rename to arch/x86/kernel/vmlinux.lds.S\n\nTo replicate what we\u0027d use upstream on Linux.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "a4f36435e04fd213e35b6d097b3a4007b8df567f",
      "tree": "d7ee14857e25889da9320d9452c191da494e971f",
      "parents": [
        "682f59a95a7bd91ec30fc63548e9a919bb20bded"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:52:20 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "synch.sh: Use to sync with Linux\n\nTo sync this tree to  your Linux tree just call this script\nfrom your Linux tree. At least init.c compiles now.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "682f59a95a7bd91ec30fc63548e9a919bb20bded",
      "tree": "af11629dbce4aac6a6dd8bbb51a75594aded6c34",
      "parents": [
        "c172012d455658f63de64e13a19358322609dfed"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:51:16 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "setup.h: add missing header\n\ninit.c now compiles as-is on Linux.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "c172012d455658f63de64e13a19358322609dfed",
      "tree": "ee07e650647315acba8280b2908ac84afec2b720",
      "parents": [
        "5ef72c4f471fc321d8383cfbacc4f81cbc8c9ea4"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:48:51 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init.c add missing header\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "5ef72c4f471fc321d8383cfbacc4f81cbc8c9ea4",
      "tree": "fee8decffc69c13afa5758842527d8ec188d6ac6",
      "parents": [
        "996d861e70cdaffed9c0d83348739d567736e566"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:47:26 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "bug.h: replicate upstream\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "996d861e70cdaffed9c0d83348739d567736e566",
      "tree": "4a1bd7c367b6aa5930fbabb12b160118f59bc2bc",
      "parents": [
        "b82c80104f210c8c4f9e20411707db6603d93c27"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:42:22 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "boot.h: move to asm\n\nThis is how it is upstream.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "b82c80104f210c8c4f9e20411707db6603d93c27",
      "tree": "4d7e0d0e2d9fab33a39fb955acc08c5372704e03",
      "parents": [
        "a61f105dd6d7885c87fa568b068e0fb8946e5a90"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:32:06 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "x86.c: move to arch/x86/kernel/head64.c\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "a61f105dd6d7885c87fa568b068e0fb8946e5a90",
      "tree": "022d7c9e11c4dba9fe4133077ec4947bb8488ade",
      "parents": [
        "74157f4c27a2d64bddf7ca30d04b58eed80909c7"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:29:21 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init.c: place as it would be upstream\n\nMakes it easier for copying over.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "74157f4c27a2d64bddf7ca30d04b58eed80909c7",
      "tree": "0da2198c89d396424eb31f6e07f1d2c70931b3a6",
      "parents": [
        "5311211ce3367039cc90a97053ed6c52c794e3e9"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 15:22:47 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "x86 init: make more x86 subsystem code more x86 specific\n\nThis should match the namespace used upstream.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "5311211ce3367039cc90a97053ed6c52c794e3e9",
      "tree": "831a2c85366e30492da746924244aed6d383f8e9",
      "parents": [
        "373e2ea4a0176319158d868617a98aa0fceb10b8"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 14:36:23 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "include: use Linux header paths\n\nAgain, another thing to make it easier to test / exchange code\nwith upstream as it evolves.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "373e2ea4a0176319158d868617a98aa0fceb10b8",
      "tree": "3e8bd1aa104458b5c064ad45051dc804dff6d862",
      "parents": [
        "e1ec5ade0a8cdb3e1adf2b4e33b4a4e112c529f5"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 14:24:40 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "kernel.h: add pr_info()\n\nThis will make it easier to place code from this\nmockup code upstream, and likewise to later update\nthis mockup project with upstream code.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "e1ec5ade0a8cdb3e1adf2b4e33b4a4e112c529f5",
      "tree": "cc8135e5ba6020175546e35e4b56f7162bd8b293",
      "parents": [
        "53f07160fd17b82d8ad39039f34c2bc2cc053e73"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 14:18:14 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init.h: rename to x86_init_fn.h\n\nThat\u0027s closer to what this should look like upstream.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "53f07160fd17b82d8ad39039f34c2bc2cc053e73",
      "tree": "8cd034d197d337bba173bd898c5196221338d3ea",
      "parents": [
        "ab54c0bfad7b8e26d1da06f09b50b875e3bebb2a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 13:48:23 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "table.h/init.h: make more x86 subsystem specific, simplify order level\n\nThe tables used within x86\u0027s init.h were still prone to\nerror if other subsystems were to use this. This makes it\nvery x86 specific. The next step is to pick a file name\nwe\u0027d actually use upstream.\n\nStick to only 3 basic levels for now:\n\nX86_INIT_ORDER_EARLY    10\nX86_INIT_ORDER_NORMAL   30\nX86_INIT_ORDER_LATE     50\n\nI cannot see why we\u0027d need so many levels, simple ordering through\nplacement on C files and the Makefile should suffice for most needs.\nThe order level should only really be of useful if you have problems\nto order code in C files or Makefiles.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "ab54c0bfad7b8e26d1da06f09b50b875e3bebb2a",
      "tree": "d3392c09775e55dd3adc7c075192ce55cdb19f5d",
      "parents": [
        "5c53f790011f5f3a22885e308fbc819d420d6d4c"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 13:28:41 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init.h: provide header guard\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "5c53f790011f5f3a22885e308fbc819d420d6d4c",
      "tree": "0995edbfbc7c4172946fa47cc48a2dda5ae70958",
      "parents": [
        "bd1e24bbe0dc8b4a4bb481e3bf100fc0929866d8"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Dec 04 13:22:47 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "custom.lds.S, tables.h: make tables subsystem specific\n\nThe custom.lds.S was still working with a generic table,\nupdate that to make it clear how one can work with different\nsubsystems. This deviates from gPXE\u0027s own solution slightly\nin that each table needs to be declared separately. That\nworks better for Linux given we\u0027re combining the IOMMU init\nsolution as well which has its own sorting options with\nmemmove(). It also works better for Linux given the size\nof Linux and how an issue on one subsystem could affect\nothers. We want to compartamentalize each table solution\nseparateley.\n\nWhile at it, revamp tables.h with our own Linux documentation.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "bd1e24bbe0dc8b4a4bb481e3bf100fc0929866d8",
      "tree": "44d039b321706e2839c4e0214ce670ac02aef24f",
      "parents": [
        "970eb21ffaf32ce0746cae5e79b6dd0d8b632f8c"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Dec 03 17:58:47 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "README: mark as completed\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "970eb21ffaf32ce0746cae5e79b6dd0d8b632f8c",
      "tree": "402fd95439bd656b5e23ba64726e21a854368833",
      "parents": [
        "c8bd0c021c80cf83fe7456b5c36a669f449995dd"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Dec 03 17:22:54 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "pci/driver: fix order level\n\nThe PCI order level was normal, while the driver was early.\nThe new order level checker picks this up, fix this.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "c8bd0c021c80cf83fe7456b5c36a669f449995dd",
      "tree": "89a558d57c878cd7b4a32ae7bb1d313689d8673e",
      "parents": [
        "6ff75301d29a81381a0cbc1770fabb20bd9b5e4f"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Dec 03 16:14:16 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init: use macros for init declarations and validate order level\n\nExpanding on our effort to defining strong semantics lets be a bit\nmore pedantic over the order level, what gpxe calls the table\nsub-index.\n\nThe ordering part of the section name can\u0027t be used on C code yet\nto validate that a subordinate init routine order level unless has a\nless order level. To help with this add macros to enable setting the\norder level, also add an order level as part of the init sequence to\nenable sanity checking of the order level at run time.\n\nThis also enables semantic parsers to be used to vet for sorting\nsemantics on order level at build time, reduces overal code,\nand also makes it easier to modify the use of annotation as needed\nwithout affecting users.\n\nWith this we get this error:\n\n./main\nInitializing x86 bare metal world\nINVALID ORDER LEVEL! acme should have an order level \u003c\u003d be called before pci!\nNumber of init entries: 7\nInitializing kasan ...\nEarly init for Kasan...\nCompleted initializing kasan !\nInitializing memory ...\nCompleted initializing memory !\nInitializing beta ...\nCompleted initializing beta !\nInitializing alpha ...\nCompleted initializing alpha !\nInitializing pci ...\nCompleted initializing pci !\nInitializing acme ...\nCompleted initializing acme !\nBooting bare metal\nCalling start_kernel()...\nRunning setup_arch for kasan ...\nCalling setup_arch work for Kasan...\n\nNext we\u0027ll fix this.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "6ff75301d29a81381a0cbc1770fabb20bd9b5e4f",
      "tree": "d19a8bbe7870919f5d56b0e2e107824b99d15f21",
      "parents": [
        "e8036fd259991a930c70c8e495149bfe23a00eb3"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Dec 02 10:46:33 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init: define strong semantics\n\nThe x86 init path is critical, if anything fails in it things can\ngo wrong fast. To avoid issues since we are defining a small framework\nfor how to run routines, in what order, dependencies, and required\nwork, we need to define very strongs semantics. We start off with\ndefining semantics through documentation by considering all possible\ncombinations of uses of the init table framework.\n\nWhile at it, rename init_fn to x86_init_fn to reflect how this is\nspecific to x86. This means the sorting routine is specific to x86\nas well, as is all other calls. This is intentional, we are customizing\nthe table work for our own needs on x86.\n\nFirst a clarification of the x86 boot sequence:\n\n Bare metal, KVM, Xen HVM                      Xen PV / dom0\n       startup_64()                             startup_xen()\n              \\                                     /\n      x86_64_start_kernel()                 xen_start_kernel()\n                           \\               /\n                      x86_64_start_reservations()\n                                   |\n                              start_kernel()\n                              [   ...        ]\n                              [ setup_arch() ]\n                              [   ...        ]\n                                  init\n\nA few highlights of pedantic semantic changes worth highlighting:\n\n  * We are meshing the gpxe and IOMMU specialized init solutions,\n    the gpxe solution works with a linker sort, the IOMMU init\n    solution has its own C sorter which memmove()\u0027s routines\n    around, this not only uses the \"depends\" callback for sorting\n    purposes but also uses memmove() routines around depending on\n    sorting heuristics. This makes sorting specific to the subsystem\n    init structures, and semantics defined.\n\n    Two possible paths we need to pick from this:\n\n  a)  We can make a generic library sort routine, which takes as input\n      only the subsystem specific table init first entry and last\n      entry. Doing this generalizes the sorting algorithm but\n      imposes a common shared set of semantics or -- imposes more\n      requirements on our sorting routines to take more input, which\n      would not only enable understanding sematnics but also the size\n      of the structure as memmove() is used to shuffle things around.\n\n  b)  We just keep sorting routines specific to each subsystem. In this\n      x86 mockup we go with this solution.\n\n    Since I\u0027ve opted to go with option b) I modified the sort routines,\n    the linker script to use subsystem specific table start and end\n    points.\n\n  * Clarified the semantic gap caused by current hypervisors between\n    x86 Linux entry point and pv_ops and how subarchitecture fills\n    the gap. Refer to init.h for details.\n\n  * Clarified order level use:\n\n    - Clarified that when considering two init sequences with the same\n      order level the next thing which considers order is placement\n      on the C file and next Makefile. Note that SORT() is still used by the\n      linker but the sort is specific to the order subsystem specific\n      structures alone and the function names play no role in sortin. Refer to\n      custom.lds.S -- *(SORT(.tbl.init_fns.*)) is used. The name of the struct\n      is not considered for sorting. For instance:\n\n\t$ readelf -S kasan.o| grep tbl\n\t  [ 8] .tbl.init_fns.01  PROGBITS         0000000000000000  000000a0\n\t  [ 9] .rela.tbl.init_fn RELA             0000000000000000  00000f00\n\n      The sort here is going to be performed on the .tbl.init_fns.*, the\n      order level attributes.\n\n    - The 2 digit order level is used to help sort init routines\n      by batched levels. Since an init sequence can also depend on\n      another init sequence the order level of the subordinate\n      init sequence must be less than or equal to the init sequence it\n      depends on.\n\n      Since the ordering is part of the section name we can\u0027t use it on\n      C code to validate that the subordinate order level unless we use\n      macros to enable setting the order level, and as part of that a\n      new member part of the init sequence. Coccinelle cannot use\n      C annotations, its just not part of the abstract syntax tree in\n      Coccinelle, as such we can\u0027t easily get access to them for validation,\n      however Coccinelle does understand macro declarations\n      (ie, DEFINE_MUTEX(), through declarer name DEFINE_MUTEX;) so another\n      prospect to enforce proper order level could be to annotate order\n      level with a respective macro declarations and an SmPL rule for\n      validation.\n\n      We can accomplish only similar enforcement checking at run time\n      by pegging the order level as part of the init structure.\n\n      Changes will be made next to define and use macros to enable declarations\n      of x86 init sequences. This will enables semantic parsers to be used to\n      vet for sorting semantics on order level, reduces code, and also makes\n      it easier to modify the use of annotation as needed without affecting\n      users.\n\n  * IOMMU init framework uses an int for the return type for the\n    detect and depends callback. This seems error-prone, I\u0027ve\n    changd this to simply be of return type bool.\n\n  * Although using an int return type for early_init() and late_init()\n    might seem appealing its not what we use for the Linux x86 init\n    boot code, all code is critical and cannot fail. As such I\u0027ve removed\n    the critical declaration option from the struct x86_init_fn -- to\n    match Linux. In the future though, this commit could be referenced\n    for example code if one wanted to add routines which could\n    optionally fail, and still allow strong semantics for dependencies\n    between init sequences.\n\n  * If an init sequence has X86_SUBARCH_XEN only it must mean\n    mean then only that the early_init() callback would be run on\n    Xen HVM currently. Note that this would mean that the calls are made\n    right before x86_64_start_reservations(). As it stands typically you\n    would put this sort of routine within the xen_start_kernel() work\n    flow, this not only enables us to define xen early init calls but also\n    ultimatley would enable us to fold the two separate x86 entry points as\n    one if we so desired.\n\n  * use u32 for x86_init_fn flags, document what they are.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "e8036fd259991a930c70c8e495149bfe23a00eb3",
      "tree": "08b82939f628daa8a68fab89d95cf8d814898c76",
      "parents": [
        "5f1fb82afba714f0a9ef2c36ffce332d9fe0b46a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Nov 25 15:01:24 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init: add supp_hardware_subarch feature detection\n\nA typical issue when introducing new x86 features that require\nearly init code modifications is not handling the different\nx86 supported subarchitectures. Code review typically addresses\nthis, but regressions are known to have escaped code review, one\nexample is cr4 shadow setup [0] which on Xen caused crashes,\nanother more current was kasan [1], this later one is still known\nto be broken for Xen and will crash Xen on bootup when enabled.\n\nA typical knee-jerk reaction to this problem is to simply disable\nthe feature through Kconfig when certain conflicting subarchitectures\nare compiled in, this however restricts the kernel binary. To address\nthis at run time we can require feature subarchitecture capabilities\nannotated. By requiring these annotations we can avoid redundant\ncode checks that would otherwise have handled incompatibitlies in\ndifferent code segements for a feature, but more importantly this\nalso forces clear developer awareness over required subarchitecture\nconsideations upon development. As with the asm-generic solutions which\nenable generic architecture feature code to advance without requiring\nall architectures to implement required components, we enable x86\nfeatures to advance as different subarchitectures are supported.\n\nA subarch feature detection mechanism also allows us to clean up\nthe feature depends() callback through the IOMMU init development\nsolution considerably.\n\n[0] 5054daa285bea (\"x86/xen: Initialize cr4 shadow for 64-bit PV(H) guests\")\n[1] https://lkml.kernel.org/r/CAB\u003dNE6Xs5fepzNtymzT4CueeJZ0KMPETpda114DpL4eMtDswtw@mail.gmail.com\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "5f1fb82afba714f0a9ef2c36ffce332d9fe0b46a",
      "tree": "4ae3d2a76d8ba75186ac3950c14e1d2d9a4cc66e",
      "parents": [
        "64ed66e070ce4e41241d7d6cf33a50b462314434"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Nov 27 11:00:50 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init: enable support for no depends() callback\n\nThe Linux kernel\u0027s IOMMU init table framework requires\na depends() callback to check if your feature is detected\nor needed. Since the GPXE init solution works with a linker\nscript to help you sort the init routines by levels we don\u0027t\nneed to require a depends callback for all init routines,\nif they don\u0027t have one we skip re-sorting them based on\nthis heuristic.\n\nThis will be more useful as we also add support later for\nsubarchitecture dependency semantics, which we\u0027ll do next.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "64ed66e070ce4e41241d7d6cf33a50b462314434",
      "tree": "da793aa6daf9f7697879da64caf6ee3d745d3f65",
      "parents": [
        "1f2eff80831c75fca729c82c62fc62a72685437b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Nov 27 10:57:34 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "kernel: add BIT() and WARN_ON()\n\nThese will be used later.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "1f2eff80831c75fca729c82c62fc62a72685437b",
      "tree": "54a2e74634e78193313546fc1e82520ff3105a6d",
      "parents": [
        "cdfd941f3ae55e14988c0f7b1a76ad9545f34ad2"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Nov 24 17:21:27 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "kasan: replicate x86 xen failure\n\nKasan does not work on Xen right now. It does work on bare metal\nand kvm though. The reason for this is it does not have the same\nsetup work as done on early init for x86, as x86\u0027s bare metal early\ninit. It needs some work.\n\nAdditionally, you currently cannot disable kasan at run time and even\nif you could we wouldn\u0027t know that Xen was the reason why this would\nbe failing. We have no way to annotate this at run time on bootup\nfor users or even developers. We\u0027d want to annotate this to create\ndeveloper awareness over the requirements of such features which\nrequire mucking with different init entries and to prevent code which\nshould be dead from running.\n\nThe work we\u0027ll do next will transform kasan to the use the table\ninit work, we\u0027ll also make use of the existing boot protocol subarch work\nadded through x86 boot protocol 2.08, and add capability support to\nthe init tables to be able to annotate when a general x86 feature\ncurrenly lacks support for a boot run time environment, identified\nthrough the subarch.\n\nCurrent simulation which shows sucess on x86 and a replicated\nissue when booting xen:\n\nBare metal simulation:\n\nmcgrof@ergon ~/devel/table-init (git::master)$ ./main\nInitializing x86 bare metal world\nNumber of init entries: 4\nInitializing Memory ...\nCompleted initializing Memory !\nInitializing PCI buses ...\nCompleted initializing PCI buses !\nInitializing ACME(TM) Driver ...\nCompleted initializing ACME(TM) Driver !\nEarly init for Kasan...\nBooting bare metal\nCalling start_kernel()...\nCalling setup_arch work for Kasan...\n\nXen simulation:\n\nmcgrof@ergon ~/devel/table-init (git::master)$ ./main -x\nNumber of init entries: 4\nInitializing Memory ...\nCompleted initializing Memory !\nInitializing PCI buses ...\nCompleted initializing PCI buses !\nInitializing ACME(TM) Driver ...\nCompleted initializing ACME(TM) Driver !\nInitializing Xen Driver ...\nCompleted initializing Xen Driver !\nInitializing Xen guest\nBooting a Xen guest\nCalling start_kernel()...\nKasan was not set up...\n----------------------------------------------------------\nBUG on kasan_init at kasan.c: 24\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "cdfd941f3ae55e14988c0f7b1a76ad9545f34ad2",
      "tree": "ca6626167ecca5931ae0a860fac433821ec70dcc",
      "parents": [
        "dfa4e87aa14f6d56278cfd141120678d69612d90"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Nov 23 14:48:50 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "Fix PCI\n\nNow that we\u0027re done with the demo over how an init section\ndepends on another let\u0027s \"fix\" the PCI code to let us move\non with what we want to further demo out of this init work.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "dfa4e87aa14f6d56278cfd141120678d69612d90",
      "tree": "3938b881878238b16b7312d97389350fdcbf82f4",
      "parents": [
        "947f574c68c58db48b67d9418c5f38c049ad1db2"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Nov 23 14:46:32 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "pci: make critical\n\nWithout this even though ACME depends on PCI and\nPCI is currently set up to fail, the ACME init routine\ncontinues to be called:\n\nInitializing x86 bare metal world\nNumber of init entries: 4\nInitializing Memory ...\nCompleted initializing Memory !\nInitializing PCI buses ...\nFailed to initialize PCI buses on early init, but its not critical\nInitializing ACME(TM) Driver ...\nCompleted initializing ACME(TM) Driver !\nEarly init for Kasan...\nBooting bare metal\nCalling start_kernel()...\nCalling setup_arch work for Kasan...\n\nBy setting PCI to be critical we won\u0027t traverse on\nto ACME\u0027s init as it depends on PCI. Technically in\nthe kernel we don\u0027t have things like this affect\nboot init, this is just an example / demo of how an\ninit sequence can depend on another, and how to do\nthis.\n\nInitializing x86 bare metal world\nNumber of init entries: 4\nInitializing Memory ...\nCompleted initializing Memory !\nInitializing PCI buses ...\nFailed to initialize PCI buses on early init\nEarly init failed\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "947f574c68c58db48b67d9418c5f38c049ad1db2",
      "tree": "7dca48b5339127acd1cee2228785f1912bfea20c",
      "parents": [
        "661324b65e4251fd19d7585953fc480aecfe3b52"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Nov 17 16:36:49 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "parse-bzimage: print kernel version string\n\nPrint the kernel version string.\n\nScreenshot:\n\nmcgrof@ergon ~/devel/table-init (git::master)$ ./parse-bzimage\n~mcgrof/linux/arch/x86/boot/bzImage\nkernel: /home/mcgrof/linux/arch/x86/boot/bzImage\nkernel size:    5668224 bytes\nGoing to parse kernel...\n\n-------------------------------------------------\nKernel version: 4.4.0-rc1-1-default+ (mcgrof@ergon.do-not-panic.com) #215 SMP PREEMPT Tue Nov 17 15:48:54 PST 2015\n-------------------------------------------------\nXen Expects:    0x53726448\nQemu Expects:   0x53726448\nOn image:       0x53726448\n\nbzImage protocol Version: v2.13\nXen hdr-\u003eversion:       525\nQemu protocol:          525\nQemu VERSION(2,8):      520\n\n-------------------------------------------------\nBoot protocol 2.07:     0x0207  (supports hardware_subarch)\nBoot protocol 2.08:     0x0208\nBoot protocol 2.09:     0x0209\nBoot protocol 2.10:     0x020a\nBoot protocol 2.11:     0x020b\nBoot protocol 2.12:     0x020c\nBoot protocol 2.13:     0x020d\n\nMember                                  Offset  Expected        Match\n-------------------------------------------------------------------------\nsetup_header-\u003eloadflags                 0x0211  0x0211          YES\nsetup_header-\u003ehardware_subarch          0x023c\nsetup_header-\u003ehardware_subarch_data     0x0240\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "661324b65e4251fd19d7585953fc480aecfe3b52",
      "tree": "72444f85182ba83cabf8e7bee1226cbecf530944",
      "parents": [
        "222b33f87da9b337141b0b2d0d02dfa7844746a8"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Mon Nov 16 17:10:04 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "Makefile: fix parse-bzimage target\n\nRemove the -c, that was a typo.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "222b33f87da9b337141b0b2d0d02dfa7844746a8",
      "tree": "d8769a6c305e45ef9853c433a4a839b5c8521fc5",
      "parents": [
        "34589e4fec1f341474777e22862f512f8b287382"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Nov 13 16:35:12 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "parse-bzimage: add bzimage parser\n\nPrior to booting Linux qemu / xen / grub2 needs to parse\nthe bzimage, they also then re-use some of the same to set\nthe 0 page (on 32-bit, on 64-bit this can be anywhere) for\nXen HVM and KVM.\n\nThis code is added to aid evaluaton of making changes on\nqemu / xen / grub / native kvm tool, etc. I at least have\npatches ready now for:\n\n  * qemu - supports kvm and Xen HVM\n  * native kvm tool\n\nI\u0027m still evaluating Xen\u0027s requirements for PV and PVH, this\nis a bit complex due to the requirements of having a custom\nboot loader use when one doesn\u0027t want to specify the kernel\nand initrd manually. For that see:\n\nhttp://wiki.xenproject.org/wiki/PvGrub2\nhttp://xenbits.xen.org/docs/unstable/misc/x86-xenpv-bootloader.html\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "34589e4fec1f341474777e22862f512f8b287382",
      "tree": "38b0702194b413592d00c21a55b2e6c8aad4cd86",
      "parents": [
        "90400e43eb107f125b2234240f80c60e0e0ae0dd"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Nov 13 16:25:43 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init: start using hardware_subarch as an example\n\nThis starts to make use of the hardware_subarch from the\nboot_params, available as of the 2.07 x86 boot protocol\nto illustrate how it can be used on early init.\n\nX86_FEATURE_HYPERVISOR cannot be used before setup_arch()\nas its only available after early_cpu_init(), we want\nsomething that will available as early as the kernel\nboots. X86_FEATURE_HYPERVISOR is also very generic.\n\nThe hardware_subarch has been used for other x86 subarchs\nand at least for 32-bit there is already even a switch for\nit on i386_start_kernel().\n\nWe keep this code in place for now as we are evaluating\nthe use complexities of settings this value for the different\nboot loaders: xen / qemu / grub2, etc. We also want something\nthat will be actually be useful for not only xen but also kvm,\nso further evaluation of possible dead code for kvm is also\nbeind done.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "90400e43eb107f125b2234240f80c60e0e0ae0dd",
      "tree": "b5cfe8937a644f95c55963ca8180640d9aaea74a",
      "parents": [
        "448e7177faf7cb19fb45157360d463d6195e8868"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Nov 05 11:16:47 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "kasan: mimic the kernel\u0027s setup\n\nKasan has 2 tier calls, an early init call followed by\na setup_arch() specific call. Our work will be to find\na solution that fits using the tables.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "448e7177faf7cb19fb45157360d463d6195e8868",
      "tree": "6e5e378e6bf521819a1d3ff7fc34732d80603380",
      "parents": [
        "6eb8ad329fdf4e857944ae44e8199c3731bb4570"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Nov 05 10:52:44 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "init: add a setup_arch() callback\n\nThis now mimics the 3 different C level init\nentry points that a kernel feature might use.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "6eb8ad329fdf4e857944ae44e8199c3731bb4570",
      "tree": "b95517dd64d4c9ec0461c1eff81782563222d029",
      "parents": [
        "936f38a641128292ffdc09007747a318eda82d5a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Nov 04 18:26:19 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "make x86 code stand out\n\nThis lets us split up the init stuff out\nreplicating the kernel\u0027s own init sequence.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "936f38a641128292ffdc09007747a318eda82d5a",
      "tree": "9d16e75e42e20907de39bc20a7f6e528845bf127",
      "parents": [
        "2868bd2dbbedaffaf1c4a8295e36471343d4daec"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Nov 04 16:50:23 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "Use startup_64() similar to the kernel\u0027s start sequence\n\nWe\u0027ll expand on this a bit to make it similar to the\nkernel\u0027s situation. We\u0027ll ignore architecture stuff\nthough and put everything into main that would otherwise\nbe arch specific.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "2868bd2dbbedaffaf1c4a8295e36471343d4daec",
      "tree": "c0d5387046f32650c298eda15a29a7521db37d1a",
      "parents": [
        "9d456ed2e700c496903636a4ea9729f05415a208"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Wed Nov 04 11:10:47 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "xen: use startup_xen() for init\n\nMimic Linux code for xen init. This is the entry point used\nfrom handoff by the Xen Hypervisor. The way the hypervisor\nfinds finds the entry point is by inspecting the Linux binary,\nlookng for the XEN_ELFNOTE_ENTRY elf note and using that.\n\nFor bare metal and lguest the entry points are different, and\nwe\u0027ll mimic that next.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "9d456ed2e700c496903636a4ea9729f05415a208",
      "tree": "aa34c36ecfc9abbe1ffbbe24d6f98e482932d881",
      "parents": [
        "55ab917ac44c55f8d83c49ebd66f1d86261e4aed"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Nov 03 12:06:42 2015 -0800"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "custom.lds.S: use SORT() instead of SORT_BY_INIT_PRIORITY()\n\nSORT_BY_INIT_PRIORITY() was added with the goal of meshing\n.ctor .dtor into .init_array and .fini_array respectively. This\nwas done to avoid the need for the associated (relative) relocations,\nand avoids backwards disk seek on startup (since while .ctors are\nprocessed backwards, .init_array is processed forward) [0] [1].\nThis later aspect of this change is considered a performance gain\nfor C++ applications such as Mozilla or Google Chrome. There are\na series of compatibility requirements in place to help sort out old\nexpected constructor section priority annotations, this is all\nnow moved onto .init_array. The SORT_BY_INIT_PRIORITY() is very\nspecific to .init_array sections though, so you\u0027ll need to use\n__attribute__ ((section (\".init_array.65530\"))) for instance.\nWe want the freedom to use custom sections, but in principle\nalso sort numerically. We don\u0027t have support for that yet and even\nif we did this would require binutils \u003e\u003d 2.22. As per the kernel\u0027s\ndocumentation [2] the current minimum requirements for binutils\nis 2.12.\n\nThe only reason why SORT_BY_INIT_PRIORITY() *works* is the\nimplementation resorts back to SORT_BY_NAME() in the case that\nthe detected priority for both sections it is comparing is 0,\nwhich will be the case for any section that uses\nSORT_BY_INIT_PRIORITY() if it is not prefixed by \".init_array.\",\n\".fini_array.\", \".ctors.\", or \".dtors.\". For more details refer\nto the implementation of get_init_priority() in binutils\nld/ldlang.c.\n\nThe old SORT() could still be used with its own numeric section by\njust using your own macros to specify the priority numerically, even\nthough it will sort in ascending order by name. I\u0027ll note that\nSORT() is just an alias for SORT_BY_NAME(), this is really the\nimplementation we\u0027d be relying on.\n\nAs far as SORT() / SORT_BY_NAME() is concerned -- the only concern\nI can come up with after reading the implementation details of\nSORT_BY_INIT_PRIORITY(), even though we won\u0027t use it, is that\nthere are no precise semantics gauranteeing sort order accross\ndifferent object files: *technically* the support is there and\nthis works but as far as I can tell these gaurantees are not\nclearly documented formally as part of binutils.\n\nNote that although SORT_BY_INIT_PRIORITY() was designed\nspecifically for init_array stuff, I noted that it still\nresorts to SORT_BY_NAME() as a backup for non init_array\nsection names, and this is what we want. So if we really\nwanted to annotate we want SORT_BY_INIT_PRIORITY() style\nof behaviour to enforce a numeric priority identity\nin future binutils releases we *could* in theory just\nuse SORT_BY_INIT_PRIORITY() to annotate all this and the\ndesire to have this in future binutils *but* not only would\nthis likely require a separate macro that is not specific\nto init, perhaps SORT_BY_PRIORITY(), but also bumping the\nbinutils minimum requirements from 2.12 to 2.12 or later\nif we want a generic new SORT_BY_PRIORITY().\n\nSo -- for now just use SORT_BY_NAME().\n\n[0] https://gcc.gnu.org/ml/gcc/2010-12/msg00344.html\n[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id\u003d46770\n[2] Documentation/Changes as of linux-next next-20151012\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "55ab917ac44c55f8d83c49ebd66f1d86261e4aed",
      "tree": "89058a9763dc636b1cf5ea3660ea909a93984bf0",
      "parents": [
        "7be2de17daac1cad9b03fcf1e309be483fc0ccf5"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Oct 29 20:45:09 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "kasan: use -EOPNOTSUPP on xen\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "7be2de17daac1cad9b03fcf1e309be483fc0ccf5",
      "tree": "de7e80ecffc0f9d0c8a08c1ecb628b0c11bda658",
      "parents": [
        "4592db832826aa309534241259e7be0184d39d47"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Oct 29 05:34:02 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "annotate we can replace booting_xen() later\n\nWe can can later repurpose a xen init structure call for white-listing\nbare metal specific code.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "4592db832826aa309534241259e7be0184d39d47",
      "tree": "23e5057162dc49dcfea3566af07280d51318b78f",
      "parents": [
        "f4f49e1679169e5383762e36958fbd1a67718b8d"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Oct 29 05:14:06 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "add simple xen simulation framework\n\nTo simulate booting xen just pass any parameter to main, for instance;\n\n./main -x\n\nRight now this fails as there is no kasan set up developed yet for Xen.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "f4f49e1679169e5383762e36958fbd1a67718b8d",
      "tree": "93aec12df47309e30aa851ebd1950bb757a2aa83",
      "parents": [
        "b39b22f30d308f76554f00a7af57fbb417ce299f"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Oct 29 04:12:37 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "Makefile: move objects into a variable\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "b39b22f30d308f76554f00a7af57fbb417ce299f",
      "tree": "3d30cdb826b2cb8ac42eadc20377e6c9c283997d",
      "parents": [
        "bf6dd2c17d46650bc8b6977b6565a9d8dbd32e43"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Oct 27 19:41:58 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "rename custom.lds to custom.lds.S\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "bf6dd2c17d46650bc8b6977b6565a9d8dbd32e43",
      "tree": "b21a28eb434bac10b39ba2ef76a1c9d95eed1f78",
      "parents": [
        "aec8258fe48938840accf276e315e542f881ade7"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Oct 27 19:41:00 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "add .gitignore\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "aec8258fe48938840accf276e315e542f881ade7",
      "tree": "9478ab4441eb4116eb11c42787f00f46960b4853",
      "parents": [
        "f12fd4640d7fe0d1de9ab5d7e1969b67f10be11b"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Oct 27 00:27:20 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "rename foo.c to kasan.c\n\npretend this is kasan stuff.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "f12fd4640d7fe0d1de9ab5d7e1969b67f10be11b",
      "tree": "49c7232b05323ed85b59d8f6efa7c814ef3a597a",
      "parents": [
        "fd898e6884668e774331ddb89edf713baa36a93a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Tue Oct 27 00:23:29 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "sort-init.c: add\n\nForgot to add this.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "fd898e6884668e774331ddb89edf713baa36a93a",
      "tree": "996a4dcc58adc5bcc5a4c2ae1b98f7fe1a48dee9",
      "parents": [
        "0d6a896dd1dcf247d1ffe0afbf63413c0dcfe1ed"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Sat Oct 24 13:41:08 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "add pci\n\nForgot to add this to the tree. Note that if\nwe make PCI critical, since its failing right\nnow we end up with:\n\nCompleted initializing Foo thing !\nInitializing PCI buses ...\nEarly init failed\n\nSo all of init fails. If we remove the critical\nannotation we get:\n\nInitializing PCI buses ...\nFailed to initialize PCI buses on early init, but its not critical\nInitializing ACME(TM) Driver ...\nCompleted initializing ACME(TM) Driver !\n\nWe want to add support for ACME driver to be able to\nannotate it depends on PCI subsystem for this simple\nexample case but to let the init sequence go on.\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    },
    {
      "commit": "0d6a896dd1dcf247d1ffe0afbf63413c0dcfe1ed",
      "tree": "20d0152dbb56eb9161936474e2fda546a0a3f074",
      "parents": [
        "913b302df46de245c79801f0910f7f9d809d6e0a"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Oct 23 21:32:34 2015 -0700"
      },
      "committer": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Thu Feb 11 08:42:16 2016 -0800"
      },
      "message": "make the driver depend on pci\n\nWhat does not work is if pci fails we should not move on with\nPCI drivers, we can try to fix that next. What this should mean is\nthat if an init sequence has a \"depends\" and if its marked as\ncritical then it cannot allow things that depend on it to\ncontinue. Right now if an init sequence is listed as critical\nwe\u0027ll fail the entire init sequence right then where it failed,\nwe want to enable a middle ground, in such a way to be express\nthat one should not let things that depend move forward unless\nit continued successfully.\n\nNote that in this case the driver had a higher init priority\nthough originally:\n\ndriver: INIT_EARLY\npci: INIT_NORMAL\n\n #define INIT_EARLY      01\n #define INIT_SERIAL     02\n #define INIT_CONSOLE    03\n #define INIT_NORMAL     04\n\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\n"
    }
  ],
  "next": "913b302df46de245c79801f0910f7f9d809d6e0a"
}
