)]}'
{
  "log": [
    {
      "commit": "e7a66a564e42fab8bfa2ae9f7665ad92d76d746e",
      "tree": "5e729a2786cac7275c91ab026e75ee76f74176b3",
      "parents": [
        "fc5a8463dab7970d2eba8d25c5b99b87ab5072b4"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Thu Aug 28 09:56:51 2025 +0000"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Tue Sep 02 02:16:21 2025 +0000"
      },
      "message": "libmodprobe: Allow multiple modules to be aliased by a module\n\nThe current implementation of ModuleDependencyGrpah allowed only one\nmodule to be aliased, while modprobe allows multiple. This commit fixes\nthis issue.\n\nTest: audio works\nBug: 441237125\nChange-Id: I46a40a430c949d4f0370cc312a73d679b712a097\n"
    },
    {
      "commit": "b02a577636c2bbd8b0d777b3ebb379eba170fac6",
      "tree": "8b53b8ee042af9f5d948bcb48c83db4dc05c5aba",
      "parents": [
        "44ebaea83097c61246a1a09d39a66a8e77c42b02"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Thu Aug 28 09:56:51 2025 +0000"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Thu Aug 28 10:01:45 2025 +0000"
      },
      "message": "libmodprobe: Canonicalize module names in ModuleDependencyGraph::GetModule()\n\nThis commit makes sure to call CanonicalizeModulePath() in\nModuleDependencyGraph::GetModule(). Some kernel modules with \u0027-\u0027 in\ntheir name were requested, where they should have been replaced with\n\u0027_\u0027, leaving the kernel modules unloaded.\n\nTest: snd-hda-codec-hdmi is loaded\nBug: 441237125\nChange-Id: Ieebab51f1ae6e2d1d33e6e0eda1302612d2de52f\n"
    },
    {
      "commit": "cbebd725e1a0cb21afccbdd14bfb15c6c3d0b1bf",
      "tree": "a2410ba0cc7511b134c4e3086a0e2cb77e5e20a1",
      "parents": [
        "496e1de6e0ab2e58cd9d2912622409c84e54b969"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 30 04:47:17 2025 +0000"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 30 04:47:17 2025 +0000"
      },
      "message": "libmodprobe: Do not log error of finit_module(2) on EEXIST\n\nCurrent code logged an error message when finit_module(2) failed\nregardless of the reason of the failure. This caused a regression in\nterms of the logcat size as modprobe did not log error on EEXIST before\nag/34337743. This commit adds a simple if clause to align with the\noriginal implementation.\n\nTest: build passes, and log is not emitted on EEXIST\nBug: 433984587\nChange-Id: Ibc2b42e6aeda299ac92e0aa0576d49a77cb6ba00\n"
    },
    {
      "commit": "c33639ca057ccaec2704a392808e55725d298465",
      "tree": "f02217f0d78d3e4402df88212dd96062bcc4557e",
      "parents": [
        "da9f36ee4abbfac184fc17378fa4a3137cbc1303"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 02 21:38:50 2025 -0700"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 23 00:17:20 2025 +0000"
      },
      "message": "libmodprobe: Implement ModuleDependencyGraph\n\nThis commit introduces ModuleDependencyGraph, which will be used by the\nueventd coldboot. Instead of loading a module altogether with its\ndependencies, this graph enables obtaining dependency free modules that\ncan be loaded right away. This approach will be useful to prevent\nconcurrently loading the same kernel module.\n\nTest: atest system/core/libmodprobe/module_dependency_graph_test.cpp\nBug: 421025789\nChange-Id: I0748434e2f19189e16bbd278ce7e6c4c2662552e\n"
    },
    {
      "commit": "da9f36ee4abbfac184fc17378fa4a3137cbc1303",
      "tree": "e86874c3e5d95a0526eeeaa70f52f9dc6a876da6",
      "parents": [
        "a8827b1c3355867ae7a7fdd7c85e00d03bc60e4a"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Mon Jul 07 02:33:57 2025 +0000"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 23 00:17:19 2025 +0000"
      },
      "message": "libmodprobe: Define InitModule helper\n\nThis commit introduces InitModule() helper function. The original\nimplementation of Modprobe::Insmod() called finit_module(2) internally,\nbut now it calls InitModule() instead. This change enables smoother\nintegration with the module dependency graph, which is introduced in the\nnext commit.\n\nBug: 421025789\nTest: DUT boots\nChange-Id: If5776b4343540b5b7a3d33ee80dc336a5460aebf\n"
    },
    {
      "commit": "a8827b1c3355867ae7a7fdd7c85e00d03bc60e4a",
      "tree": "7f0691973d17466232e5187a1f7b5922e6b1a300",
      "parents": [
        "8def8381929c295635522b04c69bc89581e77762"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Mon Jul 07 02:17:23 2025 +0000"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 23 00:17:19 2025 +0000"
      },
      "message": "libmodprobe: Rename MakeCanonical to CanonicalizeModulePath\n\nNow that MakeCanonical is globally accessible, rename it to\nCanonicalizeModulePath to better describe the functionality.\n\nBug: 421025789\nTest: build succeeds\nChange-Id: I35a1ab82c60275f9de9a76e86d347f3c301511f1\n"
    },
    {
      "commit": "8def8381929c295635522b04c69bc89581e77762",
      "tree": "3cdc76348a214ccb2a8211b9a64fa43aeb25839a",
      "parents": [
        "53a72b5fcdc661baa3a822ee8cffac801d503ce2"
      ],
      "author": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Thu Jul 03 00:41:35 2025 -0700"
      },
      "committer": {
        "name": "Joe Hattori",
        "email": "hattorij@google.com",
        "time": "Wed Jul 23 00:17:19 2025 +0000"
      },
      "message": "libmodprobe: Define ModuleConfig\n\nThis commit defines ModuleConfig, which parses module configurations and\nstores the needed information to its members.  The parsing logic remains\nthe same as in the original implementation in the Modprobe constructor.\nNow the Modprobe constructor will build and use an instance of\nModuleConfig.\n\nBug: 421025789\nTest: DUT boots\nTest: atest libmodprobe/module_config_test.cpp\nChange-Id: I5df01e72db86708a572bcd4eba7fdc142cfe6f53\n"
    },
    {
      "commit": "f83c2991922eacea8a308accbffd7b1d50fad39b",
      "tree": "d694c0436721b4a351687a5e9d7034a6ad4b7c0e",
      "parents": [
        "c16fd00f8e21bff5e9fea87a253d70b2265d595b"
      ],
      "author": {
        "name": "Takaya Saeki",
        "email": "takayas@google.com",
        "time": "Tue Apr 15 13:09:47 2025 +0000"
      },
      "committer": {
        "name": "Takaya Saeki",
        "email": "takayas@google.com",
        "time": "Tue Apr 15 13:17:19 2025 +0000"
      },
      "message": "libmodprobe: Remove unused ResetModuleCount function\n\nModProbe::ResetModuleCount is a dead code which is not called by\nanywhere. This change removes it.\n\nBug: 400592897\nTest: Build succeeds\nChange-Id: Id2d6045fc72c5e60ec96e34d0170d77c66d2b9cc\n"
    },
    {
      "commit": "c16fd00f8e21bff5e9fea87a253d70b2265d595b",
      "tree": "103c29ab4ab7d3424d7333627dfcaac0c9f1b65c",
      "parents": [
        "ba17833f4c8e74e5bcb09eaff34d217154daa67b"
      ],
      "author": {
        "name": "Takaya Saeki",
        "email": "takayas@google.com",
        "time": "Fri Apr 11 05:51:29 2025 +0000"
      },
      "committer": {
        "name": "Takaya Saeki",
        "email": "takayas@google.com",
        "time": "Fri Apr 11 11:27:25 2025 +0000"
      },
      "message": "libmodprobe: add thread safety annotations\n\nAdd thread safety annotations to let compilers check the thread safety\nof `ModProbe` class. We used to have a data race issue in `ModProbe`\nclass. Utilizing thread safety annotation would mitigate future same\nissues.\n\nBug: 400592897\nTest: cuttlefish boots\nChange-Id: I8c15394de5994b9f40ae8e2c53c6c8f8d7d36b31\n"
    },
    {
      "commit": "ba17833f4c8e74e5bcb09eaff34d217154daa67b",
      "tree": "55f7ea2ff9904e148102a6588872d84b2ff1d7b7",
      "parents": [
        "937d02a17d67f3c8f1bbb2b0107e1d16ee4b407b"
      ],
      "author": {
        "name": "Takaya Saeki",
        "email": "takayas@google.com",
        "time": "Fri Apr 11 05:34:49 2025 +0000"
      },
      "committer": {
        "name": "Takaya Saeki",
        "email": "takayas@google.com",
        "time": "Fri Apr 11 09:39:19 2025 +0000"
      },
      "message": "libmodprobe: add missing locks in LoadWithAliases\n\n`Modprobe::LoadWithAliases` searches `module_loaded_` for a new element\nwithout holding the lock of `module_loaded_lock_`. However,\n`InsmodWithDeps` will insert an element later in this function, and\n`LoadWithAliases` can be called by `LoadModulesParallel` in parallel.\nTherefore `LoadWithAliases` touches `module_loaded_` while it\u0027s being\nmodified by other threads. That means it accesses corrputed memory.\n\nThis change inserts a necessary lock to fix this bug of\n`LoadModulesParallel` and `LoadWithAliases`. This change does not\ninclude changes to add thread safety annotations to prevent future same\nproblem, but following other changes will do that.\n\nBug: 400592897\nTest: cuttlefish boots\nChange-Id: Ib52a3b147cbe4122ae42c9fd377e9ea728a4aa41\n"
    },
    {
      "commit": "c819f49e6c01efd6795c14647b84e3460589b0d5",
      "tree": "0dbeccfedea0c1d908bcb9ef6f49dbc62eda7600",
      "parents": [
        "9ea5cbf797c1937419a03eb67eb383cb8610d3b4",
        "b5c8ca3a10a4688b9c1b24ddd7c3aceaace07102"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Wed Jan 29 15:01:47 2025 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 29 15:01:47 2025 -0800"
      },
      "message": "Merge \"Include sys/types.h for uid_t\" into main"
    },
    {
      "commit": "b5c8ca3a10a4688b9c1b24ddd7c3aceaace07102",
      "tree": "587fd73051826faed9d89eec4ef8abe18a0e6ef3",
      "parents": [
        "cf2c32dabb67a9c8ad3d2ec6e5775e8d19310336"
      ],
      "author": {
        "name": "Aditya Kumar",
        "email": "appujee@google.com",
        "time": "Wed Jan 29 12:10:33 2025 -0800"
      },
      "committer": {
        "name": "Aditya Kumar",
        "email": "appujee@google.com",
        "time": "Wed Jan 29 13:25:34 2025 -0800"
      },
      "message": "Include sys/types.h for uid_t\n\n```\nsystem/core/libmodprobe/include/exthandler/exthandler.h:22:37: error: unknown type name \u0027uid_t\u0027; did you mean \u0027pid_t\u0027?\n```\n\nBug: 190084016\nChange-Id: Iff7cb5e34474f00f200edbaf4895713576b0a6fc\n"
    },
    {
      "commit": "ff1cdb3d3fdd35f7df7b50c64bc7a702483bbdc7",
      "tree": "7481dec9b36c000f94188e9b6aa0bc0d681ee898",
      "parents": [
        "cf2c32dabb67a9c8ad3d2ec6e5775e8d19310336"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 21 17:01:36 2025 -0500"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 21 17:01:36 2025 -0500"
      },
      "message": "Fix C++23 build.\n\nMostly missing #includes, but some incomplete types given to\nstd::unique_ptr too.\n\nChange-Id: I50583874dca32607eeb48b5d640822a3417ff530\n"
    },
    {
      "commit": "3063d84e9c0162ba74670f4eb6ef276ceb03c644",
      "tree": "aadfa8c9a9fae4c677786ac7734288ff95e36695",
      "parents": [
        "ac474ff7a0745308dd8f67b66d405f2f78bd9413"
      ],
      "author": {
        "name": "Grzegorz Jaszczyk",
        "email": "jaszczyk@google.com",
        "time": "Thu Jun 06 15:27:08 2024 +0000"
      },
      "committer": {
        "name": "Grzegorz Jaszczyk",
        "email": "jaszczyk@google.com",
        "time": "Fri Oct 25 09:27:45 2024 +0000"
      },
      "message": "libmodprobe: add support for dynamic module options\n\nHitherto libmodprobe was supporting modules.options which allows passing\nextra module options. This commit extends that support and beside\n`options`, modules.options can now contain `dyn_options` entries.\n\nSyntax example:\ndyn_options snd_sof_pci system \"/vendor/bin/mod_options --sof-fw\"\n\nThis allows to determine extra module options, with help of external\nprogram, at runtime which can be useful for unibuilds, supporting\nvarious device flavors and therefore requiring different module options.\n\nUsing external program to customize modules parameters are inspired by\nAndroid\u0027s external firmware handler:\nhttps://android.googlesource.com/platform/system/core/+/master/init/README.ueventd.md#firmware-loading\nand the same RunExternalHandler is reused for both dynamic module\nhandling and firmware handling.\n\nBug: 335619610\nTest: Test audio on systems using snd_sof_pci module and verify\ncorrectness of custom module parameters.\n\nChange-Id: Ibd1a942d4ea022519676435ed525cd7c3e720d31\n"
    },
    {
      "commit": "ac474ff7a0745308dd8f67b66d405f2f78bd9413",
      "tree": "ac7a9709543ac9c4b43628dee2e1644ba5db8d8a",
      "parents": [
        "c9d8983be31ede98357e486b81756f567fa98313"
      ],
      "author": {
        "name": "Grzegorz Jaszczyk",
        "email": "jaszczyk@google.com",
        "time": "Sun Oct 13 14:55:38 2024 +0000"
      },
      "committer": {
        "name": "Grzegorz Jaszczyk",
        "email": "jaszczyk@google.com",
        "time": "Fri Oct 25 09:27:43 2024 +0000"
      },
      "message": "firmware_handler: extract part responsible for running ext program to lib\n\nAs a preparation for upcoming commit, extract part which is responsible\nfor external program execution to libmodprobe so it can be later\nre-used not only for firmware handler but also for dynamic module\noptions handler within libmodprobe.\n\nRunExternalHandler is moved entirely to separate library with two\nchanges:\n- Setting env needed previously by firmware handler was made generic and\n  now external handler can get envs_map containing pairs of env and its\n  value which needs to be set.\n- \"Firmware\" was removed from one of the log since now it can be used in\n  different context (s/External Firmware Handler/External Handler/)\n\nBug: 335619610\nTest: `atest CtsInitTestCases` passed, especially:\n      [105/129] ueventd_parser#ExternalFirmwareHandlers: PASSED (0ms)\n      [106/129] ueventd_parser#ExternalFirmwareHandlersDuplicate: PASSED (0ms)\n\nChange-Id: Ie07cee763278f224bd3c0acfbe06c44eb36d0a81\n"
    },
    {
      "commit": "55c047fd4407b2707eee48c3cdb56f63b3229a9b",
      "tree": "037ed62c15f732eaedd304992d05a9c14f40aa23",
      "parents": [
        "ac68a8b797bb24bf5be00e78c5582760afef634e"
      ],
      "author": {
        "name": "Chungkai Mei",
        "email": "chungkai@google.com",
        "time": "Mon Aug 05 05:16:20 2024 +0000"
      },
      "committer": {
        "name": "Chung-Kai (Michael) Mei",
        "email": "chungkai@google.com",
        "time": "Tue Aug 06 04:05:25 2024 +0000"
      },
      "message": "libmodprobe: use ordered map for deterministic module loading\n\nTo ensure stable loading of parallel modules, switch to an ordered map structure. This will prevent potential dependency issues and conflicts.\n\nBug: 314213605\nChange-Id: I8e00678e18417550b3be0c4228e4908a830e648c\nSigned-off-by: Chungkai Mei \u003cchungkai@google.com\u003e\n"
    },
    {
      "commit": "1db2d481eab6bba6ccbf853e46cea990c1600930",
      "tree": "9876ac9bf75bb7b0e4a332091750c9c90d227854",
      "parents": [
        "bbdc19b7e1394b17d7f7822d5516e2f0dcd729e4"
      ],
      "author": {
        "name": "Chungkai Mei",
        "email": "chungkai@google.com",
        "time": "Thu Apr 11 08:49:06 2024 +0000"
      },
      "committer": {
        "name": "Juan Yescas",
        "email": "jyescas@google.com",
        "time": "Mon Apr 22 19:56:46 2024 -0700"
      },
      "message": "libmodprobe: remove dummy parameters for kernel\n\nwe consume load_sequential only in libmodprobe, so remove this parameter\nbefore sending them into kernel layer\n\nBug: 332435366\nTest: Built and boot husky targets\nChange-Id: I37e63723d3c8d4fd8ca1fda682b344a721b9a637\nSigned-off-by: Chungkai Mei \u003cchungkai@google.com\u003e\n"
    },
    {
      "commit": "c8dc7ffd5e38f8b59ed2040b2b72c870eecbcccf",
      "tree": "2a1c53a8c4872d4fb8918d11dc8c8ab1f2bf90b0",
      "parents": [
        "4df565db4c67162fb61d5731bf19b11218862ab4"
      ],
      "author": {
        "name": "Junki Min",
        "email": "joonki.min@samsung.com",
        "time": "Mon Mar 18 17:35:26 2024 +0900"
      },
      "committer": {
        "name": "Junki Min",
        "email": "joonki.min@samsung.com",
        "time": "Mon Mar 18 17:35:26 2024 +0900"
      },
      "message": "toolbox/libmodprobe: add toolbox to vendor_ramdisk\n\ntoolbox and libmodprobe are required for module loading before\nfirst stage init begin.\n\nBUG: 329807942\nSigned-off-by: Junki Min \u003cjoonki.min@samsung.com\u003e\nChange-Id: Icf04888e602b012758ebf353ed8e4aff2585fd07\n"
    },
    {
      "commit": "2d3658a42111d44bd1fc386381de5ed0541ee291",
      "tree": "c4631d47f1a272099e2c57f4e9c470c89f67f255",
      "parents": [
        "b2bfb972e8c612356abe319c9b6109dccc2e03ed"
      ],
      "author": {
        "name": "Will McVicker",
        "email": "willmcvicker@google.com",
        "time": "Thu Mar 07 11:13:47 2024 -0800"
      },
      "committer": {
        "name": "Will McVicker",
        "email": "willmcvicker@google.com",
        "time": "Thu Mar 07 15:01:54 2024 -0800"
      },
      "message": "libmodprobe: Make IsBlocklisted() public\n\nThis allows tools like modprobe to check if a module is blocklisted.\n\nTest: verified lsmod on pixel 6\nBug: 324018983\nChange-Id: I5d5278ab056e58a4ee103db94b573928cbeb5c5f\n"
    },
    {
      "commit": "a33362ed50582b16f460eb50e8aa3a2e0ff7ae48",
      "tree": "ca28e8f2c6ca15c5562051b0adecab20d77e832f",
      "parents": [
        "47c0bfa8c7f12accbf6221fe5707d8f59859190d",
        "ecd154e702aaf7896739c1c2b2b0c796ae872030"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Thu Jun 29 17:21:18 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 29 17:21:18 2023 +0000"
      },
      "message": "Merge \"libmodprobe: LPM: Cleanup of redundant check\""
    },
    {
      "commit": "db15b6f93d828d0c4a9705e845b41d48be22b6f2",
      "tree": "b056e6d295b780141f180c2ea3ea94d0a2a97f6c",
      "parents": [
        "786dac3d5068594735ef38f4a51bbb89e9a12003"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed May 03 15:28:39 2023 -0700"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Jun 27 13:53:43 2023 -0700"
      },
      "message": "Improve error message of libmodprobe\n\nLog path of module if that module is not found.\n\nBug: 273752147\nTest: th\nChange-Id: I428a116ee26f97455229df642acbdc1297098a32\n"
    },
    {
      "commit": "bb8637b3997273c837585923e0a7e4b424a07839",
      "tree": "4c49a4635e6c761750c130589ed63832af4a256c",
      "parents": [
        "3b210bc65346a6f58e255f3f10b5b1d4f6a87b5a",
        "763e869b381bbcec58e799670344e859292f2db2"
      ],
      "author": {
        "name": "William McVicker",
        "email": "willmcvicker@google.com",
        "time": "Fri Jun 09 18:54:42 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 18:54:42 2023 +0000"
      },
      "message": "Merge \"Revert \"Revert \"libmodprobe: LPM: Load all modules in *.load with *.dep satisfied\"\"\""
    },
    {
      "commit": "d459ccd14e8fcb8134f8ca97045702f46b3e5657",
      "tree": "e3f368315218dff0a9587756181b2d03b5335261",
      "parents": [
        "07f6f239ee3e4f68e46cd5f8cbf9bd0af53b72f6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 13 21:59:58 2023 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 13 21:59:58 2023 -0700"
      },
      "message": "Use android::base::Basename instead of basename\n\nbasename can have different behavior based on whether the glibc\nor posix version is used, and musl doens\u0027t provide the glibc version\nat all.  Avoid the problem by using the one in libbase instead.\n\nTest: m USE_HOST_MUSL\u003dtrue host-native -k\nChange-Id: If17c7622ed9b9cffc218567a46afb059b608d3c9\n"
    },
    {
      "commit": "ecd154e702aaf7896739c1c2b2b0c796ae872030",
      "tree": "06fb43f8fb1fbb5d2a080e62e48a4ddf6142ae20",
      "parents": [
        "763e869b381bbcec58e799670344e859292f2db2"
      ],
      "author": {
        "name": "Wasim Nazir",
        "email": "quic_wasimn@quicinc.com",
        "time": "Thu Apr 06 15:07:22 2023 +0530"
      },
      "committer": {
        "name": "Wasim Nazir",
        "email": "quic_wasimn@quicinc.com",
        "time": "Thu Apr 06 15:07:31 2023 +0530"
      },
      "message": "libmodprobe: LPM: Cleanup of redundant check\n\nRemoving find-check while removing modules in loop.\n\nTest: Normal/Recovery Boot to home\nBug: 261678056\nChange-Id: I5ff41b3e8cf633dc687f819a146404b863d2ae0a\nSigned-off-by: Wasim Nazir \u003cquic_wasimn@quicinc.com\u003e\n"
    },
    {
      "commit": "763e869b381bbcec58e799670344e859292f2db2",
      "tree": "2086770ad12c7ce222fdc54f7eeea5c3f0c36143",
      "parents": [
        "e0af2b83f3f14dfbdf26736145904a647c8066cc"
      ],
      "author": {
        "name": "Chung-Kai (Michael) Mei",
        "email": "chungkai@google.com",
        "time": "Wed Mar 01 04:24:10 2023 +0000"
      },
      "committer": {
        "name": "Wasim Nazir",
        "email": "quic_wasimn@quicinc.com",
        "time": "Thu Apr 06 15:04:33 2023 +0530"
      },
      "message": "Revert \"Revert \"libmodprobe: LPM: Load all modules in *.load with *.dep satisfied\"\"\n\nThis reverts commit a0e6703f738bcf863847088cdcd4b3689e8c9ae6.\n\nReason for revert: the failed devices has disabled the feature now, we\u0027ll fixed the problem later so releand this patch first\n\nChange-Id: Ib12b84edbd9489d769a4988908bb89f45c13ca43\n"
    },
    {
      "commit": "bdd595f0f91852815ce1e4aba6adafe416fb2919",
      "tree": "a028ec6e0daede1b1b022871aafff00add274d05",
      "parents": [
        "5a2a302108f38355ad5b78eee6f6ff9842fc8a4e"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Mar 29 15:14:38 2023 -0700"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Mar 29 15:29:02 2023 -0700"
      },
      "message": "Allow libmodprobe to be used by host binaries\n\nCuttlefish tooling need libmodprobe to determine if a kernel module is\nsigned.\n\nBug: 273752147\nTest: th\nChange-Id: Icea49802d032b27bd89ed8f0bee1bc4814298774\n"
    },
    {
      "commit": "a0e6703f738bcf863847088cdcd4b3689e8c9ae6",
      "tree": "50a5895dd5b84420bc1cc7a3a43bc03cebb26653",
      "parents": [
        "3e6c9dbee8a354d824b89eb54573103594f1cffe"
      ],
      "author": {
        "name": "William McVicker",
        "email": "willmcvicker@google.com",
        "time": "Mon Feb 06 17:34:57 2023 +0000"
      },
      "committer": {
        "name": "William McVicker",
        "email": "willmcvicker@google.com",
        "time": "Mon Feb 06 19:36:37 2023 +0000"
      },
      "message": "Revert \"libmodprobe: LPM: Load all modules in *.load with *.dep satisfied\"\n\nThis reverts commit 3e6c9dbee8a354d824b89eb54573103594f1cffe.\n\nReason for revert: This is breaking boot on several devices.\nBug: 267836481\nBug: 261678056\nChange-Id: I67c4b784936828c448a53e3092af70d949fcbc65\n"
    },
    {
      "commit": "3e6c9dbee8a354d824b89eb54573103594f1cffe",
      "tree": "5b15a1dd7ed5bc8c39224f0b276b325598e82925",
      "parents": [
        "1e53806ad984af26c10aefb07aa6d4df0327df61"
      ],
      "author": {
        "name": "Wasim Nazir",
        "email": "quic_wasimn@quicinc.com",
        "time": "Tue Dec 20 12:23:20 2022 +0530"
      },
      "committer": {
        "name": "Wasim Nazir",
        "email": "quic_wasimn@quicinc.com",
        "time": "Tue Jan 24 14:15:25 2023 +0530"
      },
      "message": "libmodprobe: LPM: Load all modules in *.load with *.dep satisfied\n\nLoad all hard-dependent-modules even if they are not listed in *.load.\nDefer softdep module loading to InsmodWithDeps, as loading it parallel\nbreaks the purpose of softdep which is used to load the modules\naccording to dependency/sequence(pre/post) added.\n\nTest: Normal/Recovery Boot to home\nBug: 261678056\nChange-Id: I0aea7580545affbf4caa9205281868aad00a2bb0\nSigned-off-by: Wasim Nazir \u003cquic_wasimn@quicinc.com\u003e\n"
    },
    {
      "commit": "8b451523a428ccbcd220e038f7e5a564dada756d",
      "tree": "370a535da1679ddfe0de40a99afec572b903a9c5",
      "parents": [
        "ef46fe4e2b5f1909b9e9a4ae66f70a859211d1d6"
      ],
      "author": {
        "name": "chungkai",
        "email": "chungkai@google.com",
        "time": "Thu Jul 28 05:09:32 2022 +0000"
      },
      "committer": {
        "name": "Chung-Kai (Michael) Mei",
        "email": "chungkai@google.com",
        "time": "Sat Aug 06 04:48:55 2022 +0000"
      },
      "message": "libmodprobe: check blockedlist if load failed\n\ncheck blockedlist if load failed and fix potential race condition\n\nTest: Boot to home\nBug: 240210009\nSigned-off-by: chungkai \u003cchungkai@google.com\u003e\nChange-Id: I0ccc6c58897c03f5bb5f6349b5c3ec047b458505\n"
    },
    {
      "commit": "d84c42e3b3df9fae75471a60f7349aebd82ca617",
      "tree": "552d0aebcbdc17563aa220d3e35a29ae0f70d459",
      "parents": [
        "7c43c6c9a041aa696563b1bc232c5960c24203cb"
      ],
      "author": {
        "name": "chungkai",
        "email": "chungkai@google.com",
        "time": "Mon Jun 27 10:22:08 2022 +0000"
      },
      "committer": {
        "name": "Chung-Kai (Michael) Mei",
        "email": "chungkai@google.com",
        "time": "Wed Jul 27 04:57:10 2022 +0000"
      },
      "message": "libmodprobe: allow module with soft dependencies to load in parallel\n\n1. integrate modules which have soft dependencies into parallel loading flow. First, check the soft dependencies are in `module.load`  list. If yes, regard soft dependencies as hard dependencies and load the modules only when their dependencies are loaded. If not, abandon these soft dependencies.\n\n2. also add an allowlist and use the term \"load_sequential\u003d1\" to load specific modules in sequential.\n\nTest: R4 saves 350ms+ (48%) to load all modules\nBug: 229794277\nSigned-off-by: chungkai \u003cchungkai@google.com\u003e\nChange-Id: I904fe31cd02f9d499dadc537335cadc88d8add70\n"
    },
    {
      "commit": "a41f3812fd996f7ed3ef1477e8532497d2a8cb8d",
      "tree": "27dc54e7b74714315b550b97a081dc79ce259abe",
      "parents": [
        "99c892e5798aa5401dd2177202ae6ec049ed6fea",
        "c60300a2cc59eb0f8091b5c7387bd923e4cb4a69"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 23 07:40:18 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 23 07:40:18 2022 +0000"
      },
      "message": "Merge \"Load kernel modules in parallel\""
    },
    {
      "commit": "c6a8821fa75dd90816e71971eb74f7efc93f0ae6",
      "tree": "59f5e4cd02e0e59b40f317f08b26b54acd447324",
      "parents": [
        "81cc9d986f2ce6d9e0351ee2d80edfb6bb71953d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri Mar 18 14:46:27 2022 -0700"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri Mar 18 21:48:29 2022 +0000"
      },
      "message": "Add libmodprobe to hwasan-postsubmit\n\nTest: Run tests under HWASan.\nBug: 193568145\nChange-Id: I6a259705923d619292b0ae16e4b18a9647032f4e\n"
    },
    {
      "commit": "c60300a2cc59eb0f8091b5c7387bd923e4cb4a69",
      "tree": "e17df74e4fbd4925f3fd234f0075e1b2d066b029",
      "parents": [
        "927d9d1c689a94ea65367e840bee9e53296b57c2"
      ],
      "author": {
        "name": "Chungkai",
        "email": "chungkai@google.com",
        "time": "Wed Feb 03 20:30:07 2021 -0800"
      },
      "committer": {
        "name": "Chung-Kai (Michael) Mei",
        "email": "chungkai@google.com",
        "time": "Fri Mar 18 08:06:07 2022 +0000"
      },
      "message": "Load kernel modules in parallel\n\nFirst, we load independent module in parallel, then we singly load\nmodules which have soft-dependencies. then remove them from dependency\nlist of other modules. Repeat these steps until all modules are loaded.\n\nBug: 180676019\nTest: boot successfully, and save more than 400 ms on Pixel 6 Pro.\nSigned-off-by: chungkai \u003cchungkai@google.com\u003e\nChange-Id: Ib844cfee72d4049bd951528692c818b4fa6c8e8f\n"
    },
    {
      "commit": "22e082e87a0d4e2d1000d9e029619677d378c41d",
      "tree": "bf63e75eb2091e62dc02e19e9bfa6439133e9281",
      "parents": [
        "489f09abd4cbbea26c45a189ce4d26434d437e59"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 16 16:37:10 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 16 16:37:10 2021 -0700"
      },
      "message": "Split up the system/core/ TEST_MAPPING.\n\nA lot of things had moved out of system/core/ without their TEST_MAPPING\nentries having gone with them, reducing the amount of presubmit coverage\nfor those things.\n\nIn order to reduce the likelihood of that happening again, I\u0027ve pushed\nall that remained in the system/core/ TEST_MAPPING down into the\nindividual subdirectories.\n\nTest: treehugger\nChange-Id: Ib75d65f9200fa64ae1552471da6fbe5b7023cf94\n"
    },
    {
      "commit": "2e200580696343298872bd8d9d190192453d37cd",
      "tree": "e4468ba65b17ddcc1e0d4a19c47350c9cb55e89d",
      "parents": [
        "1c998ded12ccc7ac8bc5aa4f0c3362567f0f0f6f"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Fri Jun 11 12:58:53 2021 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Fri Jun 18 14:26:55 2021 +0900"
      },
      "message": "Completely migrate init first stage to Soong\n\nadb_debug.prop is migrated too. And ramdisk_available is added to all\ndependencies.\n\nBug: 187196593\nTest: boot\nChange-Id: I59cd149e0021211b8fd59c44b93bbf18dc8637bf\n"
    },
    {
      "commit": "87b2ef0edfab63e0482c3adc58332a9fcb865fc5",
      "tree": "add61c8f330c3bf580fc7213283c336757a60856",
      "parents": [
        "007d7941c82563f27decf2f0a951c1c402f31433"
      ],
      "author": {
        "name": "Will McVicker",
        "email": "willmcvicker@google.com",
        "time": "Fri Mar 12 11:11:37 2021 -0800"
      },
      "committer": {
        "name": "Will McVicker",
        "email": "willmcvicker@google.com",
        "time": "Wed Mar 31 09:34:47 2021 -0700"
      },
      "message": "libmodprobe: refactor blocklist functionality\n\nRemove the function EnableBlocklist() and add a constructor argument to\nenable/disable the use of modules.blocklist. In all cases, the\nenabling/disabling of the blocklist happens immediately after creating\nthe Modprobe object. So this simplies libmodprobe.\n\nAdditionally, the use of the blocklist by libmodprobe should be enabled\nby default unless explicitly disabled during creation of the Modprobe\nobject. Currently, only modprobe(8) defaults to not using the blocklist\nand includes the argument -b BLOCKLIST for enabling it. That\nfunctionality remains.\n\nThis refactor allows us to use the blocklist during first stage init.\nHowever, additional logic is needed to not return an error for the\nblocked non-aliased modules during first stage init; otherwise, the\nerror would result in an init crash leading to a device reboot. So fixup\nLoadListedModules() to allow blocking modules without returning an\nerror.\n\nBug: 182582036\nTest: boot test on pixel 5 with a module in modules.blocklist\nChange-Id: I394b5aa98fa98821011982cfe693749010c381f7\n"
    },
    {
      "commit": "9369539a1ec89af552cdf417ca390c3f1989202e",
      "tree": "9203fac7cacba5447aca24c235ac98d17d19d037",
      "parents": [
        "4f898d4e332067e11f47056410284accc63f57a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 23 17:53:08 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 23 17:53:08 2021 -0700"
      },
      "message": "Update libmodprobe\u0027s OWNERS.\n\nTest: treehugger\nChange-Id: I714516a3a655facbe447b798f7de59ab899035ea\n"
    },
    {
      "commit": "d69ad69a938a27021adfcc2435dc1fd2ad0c8e1a",
      "tree": "184b620c9b0cddc4b15efa718ddc3961d2ce3d64",
      "parents": [
        "d57652f15b078d06d9258094f8a951374a677f2c"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 16 19:02:14 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 19 12:59:05 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to system/core\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  bootstat/Android.bp\n  cli-test/Android.bp\n  code_coverage/Android.bp\n  cpio/Android.bp\n  debuggerd/crasher/Android.bp\n  debuggerd/proto/Android.bp\n  diagnose_usb/Android.bp\n  fs_mgr/libdm/Android.bp\n  fs_mgr/libfiemap/Android.bp\n  fs_mgr/liblp/Android.bp\n  fs_mgr/libsnapshot/Android.bp\n  fs_mgr/libstorage_literals/Android.bp\n  fs_mgr/libvbmeta/Android.bp\n  fs_mgr/tests/Android.bp\n  fs_mgr/tools/Android.bp\n  gatekeeperd/Android.bp\n  healthd/Android.bp\n  healthd/testdata/Android.bp\n  init/Android.bp\n  init/Android.mk\n  init/sysprop/Android.bp\n  init/test_kill_services/Android.bp\n  init/test_service/Android.bp\n  libappfuse/Android.bp\n  libasyncio/Android.bp\n  libbinderwrapper/Android.bp\n  libcrypto_utils/Android.bp\n  libcrypto_utils/tests/Android.bp\n  libdiskconfig/Android.bp\n  libgrallocusage/Android.bp\n  libkeyutils/mini_keyctl/Android.bp\n  libmodprobe/Android.bp\n  libnetutils/Android.bp\n  libpackagelistparser/Android.bp\n  libprocessgroup/Android.bp\n  libprocessgroup/cgrouprc/Android.bp\n  libprocessgroup/cgrouprc_format/Android.bp\n  libprocessgroup/profiles/Android.bp\n  libprocessgroup/setup/Android.bp\n  libqtaguid/Android.bp\n  libsparse/Android.bp\n  libstats/push_compat/Android.bp\n  libsuspend/Android.bp\n  libsync/Android.bp\n  libsystem/Android.bp\n  libsysutils/Android.bp\n  libusbhost/Android.bp\n  libutils/Android.bp\n  libvndksupport/Android.bp\n  libvndksupport/tests/Android.bp\n  llkd/Android.bp\n  llkd/tests/Android.bp\n  property_service/libpropertyinfoparser/Android.bp\n  property_service/libpropertyinfoserializer/Android.bp\n  property_service/property_info_checker/Android.bp\n  qemu_pipe/Android.bp\n  reboot/Android.bp\n  rootdir/Android.bp\n  rootdir/Android.mk\n  rootdir/avb/Android.bp\n  rootdir/avb/Android.mk\n  run-as/Android.bp\n  sdcard/Android.bp\n  set-verity-state/Android.bp\n  shell_and_utilities/Android.bp\n  storaged/Android.bp\n  toolbox/Android.bp\n  trusty/apploader/Android.bp\n  trusty/confirmationui/Android.bp\n  trusty/confirmationui/fuzz/Android.bp\n  trusty/coverage/Android.bp\n  trusty/fuzz/Android.bp\n  trusty/fuzz/test/Android.bp\n  trusty/gatekeeper/Android.bp\n  trusty/gatekeeper/fuzz/Android.bp\n  trusty/keymaster/Android.bp\n  trusty/keymaster/fuzz/Android.bp\n  trusty/libtrusty/Android.bp\n  trusty/libtrusty/tipc-test/Android.bp\n  trusty/secure_dpu/Android.bp\n  trusty/storage/interface/Android.bp\n  trusty/storage/lib/Android.bp\n  trusty/storage/proxy/Android.bp\n  trusty/storage/tests/Android.bp\n  trusty/utils/spiproxyd/Android.bp\n  trusty/utils/trusty-ut-ctrl/Android.bp\n  usbd/Android.bp\n  watchdogd/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  debuggerd/Android.bp\n  fastboot/Android.bp\n  libkeyutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT\nto:\n  libcutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\nto:\n  fs_mgr/Android.bp\n  fs_mgr/libfs_avb/Android.bp\n  trusty/Android.bp\n  trusty/utils/rpmb_dev/Android.bp\n\nAdded SPDX-license-identifier-BSD\nto:\n  fastboot/fuzzy_fastboot/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: Id740a7d2884556081fdb68876584b25eb95e1bef\n"
    },
    {
      "commit": "c3a206ccda9a78dd45d06b7d68dbe83e1fba779e",
      "tree": "cd137e76557bf1aadffe3cb43e02ab642bc81c71",
      "parents": [
        "187b7d19504ca8bdcbc6217c06a117017b4c6287"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 16 20:01:20 2021 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 16 20:01:20 2021 +0000"
      },
      "message": "Revert \"[LSC] Add LOCAL_LICENSE_KINDS to system/core\"\n\nThis reverts commit 187b7d19504ca8bdcbc6217c06a117017b4c6287.\n\nReason for revert: system/core is multiple projects, not one.\n\nChange-Id: I790ea41741f8cd9b8b6db2f59a49e71fb0958fd6\n"
    },
    {
      "commit": "187b7d19504ca8bdcbc6217c06a117017b4c6287",
      "tree": "0656ad03ff6e56b17ab0d4a8677955cab2c16cba",
      "parents": [
        "83eae36647eef27b75b128c5bce4732229d2ca0d"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 12 17:48:16 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 16 04:10:03 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to system/core\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  bootstat/Android.bp\n  cli-test/Android.bp\n  code_coverage/Android.bp\n  cpio/Android.bp\n  debuggerd/crasher/Android.bp\n  debuggerd/proto/Android.bp\n  diagnose_usb/Android.bp\n  fs_mgr/libdm/Android.bp\n  fs_mgr/libfiemap/Android.bp\n  fs_mgr/liblp/Android.bp\n  fs_mgr/libsnapshot/Android.bp\n  fs_mgr/libstorage_literals/Android.bp\n  fs_mgr/libvbmeta/Android.bp\n  fs_mgr/tests/Android.bp\n  fs_mgr/tools/Android.bp\n  gatekeeperd/Android.bp\n  healthd/Android.bp\n  healthd/testdata/Android.bp\n  init/Android.bp\n  init/Android.mk\n  init/sysprop/Android.bp\n  init/test_kill_services/Android.bp\n  init/test_service/Android.bp\n  libappfuse/Android.bp\n  libasyncio/Android.bp\n  libbinderwrapper/Android.bp\n  libcrypto_utils/Android.bp\n  libcrypto_utils/tests/Android.bp\n  libdiskconfig/Android.bp\n  libgrallocusage/Android.bp\n  libkeyutils/mini_keyctl/Android.bp\n  libmodprobe/Android.bp\n  libnetutils/Android.bp\n  libpackagelistparser/Android.bp\n  libprocessgroup/Android.bp\n  libprocessgroup/cgrouprc/Android.bp\n  libprocessgroup/cgrouprc_format/Android.bp\n  libprocessgroup/profiles/Android.bp\n  libprocessgroup/setup/Android.bp\n  libqtaguid/Android.bp\n  libsparse/Android.bp\n  libstats/push_compat/Android.bp\n  libsuspend/Android.bp\n  libsync/Android.bp\n  libsystem/Android.bp\n  libsysutils/Android.bp\n  libusbhost/Android.bp\n  libutils/Android.bp\n  libvndksupport/Android.bp\n  libvndksupport/tests/Android.bp\n  llkd/Android.bp\n  llkd/tests/Android.bp\n  property_service/libpropertyinfoparser/Android.bp\n  property_service/libpropertyinfoserializer/Android.bp\n  property_service/property_info_checker/Android.bp\n  qemu_pipe/Android.bp\n  reboot/Android.bp\n  rootdir/Android.bp\n  rootdir/Android.mk\n  rootdir/avb/Android.bp\n  rootdir/avb/Android.mk\n  run-as/Android.bp\n  sdcard/Android.bp\n  set-verity-state/Android.bp\n  shell_and_utilities/Android.bp\n  storaged/Android.bp\n  toolbox/Android.bp\n  trusty/apploader/Android.bp\n  trusty/confirmationui/Android.bp\n  trusty/confirmationui/fuzz/Android.bp\n  trusty/coverage/Android.bp\n  trusty/fuzz/Android.bp\n  trusty/fuzz/test/Android.bp\n  trusty/gatekeeper/Android.bp\n  trusty/gatekeeper/fuzz/Android.bp\n  trusty/keymaster/Android.bp\n  trusty/keymaster/fuzz/Android.bp\n  trusty/libtrusty/Android.bp\n  trusty/libtrusty/tipc-test/Android.bp\n  trusty/secure_dpu/Android.bp\n  trusty/storage/interface/Android.bp\n  trusty/storage/lib/Android.bp\n  trusty/storage/proxy/Android.bp\n  trusty/storage/tests/Android.bp\n  trusty/utils/spiproxyd/Android.bp\n  trusty/utils/trusty-ut-ctrl/Android.bp\n  usbd/Android.bp\n  watchdogd/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  debuggerd/Android.bp\n  fastboot/Android.bp\n  libkeyutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT\nto:\n  Android.bp\n  libcutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\nto:\n  fs_mgr/Android.bp\n  fs_mgr/libfs_avb/Android.bp\n  trusty/utils/rpmb_dev/Android.bp\n\nAdded SPDX-license-identifier-BSD\nto:\n  fastboot/fuzzy_fastboot/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: I5bd81adb5cdcf2b4dd4141b204eb430ff526af8f\n"
    },
    {
      "commit": "21de4e727e4797959c3b725c2236e9f82ab58a3f",
      "tree": "101e3b2fb72fd633e3b287674c2d74715c523c32",
      "parents": [
        "c5f423f9037782847e37511c34be7acfa61715c7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 11 12:45:45 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 11 12:45:45 2020 -0800"
      },
      "message": "Add new owners to various sub-projects.\n\nTest: treehugger\nChange-Id: Ia2a99c0499633ccc5d23c37a1ec93867c876d637\n"
    },
    {
      "commit": "fb18f6ef059dc2d20fa58cdcc9609bf768a11753",
      "tree": "fa19dad54b3fee35a730d96aa9b6033cdc63d325",
      "parents": [
        "f9c36a2ca632fa88edba9c2c87f14f2aec1e7fd3"
      ],
      "author": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Sun Oct 18 17:37:27 2020 +0100"
      },
      "committer": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Mon Oct 19 12:00:08 2020 +0100"
      },
      "message": "libmodprobe: Fail when modules.dep lacks colon\n\nThe first argument in a modules.dep line must end with a colon so fail\nif that condition is not met.\n\nTest: libmodprobe_tests\nChange-Id: I6f3a22758302f16b924e5a16f7af9bf35f1a56f3\n"
    },
    {
      "commit": "3085d957e8451d2dee7e3b9e73bf10e51b6da746",
      "tree": "aea20b987dce1e80a62fa1a1f08dc691da9382a2",
      "parents": [
        "001a5df898288890f1c6ba2cd8dad1c391265c2c"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Aug 04 08:28:36 2020 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Aug 04 08:28:36 2020 -0700"
      },
      "message": "libmodprobe: remove SetMinimumLogSeverity() from constructor\n\nOnly the parent executable, not libraries should set this value.\n\nNote that `modprobe` in toolbox and first stage init, the two primary\nusers of this library already set this same minimum log severity.\n\nTest: build\nChange-Id: I888968deede3323cc270efc3cfd1b40fc521d2da\n"
    },
    {
      "commit": "ce30bb8e4b276a0dd2aecbab6fe6f59b081b6f91",
      "tree": "191effd3255982d75cd00353e58f6af6cb4d6114",
      "parents": [
        "63368beaba164d977d7ee57244d12b143661a014"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 26 06:33:15 2020 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 26 22:30:21 2020 +0000"
      },
      "message": "libmodprobe: remove unused EnableVerbose() method\n\nmodprobe command no longer uses EnableVerbose, opting to do the\nassociated operations directly.\n\nTest: compile\nChange-Id: Iffc8324f37f34de4eeb9a27e92fdf5524afa2220\n"
    },
    {
      "commit": "2ab39411eb42461fe01f2cb993a4fb8c6c58c8a8",
      "tree": "5a0499fa52e4af5eab3aa79334a2f16371c038a0",
      "parents": [
        "f9033832cfc203de9453f016b2e497789e017588",
        "1ab2c02324972e7c3355ee40e52549acd0e345f9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 16 22:22:13 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 16 22:22:13 2020 +0000"
      },
      "message": "Merge \"libmodprobe: improve error reporting.\""
    },
    {
      "commit": "1ab2c02324972e7c3355ee40e52549acd0e345f9",
      "tree": "292e382d1e07e2189c649983f5b012a9fec14dc8",
      "parents": [
        "e4424ff4223974a1228369dbdc3f1efc7254b9b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 16 11:48:28 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 16 11:48:28 2020 -0700"
      },
      "message": "libmodprobe: improve error reporting.\n\nBug: http://b/159064719\nTest: treehugger\nChange-Id: Ie3ea73a934a30b4674b30fd3823f59f062418ac7\n"
    },
    {
      "commit": "9debda17abd8c7043cf2fe2333b89c9f25cf1504",
      "tree": "b02c1e43598e647806a1c8923f2ddec1f982e307",
      "parents": [
        "703fb74fb5d7b806f188f2814f8dd770add26eeb"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jun 16 05:14:06 2020 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jun 16 05:14:09 2020 -0700"
      },
      "message": "modprobe: Use more inclusive language for libmodprobe (Part Deux)\n\nRemove blacklist\n\nTest: none\nChange-Id: I14ed08390a7db0b4b962343c61d60230751047ce\n"
    },
    {
      "commit": "703fb74fb5d7b806f188f2814f8dd770add26eeb",
      "tree": "516a2719ec342905b0e5a2dc70cf20069146e8e8",
      "parents": [
        "9287716a1c7fe375a4c6031e6e31d98501bfdebd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jun 15 11:51:59 2020 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jun 15 12:51:38 2020 -0700"
      },
      "message": "modprobe: Use more inclusive language for modprobe and libmodprobe\n\nblacklist is replaced with blocklist.\n\nTest: none\nChange-Id: I59f9fde5900b9aee82aca1eab4a6ded3d136063b\n"
    },
    {
      "commit": "b0c4881ea924d21ca819b6cf999e97c3efd040b4",
      "tree": "2656a389aa81d9c4a3d0e4677b60a80bc2634997",
      "parents": [
        "a8b8d108e58b74ffaff0881b96b8cc3acf7c1f53"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Fri May 29 16:30:33 2020 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Wed Jun 03 10:51:45 2020 -0700"
      },
      "message": "add libmodprobe api to query the number of modules loaded\n\nIn the short term this will be used to help implement support for\nmultiple kernel module directories but it may be useful in other\ncontexts as well.\n\nBug: 157645635\nChange-Id: I15a252b6e9394292c8f3557ed65112c935830441\n"
    },
    {
      "commit": "4c59323dc6357539e0e11ee57d1365327a487d40",
      "tree": "a19299fced1822be08d60f2f999e1ea200df5968",
      "parents": [
        "b480dc4f3f96e240c67b132cb4a508f7f9d141ca"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Fri Apr 03 17:47:10 2020 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Mon Apr 06 12:24:16 2020 -0700"
      },
      "message": "first_stage_init: load modules in modules.load.recovery in recovery\n\nIn recovery mode, load modules from modules.load.recovery if it\nexists. Otherwise load from modules.load as usual.\n\nChange-Id: I7636bb5958ed10ae9a66015f04f168129618272f\n"
    },
    {
      "commit": "373a3cadd7d0d221e1c3e1976a0fb0c6a1c34f9f",
      "tree": "a90243c25eed12c77d41e35b6360b34be770f36f",
      "parents": [
        "ee08c978d2d34b3ddac420f9cbdc6ec65286c1e8"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Fri Dec 06 17:08:09 2019 -0800"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Fri Dec 27 13:39:23 2019 -0800"
      },
      "message": "libmodprobe: parse kernel command line for module options\n\nBug: 145808811\nTest: atest libmodprobe_tests, verify on flame\nChange-Id: I0b41b1610fe13ae526d38f029da888f6f0d8a02d\n"
    },
    {
      "commit": "d478271b2b793856eb098a0c580d44f02efc4837",
      "tree": "652ee8561148335dda1a77a9d5ac8c2549127ff5",
      "parents": [
        "46452100977f66956175793a9557b0263bb58e0b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 29 09:32:09 2019 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 31 10:30:35 2019 -0700"
      },
      "message": "libmodprobe: add strict bool argument to LoadListedModules\n\nContinue loading remaining modules after error if strict flag false.\n\nTest: libmodprobe_test\nBug: 141311820\nChange-Id: Ib21d4eade1254b16621e7bf2c9efaa173092e7c7\n"
    },
    {
      "commit": "8c1051918e1aaf7610ddb0e6ef5cb6d97abe3d82",
      "tree": "cd2e211b59ec1740d0f55b4e11a4d4164c845aa7",
      "parents": [
        "f77c98a7804f7017c9c2c4634a90ce7acab86238"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 29 08:38:55 2019 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 30 07:20:18 2019 -0700"
      },
      "message": "libmodprobe: Do not reload modules previously instantiated\n\nFor modprobe operation.\n\nFor an interlocking driver set of about 50 modules, the impact of\ntheir dependencies resulted in a 30 second impact in boot time\ntrying to load previously loaded modules. This impact is handily\neliminated by keeping a list of modules paths that have been loaded\nand skipping them proactively.\n\nTest: Confirmed device boot and 50 module set of drivers functions.\nTest: libmodprobe_tests\nBug: 142938937\nBug: 140827934\nChange-Id: Iccd11399d6043b38cbd5f93578ee202022e7770c\n"
    },
    {
      "commit": "b02f9b549c2958738cd11176b1ac0da2311c1ec2",
      "tree": "eb9ec383db71ed283a60fc218abd743717578536",
      "parents": [
        "0d061b258a4851741a3ec18b580f93300e4a7c26",
        "64a553451a5890800978cad84f75d85e185a6355"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 07 17:09:09 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 07 17:09:09 2019 +0000"
      },
      "message": "Merge changes from topic \"toolbox-modprobe\"\n\n* changes:\n  toolbox: add modprobe\n  libmodprobe: add verbose mode\n  libmodprobe: add GetAllDependencies\n  libmodprobe: add support to list modules\n  libmodprobe: add support for a blacklist\n  libmodprobe: support parameters in LoadWithAliases\n  libmodprobe: add support to remove modules\n  libmodprobe: make name canonical in LoadWithAliases\n  libmodprobe: make available in vendor\n"
    },
    {
      "commit": "ded44c06be23dc7447fb3e3f33f7d998c418657e",
      "tree": "8ebe1ee28f98349d1c400d5b4c94ef1029518696",
      "parents": [
        "781aa78ee25fca2bb27a9b724ae111f9581e63f7"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Thu Aug 01 16:03:02 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: add verbose mode\n\nChange-Id: I2be18320461cd712a4828400b8f29bb5f07c801f\n"
    },
    {
      "commit": "781aa78ee25fca2bb27a9b724ae111f9581e63f7",
      "tree": "668e5b4ae072eb656323516a3657612ae6bc5f5c",
      "parents": [
        "012cfa19b0a3105089ba932f32b286e4129fe79a"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Thu Aug 01 14:55:07 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: add GetAllDependencies\n\nAdd a method to retrieve the dependencies (both hard and soft) of a\nmodule.\n\nChange-Id: Ie44ceb3e36856bb1a3e68c5d3c0d55a38deb0ef9\n"
    },
    {
      "commit": "012cfa19b0a3105089ba932f32b286e4129fe79a",
      "tree": "2a1c6ecbb68f2c4a085c12ac2d48762e7b85797d",
      "parents": [
        "e31f840a0a081cca2ab2a418c9611a01e3b54a98"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Wed Jul 31 15:55:00 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: add support to list modules\n\nList the known modules with a name matching a given pattern.\n\nChange-Id: I7f6bd1f09a688c66682f94c5837e61d7dc61c1f7\n"
    },
    {
      "commit": "e31f840a0a081cca2ab2a418c9611a01e3b54a98",
      "tree": "d543e06c1376079e5fa79476592442302aeacb22",
      "parents": [
        "13700a69d382d7b4482f63317b6eaf2e3214e012"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Wed Jul 31 14:34:52 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: add support for a blacklist\n\nIf the blacklist is enabled, blacklisted modules are treated as though\nthey are not present.\n\nChange-Id: Ie8712f24298e78f92d5028b1ca3a8a3e07a9190a\n"
    },
    {
      "commit": "13700a69d382d7b4482f63317b6eaf2e3214e012",
      "tree": "b58ddcf5ac48845b08d410b658d1587bba0d9381",
      "parents": [
        "bb58b0157454ad4f066f098977e37d0494312bae"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Wed Jul 31 09:59:48 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: support parameters in LoadWithAliases\n\nAdd support to specify module parameters in LoadWithAliases. These\nparameters will be appended to any which are specified for the module in\nmodules.options.\n\nChange-Id: I9aff1656ea397826f815b658b3b52c1892748601\n"
    },
    {
      "commit": "bb58b0157454ad4f066f098977e37d0494312bae",
      "tree": "e9295a610fedca5e2593b7d473dd7b36bf8911da",
      "parents": [
        "73b2928b9400ce679a1482fc072be9fa55d7a8cd"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Jul 30 11:58:11 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: add support to remove modules\n\nAdd a remove method which will unload a given module from the kernel,\nalong with any modules it depended on, assuming those modules are now\nunused.\n\nChange-Id: Ie66dc153ef1771f50e26421d38d3656e95954780\n"
    },
    {
      "commit": "73b2928b9400ce679a1482fc072be9fa55d7a8cd",
      "tree": "97b0c641237da8f4c586c682b706a8ffce515019",
      "parents": [
        "4104b8803a53638100d2aa751102358117052741"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Jul 30 16:03:44 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: make name canonical in LoadWithAliases\n\nMake the module name canonical in LoadWithAliases so it may be used\nmore easily from outside the class.\n\nChange-Id: I7ee496b77a2beea43a6b68daed7af42660747559\n"
    },
    {
      "commit": "4104b8803a53638100d2aa751102358117052741",
      "tree": "528efa44dcf8ddca0f5789a956085a22a00e91e2",
      "parents": [
        "e1d4e39064252815f4b169f4fb113bb72d63f016"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Jul 30 11:55:49 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Aug 06 13:58:13 2019 -0700"
      },
      "message": "libmodprobe: make available in vendor\n\nA toolbox implementation of modprobe will require libmodprobe.\n\nChange-Id: I7790576b828ad8cd5fae0c51926d8da9fb540d30\n"
    },
    {
      "commit": "025cad42690ef3b95ea774d3a6d8a04acff29d66",
      "tree": "59259a1e841b69057e57e02089839add27be72f0",
      "parents": [
        "e1d4e39064252815f4b169f4fb113bb72d63f016"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Mon Aug 05 11:27:08 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Mon Aug 05 11:29:01 2019 -0700"
      },
      "message": "libmodprobe: add OWNERS file\n\nChange-Id: I812c0420d982d2c927f40ca43545bdd15bc7b8be\n"
    },
    {
      "commit": "18b981ea7c5f0964941931a71fa55d880bec0c16",
      "tree": "b612ff6ede21cb2e7ea5447f33044608b5780fb5",
      "parents": [
        "716ba5d91d72f047c2bd017842b0a0a88e2b88ae"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Mon Apr 15 17:43:02 2019 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@google.com",
        "time": "Tue Jun 18 13:24:56 2019 -0700"
      },
      "message": "create libmodprobe, integrate into first_stage_init\n\nModprobe functionality is required both within first stage init and also\nas a standalone binary. Create a library for this using and extending\nthe logic in modalias_handler.cpp.\n\nFirst stage init will attempt to load modules from /lib/modules.\n\nBug: 129780532\nChange-Id: Ie3582358fd839c2f64e1b386b30ed551a86aef5d\n"
    }
  ]
}
