)]}'
{
  "log": [
    {
      "commit": "51daf25d90adca76375e0d141c93d692ab2cd2eb",
      "tree": "6784b8f4a4c5facdc345ef1d47e0946a6267e74a",
      "parents": [
        "b41b548058101e663a9591beaf2c491a44638d56"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 18 23:18:43 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 22:29:11 2024 +0000"
      },
      "message": "treewide: documentation on exported functions should start with their name\n\nChange-Id: Iea3e929bed743d7edfbf5b54bbaa31796aeaaadd\nReviewed-on: https://review.monogon.dev/c/monogon/+/3027\nVouch-Run-CI: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "0cf8944e8539a575ce280d70d54bf4ecf16b8228",
      "tree": "31a87285fcdbc782a00a8378ae3208f701106c86",
      "parents": [
        "e1acfe37a1249543b9b3180d602db79539468696"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 18 23:05:03 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 22:29:11 2024 +0000"
      },
      "message": "treewide: remove redundant returns\n\nChange-Id: I15f3f94273ffbb199dd47d7869de56196e1f4bd1\nReviewed-on: https://review.monogon.dev/c/monogon/+/3012\nVouch-Run-CI: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "06c1964cf46749e7942b4eedec82a885db089c3e",
      "tree": "e0d7ff2894b8b414c1702542f308bd2aa3add776",
      "parents": [
        "6250705e0fb83cc9c92a50b3a87f95d7089effee"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 15:07:40 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 14:16:25 2024 +0000"
      },
      "message": "treewide: compare syscall.Errno directly instead of interface type\n\nChange-Id: I03eba72177113cf40afc38981c5311a8013855f9\nReviewed-on: https://review.monogon.dev/c/monogon/+/3042\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d5f851bb477638436826adec756fe562db526865",
      "tree": "d981b1c62d613b45fb55023da289098d7e377705",
      "parents": [
        "69fec522d5db79d07bb1f227c2ab39c57fdf2831"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 14:59:37 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 13:15:14 2024 +0000"
      },
      "message": "treewide: replace error comparisons and assertions with errors.Is\n\nChange-Id: Id2424eb155f2c6842c72c5fafd124d428ef901f2\nReviewed-on: https://review.monogon.dev/c/monogon/+/2994\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "5e460a92353ec619f4f12fffbe3281d40c85cf61",
      "tree": "193a72608c05ad45f3a60a4ac84a8f5d731d7f73",
      "parents": [
        "438ae2e52cb0aa8dea021419d921c687330e7d3b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:33:09 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:19:50 2024 +0000"
      },
      "message": "treewide: remove unnecessary types and conversions\n\nChange-Id: Ifcaa9ceeec243b3646c9b6e0a6fad7ef2db8fd90\nReviewed-on: https://review.monogon.dev/c/monogon/+/2954\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "6c45434189e387b234109b68b1ed5a8f2cd5b439",
      "tree": "4cff8bb2fac00df28699559256ce7649b38877e1",
      "parents": [
        "46bf7d6c6437dfbf9dcc1e1d7d80fcc1c601f9b5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:23:38 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:44:46 2023 +0000"
      },
      "message": "m/node: build Linux with modules\n\nThis introduces modules into our Linux build. I originally didn\u0027t want\nto do this, this is why this wasn\u0027t done until now. But various things\nin the kernel weren\u0027t set up for this, for example the AMD and Intel KVM\nmodules cannot both be loaded, only the first one loaded works. Also,\nthe Linux kernel cannot load firmware for built-in modules reliably as\nthe filesystem it tries to load it from is not always mounted first,\neven if the kernel itself mounts it.\n\nThe firmware issue was brought up multiple times on LKML, but Linus is\nof the opinion that the firmware should be next to the kernel module,\nthus either built-in (not viable for licensing and size reasons) or the\nmodules need to be loadable and on the same filesystem as the firmware.\n\nThus unless we want to carry signifcant patches against the Kernel in a\ndeadlock-prone area, we are forced to adopt a design with loadable\nmodules (or ship everything twice in an initramfs which is also not\ndesirable).\n\nThe kernel config currently only has the modules as non-builtin which\nrequire firmware, everything else has been left as-is. For boot-time\nperformance it would eventually be a good idea to move to a setup with\nmore modules once we\u0027re confident in the implementation and everything\ncan deal with late-loaded modules/devices.\n\nAs a drive-by fix this also moves the kernel builds to out-of-tree so\nthat we no longer pollute the source folder. Bazel protected us from\nserious issues due to this, but it\u0027s still bad practice.\n\nChange-Id: Iced8e12234565e5b7447e732716651e05e67d55b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1791\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c7b036bca213962a7e60f3edb47624606799d074",
      "tree": "f0385f1ff6fe9a9fe41f62f32c0079006a1c5038",
      "parents": [
        "5832cd92957a6933c0fd644496d957ea2d8ef36d"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:23:57 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:44:46 2023 +0000"
      },
      "message": "m/p/kmod: init\n\nThis adds a package for working with Linux kernel loadable modules in\nGo. It contains syscall wrappers for loading and unloading modules, a\nmetadata format for fast lookup of modules handling devices using a\ncustom radix tree, parsers for module info metadata and various utility\nfunctions and data structures.\n\nA significant amount of the code in here has no formal spec and is\nwritten against behavior and information extracted from the reference\nkmod code as well as the Linux kernel itself.\n\nChange-Id: I3d527f3631f4dd1832b9cfba2d50aeb03a2b88a8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1789\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    }
  ]
}
