)]}'
{
  "log": [
    {
      "commit": "c7d28c7d78631aac6899598e48555f983921a69b",
      "tree": "6b651acbacebcfa688dbe325c8aab9587001a9f3",
      "parents": [
        "d45caf03eac13525166d95c17b01ac9987f3a309"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Mon Oct 25 14:28:10 2021 +0000"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Oct 26 01:17:54 2021 +0000"
      },
      "message": "Remove cid parameter from VirtualMachineService\n\nCid parameter has been passed just to identify the guest VMs. This makes\nthe server identify itself, with incoming vsock address.\n\nBug: 199259751\nTest: atest MicrodroidHostTestCases ComposHostTestCases\nChange-Id: I8dacfec80574fe765b96139cdecb6f3192728577\n"
    },
    {
      "commit": "86ca0164c04a07c3d3f102c4d23aed81534e4090",
      "tree": "98c0ad2e3f175165c4ccaa4059ad468f89cd69b2",
      "parents": [
        "e34247d2b57b3dcef4d2543a855865d83f474213"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Wed Oct 20 02:21:02 2021 +0000"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Wed Oct 20 02:21:02 2021 +0000"
      },
      "message": "Trigger onPayloadStarted before spawning payload\n\nIt\u0027s really unlikely, but onPayloadReady can be triggered before\nonPayloadStarted depending on the scheduler. This triggers\nonPayloadStarted before spawning payload, to ensure the callback order\nStarted - Ready - Finished.\n\nBug: 201266148\nTest: atest MicrodroidHostTestCases\nChange-Id: I5ab0a09d9547779c542e4c4191cf19fc0257163d\n"
    },
    {
      "commit": "6018a8c3d7cbdab1f3c01be9cfd9f92f8b9d5153",
      "tree": "0a6f356b49e88ddd7584336f40757473e4800a7a",
      "parents": [
        "eecbe72088c60f23dbc0c24bda6d09d02216745a"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Fri Oct 01 10:54:38 2021 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Fri Oct 01 10:54:38 2021 +0100"
      },
      "message": "Ensure we log error details on failure.\n\nIt turns out that Display for anyhow::Error only gives the top-level\nmessage, omitting the root cause(s). This is unhelpful when trying to\ndiagnose problems.\n\nBefore:\nE pvm_exec: pvm_exec: Binder call failed\n\nAfter:\nE pvm_exec: pvm_exec: Binder call failed\nE pvm_exec:\nE pvm_exec: Caused by:\nE pvm_exec:     Status(-8, EX_SERVICE_SPECIFIC): \u0027-1: Compilation failed: Status(-8,\n   EX_SERVICE_SPECIFIC): \u0027-1: mount_and_wait failed: Time out mounting authfs\u0027\u0027\n\nBug: 186126194\nTest: Presubmit\nChange-Id: Ib1c0cd7f523a75f3f98fb190843de79248c7bb96\n"
    },
    {
      "commit": "4eea5c775312d5598ae84cf9340d4c2ee7b2f711",
      "tree": "8b7b4475201cb0d396f76bae2abc82dee369660b",
      "parents": [
        "e7e732af6c3a7ebf65d24dcb530d8f20f329533e"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Sep 20 17:40:28 2021 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Sep 21 10:12:15 2021 +0100"
      },
      "message": "Log details if payload exits via signal\n\nBug: 200650431\nTest: Crash compsvc, see message in log\nChange-Id: I31e1ffc884378636d55a139118d4bd46d7d68865\n"
    },
    {
      "commit": "311b1206c9cef05a42d42a916ec7569e69dd0215",
      "tree": "2a73c94f507819d4d2d42b4ab65bee6f36f0fade",
      "parents": [
        "ad60847180422dacd93ab48454b1f5c270316fa8"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Sep 14 22:00:16 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Sep 14 22:00:16 2021 +0900"
      },
      "message": "microdroid_manager logs Err from main()\n\nplus a few more logs.\n\nBug: n/a\nTest: MicrodroidHostTestCases\nChange-Id: I848205a356d02f76112df2831a184ef59fe69e67\n"
    },
    {
      "commit": "ad60847180422dacd93ab48454b1f5c270316fa8",
      "tree": "32593fc3dbef0b4319a7886f7f58d2d8f1073361",
      "parents": [
        "7b08c575a043c1f856464ca58d59010b22037c99",
        "c8deb479237e3cb30a2dbf9fc9792777622531da"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Sep 14 00:57:30 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 14 00:57:30 2021 +0000"
      },
      "message": "Merge \"Store/Pass root digests of APEX payload\""
    },
    {
      "commit": "c8deb479237e3cb30a2dbf9fc9792777622531da",
      "tree": "ea42e00210c98f35f2183e3a4bb4a5ce2fb67343",
      "parents": [
        "64d96fb60240eebfcac8baa62d8776257465f7ff"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Mon Sep 13 13:48:25 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Mon Sep 13 18:32:21 2021 +0900"
      },
      "message": "Store/Pass root digests of APEX payload\n\nRoot digests of APEX payload are now collected by microdroid_manager and\nstored in instance.img and passed to apexd.\n\nBug: 199371341\nTest: MicrodroidHostTestCases\nChange-Id: I940347068400822f7d8140c3daf68036f553b087\n"
    },
    {
      "commit": "a41535be80a04e983e31e13b0617e0256cc4c963",
      "tree": "954abc07eba43fccd1a1af20e3cf17617eff8f96",
      "parents": [
        "64d96fb60240eebfcac8baa62d8776257465f7ff"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Sep 10 19:31:48 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Sep 13 15:38:30 2021 +0900"
      },
      "message": "Store public key of APK to instance disk\n\nOnce a VM is started with an APK, we shouldn\u0027t accept any update of the\nAPK if its signer has changed.\n\nFor now, this CL can be considered a no-op because we don\u0027t accept any\nupdate by comparing the root hash. However, in the future, when rollback\nprotection is supported, this change will make it possible to accept APK\nupdates if the public key remains the same.\n\nBug: 199143508\nTest: atest MicrodroidHostTestCases\n\nChange-Id: I2448faf4a8b9637571ebcc4bc49d3619129496d5\n"
    },
    {
      "commit": "4a9b3bf3688407fdb9040af3509758d96a841f9d",
      "tree": "15bc99f1867cf1893f7878313f2597405c04cb5b",
      "parents": [
        "2eb7f5763ec3ca2a0bc1c4f92a184a2975ff72e5"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri Sep 10 17:19:00 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri Sep 10 17:31:38 2021 +0900"
      },
      "message": "microdroid_manager: pass apex pubkeys to apexd\n\nMicrodroid_manager passes apex pubkeys from the instance.img so that\napexd uses them to verify APEXes.\n\nBug: 199371341\nTest: MicrodroidHostTestCases\nChange-Id: I9260e456a00e767a79c8121eb6b391978ece0ae3\n"
    },
    {
      "commit": "a6d11ebe9526c15a4563e0b8431258b3914cb6eb",
      "tree": "dbd938c8aa37cce665394e1e1b7f3c406a80ad5c",
      "parents": [
        "cb461548fbf38978b685429109970ba250783933"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri Sep 10 11:48:05 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri Sep 10 15:27:06 2021 +0900"
      },
      "message": "microdroid_manager: start zipfuse early\n\nMicrodroid_manager orchestrates sub tasks with more explicit\nevents.\n- starts zipfuse after APK verification is done \u0026 before reading config\n  from payload.\n- executes payload after apex_config is done.\n\nBug: n/a\nTest: MicrodroidHostTestCases\nChange-Id: I3bd7adf97b3aaa6709aea516d41d6c9002025207\n"
    },
    {
      "commit": "7a343f93ec267b861f38509a3b6e8a8f5b578fcd",
      "tree": "beb64fead0718ad02bf36937f7309fce63fbb9a2",
      "parents": [
        "1c2d75899633c0a57e076407b42781550138f85a"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Sep 08 22:53:11 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Sep 08 22:53:11 2021 +0900"
      },
      "message": "Microdroid stores APEX pubkeys in instance.img\n\nJust like APK\u0027s root hash, APEX pubkeys are stored in instance.img so\nthat in subsequent boots, pubkeys from payload APEXes are checked\nagainst ones in instance.img.\n\nBug: 198361718\nTest: MicrodroidHostTestCases\nChange-Id: I5385700e86b4962133df80b750208ce45cec2655\n"
    },
    {
      "commit": "f7dea25e630ef2087addb6865b58a76af4f8c992",
      "tree": "ac1b9285a8a14c2fc98661b79b5e620d67b3f592",
      "parents": [
        "bb4a98771df6583b7a39d128f4d2068fc4f3c425"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Sep 08 01:42:54 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Sep 08 10:55:56 2021 +0900"
      },
      "message": "Data written to instance.img has schema\n\n... so that we can store structured data. Currently the data is encoded\nin CBOR.\n\nBug: 193504400\nTest: atest MicrodroidHostTestCases\nChange-Id: I271b40f7d2c42fc42d793c36e27ca65cfaa9ba25\n"
    },
    {
      "commit": "bb4a98771df6583b7a39d128f4d2068fc4f3c425",
      "tree": "7f34593258246efe5fa05ffa59f5ccefd03bd784",
      "parents": [
        "e1fd1c8888811ebf0bed1cb5ae22528e581e1b5d"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Sep 06 15:59:21 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Sep 08 00:07:12 2021 +0900"
      },
      "message": "APK roothash is trusted\n\nThis CL completes the APK verification story in microdroid. Previously,\nthe roothash of an APK that apkdmverity uses came from the idsig file.\nThat file (and thus roothash in it) is untrusted because it\u0027s not signed\nby anyone. It is generated by virtualization service when the VM is\ncreated.\n\nWith this CL, the roothash becomes trustful. Specifically, the roothash\nis from the instance disk which is encrypted and signed using the per-VM\nsecret key. When the roothash in the instance disk is none, which\ncould happen during the initial boot of the VM, we do the full APK verification (by\nscanning every bits), and save the roothash in the instance disk. In the\nsubsequent boots, we skip the full APK verification, but instead compare\nthe roothash with the saved one. If they differ, the boot is halted.\n\n1) The start of apkdmverity and zipfuse is controlled by\nmicrodroid_manager. This is to NOT start them before the roothash is\nread from the instance disk. Previously, this was impossible because\nthey are started by init while microdroid_manager is running in\nbackground.\n\n2) apkdmverity now uses the bootstrap bionic libraries, because it is\nstarted far before APEXd activates APEXes.\n\n3) microdroid_manager passes the roothash (read from instance disk) to\napkdmverity via a new system property `microdroid_manager.apk_roothash`.\nThis is preferred over to letting microdroid_manager directly execute\napkdmverity and pass the roothash as a commandline argument. We don\u0027t\nwant to allow microdroid_manager to fork/exec an executable other than\napp payload; there already is a selinux neverallow rule for it.\n\n4) microdroid_manager waits for a new sysprop `linkerconfig.ready` to\nbecome `true` before it executes an app payload. Previously, this was\nimplied because microdroid_manager waits for /mnt/apk which is created\nby zipfuse which in turn is executed after the linkerconfig is ready.\nSince zipfuse now is started much earlier, we no longer can rely on the\nimplicit dependency.\n\nBug: 193504400\nTest: atest MicrodroidHostTestCases\nTest: run `adb shell /apex/com.android.virt/bin/vm run-app\n/data/local/tmp/virt/MicrodroidDemoApp.apk\n/data/local/tmp/virt/MicrodroidDemoApp.apk.idsig\n/data/local/tmp/virt/instance.img assets/vm_config.json`\n\n... two times.\n\nIn the first run:\n\nmicrodroid_manager[128]: payload verification successful. took 85.705852ms\nmicrodroid_manager[128]: Updating APK roothash: A4BC793C78E1A...\n\nIn the second run:\n\nmicrodroid_manager[128]: payload verification successful. took 56.789795ms\nmicrodroid_manager[128]: Saved roothash is trustful. Not updating\n\nWhen the same command is invoked after the apk is intentionally\nmodified, it fails as expected:\n\ninit: Service \u0027microdroid_manager\u0027 (pid 128) exited with status 1\noneshot service took 0.202000 seconds in background\n\nBug: 193504400\nChange-Id: I469116d806cf3dae66fe41c04fdfd6bdb843edab\n"
    },
    {
      "commit": "d058756a5cce0f24f0fc951abe1772a558ad7b72",
      "tree": "36591c5b0158f83fbe3c033543429e12bcf9bb83",
      "parents": [
        "3787594acb19f4e8fcdea8f2fdf1403067b01957"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Wed Sep 01 21:27:32 2021 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Wed Sep 01 21:28:43 2021 +0900"
      },
      "message": "Make port numbers aidl constants\n\nTest: atest MicrodroidHostTestCases\nChange-Id: I5e1bcfc8f76bf4f4e7ac2441d5947e37f42bc58a\n"
    },
    {
      "commit": "3787594acb19f4e8fcdea8f2fdf1403067b01957",
      "tree": "9756249f921fa6bccdf3688d5af7baebaf8c17ed",
      "parents": [
        "0871dbabe066efc3f8772e8c34faa0242a5e4c02",
        "21ce2c5b1eefb6ab755a3b81ff159da4e381ea99"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 01 09:38:41 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 01 09:38:41 2021 +0000"
      },
      "message": "Merge \"Store apk root hash to the instance disk\""
    },
    {
      "commit": "21ce2c5b1eefb6ab755a3b81ff159da4e381ea99",
      "tree": "465079793c30bdeae86e432f6faa5f286b5d34a5",
      "parents": [
        "c5dad8a818c09a7d3428b49f573cc7211377e1e4"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sat Aug 28 02:32:17 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Sep 01 01:58:22 2021 +0900"
      },
      "message": "Store apk root hash to the instance disk\n\nThe instance disk has been created, but hasn\u0027t actually been used. This\nCL is the first step towards actually using it. Specifically, this CL\n\n* provides routines for navigating the instance disk. The disk consists\nof a disk header, followed by partitions each of which consists of a\nheader and payload. Each partition is dedicated to a program loader like\npVM firmware, Android Boot Loader, and microdroid_manager. A partition\nis identified by UUID and this CL provides a routine to locate the\npartition for a given UUID.\n\n* provides routines for reading and writing on payload in a partition.\nThe data is stored encrypted when it is written and is decrypted when\nread. The key is currently hard-coded but, it will eventually be derived\nfrom the sealing CDI from the previous stage.\n\n* Root hash of an apk extracted from the idsig file is stored to the\ndisk. Note that the stored root hash is not yet used by apkdmverity. It\nshall be done in a follow-up change.\n\nBug: 193504400\nTest: boot microdroid twice. check that the root hash is written to the\ndisk during the first boot, and then read during the second boot. Also\ncheck that the two root hashes are the same.\n\nChange-Id: Ia1afcda4d8444ad52a47ebcc659b2698159da816\n"
    },
    {
      "commit": "2444af96c916f336a9a6feb71e42fd166a746a73",
      "tree": "ed23475bc5a2765c3c8b21f2d3052b289be5c2e4",
      "parents": [
        "cef9fef971f8842863bced040af6d4490ae3d36b"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Aug 31 01:22:50 2021 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Aug 31 20:19:35 2021 +0900"
      },
      "message": "Add onPayloadFinished callback\n\nonPayloadFinished will be called from the VM when the payload has just\nfinished.\n\nBug: 195381416\nTest: atest MicrodroidHostTestCases\nChange-Id: I9bb68c2192ee19a40634d10ba77af9d4c3ec30d0\n"
    },
    {
      "commit": "7f61fe7486384fc2cd59032691e7f85f2041f2d9",
      "tree": "56510d60aa8c4191b9de64e4485355490777f968",
      "parents": [
        "1b95f2ef76d89162b0b440081c07e033faae6325"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Fri Aug 20 20:50:47 2021 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Aug 24 21:15:42 2021 +0900"
      },
      "message": "Refactor callback and make payload stream duplex\n\nGuest VMs now directly call onPayloadStarted to tell the host that their\npayload started. And the stream passed by onPayloadStarted is now duplex\nso it can also be used as an input stream, which will be fed to the\npayload\u0027s stdin.\n\nBug: 191845268\nBug: 195381416\nTest: run MicrodroidDemoApp and see output\nTest: atest MicrodroidHostTestCases ComposHostTestCases AuthFsHostTest\nChange-Id: Ic72045b4e4d11ab1efb14cb2e95de319ca8f9f97\n"
    },
    {
      "commit": "1b95f2ef76d89162b0b440081c07e033faae6325",
      "tree": "42700a29c6539a7453f60228fc63b4ab93f94ad9",
      "parents": [
        "0a2484304d22c9350ffc0ae805c7794c9302769a"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Thu Aug 19 13:17:40 2021 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Aug 24 14:24:27 2021 +0900"
      },
      "message": "Add VirtualMachineService skeleton code\n\nVirtualMachineService (the name isn\u0027t yet fixed) is a binder service\nbetween virt service and guest VMs. Guest VMs can notify that it\u0027s ready\nover VirtualMachineService.\n\nBug: 191845268\nTest: atest MicrodroidHostTestCases\nChange-Id: I80c529f104fe184a1bdbee25805c7871392336d5\n"
    },
    {
      "commit": "d4e035e2043972fb1eda0c895f699fd683b68765",
      "tree": "57dcc6bb43ba6c5ec73cfc32074bf58ead12ad6d",
      "parents": [
        "eff4e1520ef2a06e8631fab39e6c420726beb72e"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Aug 18 21:19:41 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Thu Aug 19 11:15:23 2021 +0900"
      },
      "message": "Update test key for signing APK payloads\n\nFor now apkverify doesn\u0027t support DSA key algorithm. Replacing test keys\nfor CompOS APK and MicrodroidTestApp APK with RSA keys.\n\nThe new keystore was created by `keytool ... -keyalg RSA -keysize 2048\n-validity 10000`.\n\nBug: 197052981\nTest: MicrodroidHostTestsCases\nChange-Id: I3ad59d59d903edc2c8fb960fd001f3cfca1e599f\n"
    },
    {
      "commit": "19c1d6c70e11c993e08c1f479a1af1552b66c7b8",
      "tree": "25b20928ec701f9fe24613d3f1c55e3155a2ac07",
      "parents": [
        "5d94bfcd79d9c0e2639b09201b1d3a153ad23a6f"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri Aug 06 14:08:16 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Aug 10 03:11:35 2021 +0900"
      },
      "message": "microdroid_manager: verify APK/APEXes\n\nEven though libapkverify doesn\u0027t do much verification for now, having\nit in use would make CI detect errors in the future.\n\nTODO:\n- zipfuse should wait until APK is verified.\n- boot should abort when verification fails.\n\nBug: 190343842\nTest: MicrodroidHostTestCases\nChange-Id: I221be1c7d9a0bfcd312593d3958f950311b67af5\n"
    },
    {
      "commit": "2693882629b61cca8e6390afd9853c502712a2f9",
      "tree": "cb7c07ed2f539a32ee349ac5850aef870468a82a",
      "parents": [
        "9b1753c8e2579235e4cebc07c125888d613076a6",
        "482704c33389434741a32b13aa0a4090e0819fa3"
      ],
      "author": {
        "name": "Joel Galenson",
        "email": "jgalenson@google.com",
        "time": "Tue Aug 03 14:20:06 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 03 14:20:06 2021 +0000"
      },
      "message": "Merge \"Migrate to the librustutils system property bindings.\""
    },
    {
      "commit": "482704c33389434741a32b13aa0a4090e0819fa3",
      "tree": "5e0bccf30eab341716a458d1035f0f41d3658139",
      "parents": [
        "1869cd95ed4f8263e438d285f66ba91a2e072e44"
      ],
      "author": {
        "name": "Joel Galenson",
        "email": "jgalenson@google.com",
        "time": "Thu Jul 29 15:53:53 2021 -0700"
      },
      "committer": {
        "name": "Joel Galenson",
        "email": "jgalenson@google.com",
        "time": "Thu Jul 29 15:53:53 2021 -0700"
      },
      "message": "Migrate to the librustutils system property bindings.\n\nBug: 182498247\nTest: Build\nChange-Id: Ibd1937d9b44ed114dff0dacaabd6f20b81988b0a\n"
    },
    {
      "commit": "e706c9f3a98375af2c2ad27f5917196f7171def3",
      "tree": "5fbca1ab39b636039584766a4e8ff80c7b7e54a6",
      "parents": [
        "f207f09e39ad6117b4a21ca5769c28c46b10e416"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Thu Jul 29 17:21:20 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Thu Jul 29 17:22:10 2021 +0900"
      },
      "message": "Microdroid_manager starts before apexd\n\nMicrodroid_manager should verify payloads (APEXes, APK) before anything\nelse (including apexd reading APEXes, apkdmverity/zipfuse reading APK).\n\nIn order to start before apexd, it should be \"bootstrap\" process (since\nit can\u0027t rely on any apexes including bionic).\n\nBug: 190343842\nTest: MicrodroidHostTestCases\nChange-Id: I682555822fb8f73ea160c4a2ac379549dde35329\n"
    },
    {
      "commit": "729a9a042680307e882b86d52e261ece080b6453",
      "tree": "cda2dc4099609c57a9e81e1915e5c69e28524353",
      "parents": [
        "8cbf1bc40599d6e5ee0a166d4bc8fed5b14d4d83"
      ],
      "author": {
        "name": "Joel Galenson",
        "email": "jgalenson@google.com",
        "time": "Tue Jul 20 12:59:40 2021 -0700"
      },
      "committer": {
        "name": "Joel Galenson",
        "email": "jgalenson@google.com",
        "time": "Wed Jul 21 09:44:53 2021 -0700"
      },
      "message": "Migrate keystore2\u0027s Rust system library bindings to bionic.\n\nBug: 182498247\nTest: Build\nChange-Id: I1f1bbf4110f36fe6970373c0c51096796ed684ab\n"
    },
    {
      "commit": "6f3e5fe3885437c0a88e52a7c34c24c41df52971",
      "tree": "adde2548e2e29d51dd89cdd1992b03905ccd6f9f",
      "parents": [
        "a003f85c370bedd4762c5ddbf82bbf3ffdab98f2"
      ],
      "author": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Fri Jul 02 12:38:21 2021 +0000"
      },
      "committer": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Tue Jul 13 13:37:42 2021 +0000"
      },
      "message": "Pass a VM secret to KeyMint from microdroid_manager\n\nThis secret will be used to protect the keyblobs so that only a VM that\ngets the same secret will be able to use those blobs. It is held in a\nsystem property so that it won\u0027t be lost should KeyMint happen to\nrestart and has SELinux rules to ensure only microdroid_manager can set\nthe value and only KeyMint can read the value.\n\nBug: 190578423\nTest: atest MicrodroidHostTestCases\nChange-Id: I675cc9d6e9942090a761b83a6b9456b5c9909747\n"
    },
    {
      "commit": "8611a6c9f633a680dec9e089fd9a57929eb003fb",
      "tree": "f2a21e40bf90f77ce0a13d8294870fa5f50a5362",
      "parents": [
        "70bbb1fae30248f9e73bf583c1a9fac26486b949"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jul 09 18:17:44 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Jul 13 10:58:41 2021 +0900"
      },
      "message": "Add the onPayloadStarted callback API\n\nThe API is called back to the client when the payload starts in the VM.\nThe standard output from the payload is accessible via the\nParcelFileDescriptor argument as well.\n\nBug: 192904048\nTest: run MicrodroidDemoApp and check that the payload output is shown.\n\nChange-Id: Ie2afbb455496eec21617b94940ed4386a4865876\n"
    },
    {
      "commit": "14e5a8e3bceac5237d80e038503894b77c265e07",
      "tree": "c7a45036100317353cfdc240a0c79fe96ae6f8c2",
      "parents": [
        "9900f3d73372b0f10439a70d12d1a5446ac6c348"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Jul 06 20:48:38 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Jul 06 20:48:38 2021 +0900"
      },
      "message": "Rename payload metadata partition\n\n/dev/block/by-name/metadata is used by others as well.\n\nRenamed it as payload-metadata.\n\nBug: 191097666\nTest: MicrodroidHostTestCases\nChange-Id: I873ee2acbe38772e59c96b3904023ac0d1573621\n"
    },
    {
      "commit": "3f62aae8c5b0842118c7d787a8a93d0e00bc4d9e",
      "tree": "b3806e0d0a2be78336a9426b6ecac107f68720ff",
      "parents": [
        "545e7d6f17f1c0461a39371d22fee4f922e21d11",
        "efdda8a80d041f40417a4d2d76fdbe5129d2e183"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Mon Jun 28 00:34:08 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 28 00:34:08 2021 +0000"
      },
      "message": "Merge changes I393abe14,Ifd7d2ef6\n\n* changes:\n  Remove unused write function\n  Extract libmicrodroid_metadata (rust_library)\n"
    },
    {
      "commit": "f1e0086205dc2216e646b219a87666fc3c76864a",
      "tree": "d4088f2a3f0bb506d1f6c13f34de5d4f316663e0",
      "parents": [
        "e2c2df0defa8b2dd38228d09f3c7d7ba3647085e"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri Jun 25 12:02:33 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Sat Jun 26 04:37:51 2021 +0900"
      },
      "message": "Extract libmicrodroid_metadata (rust_library)\n\nfrom microdroid_manager. Virtualizationservice will use it to make a\npayload disk image.\n\nBug: 190503456\nTest: m\nChange-Id: Ifd7d2ef60b7a63dcc373a78dbcbe26f472dc1bc7\n"
    },
    {
      "commit": "79b88017dc1fe60f852edccd400b936795b2c0d8",
      "tree": "32f0dfb647e17682396e2cb1e14b39a4492f8ca3",
      "parents": [
        "7f55256b8acbcac29ceccbc3f335890fe379e608"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 25 13:06:25 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 25 18:45:21 2021 +0900"
      },
      "message": "microdroid_manager uses kernlog\n\nBug: 189805435\nTest: atest MicrodroidTestHostCases\nadb shell into the VM and execute logcat\n\nChange-Id: I2724773c237c4ae208671ee206896679488ba7da\n"
    },
    {
      "commit": "607191c2dcfd15196937319862193846f3290d1a",
      "tree": "8c6b43c4abbc284487248d70f3de11ff03a9094f",
      "parents": [
        "c7a69b25a659efee62dfb1555a2764838ea40bf8"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Jun 16 10:32:02 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Jun 16 10:57:59 2021 +0900"
      },
      "message": "microdroid_manager prints to kmsg\n\nUntil we import kernlog, use stdio_to_kmsg as a workaround.\n\nBug: 189805435\nTest: Follow microdroid/README.md\n      see the microdroid_manager\u0027s log messages\nChange-Id: I0b178f8fe0751b536253a31c2fc322dc2db51b90\n"
    },
    {
      "commit": "038b73e694ecf9b620ab9e40ad364290782ff01d",
      "tree": "52557e1aabc700deefe2ec50ff7db61fd68899c4",
      "parents": [
        "0f68cdd65d835122333202ae49f1d5f4191b5e5e"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jun 16 01:57:02 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jun 16 02:09:27 2021 +0900"
      },
      "message": "microdroid_manager waits for task to exit\n\nIf microdroid_manager doesn\u0027t do the wait, the child process which might\nnot have run to completion is force killed by init, because\nmicrodroid_manager is registered as a oneshot service.\n\nBug: N/A\nTest: atest MicrodroidHostTestCases\nChange-Id: I5748fbbb233182f0d8ca885bd94c7d15149aae82\n"
    },
    {
      "commit": "634e2d7048cdd68f3f062269d938ce3349212820",
      "tree": "e7b20c9c96f376616c8c54b0483ff18b405e7fb0",
      "parents": [
        "4df1a54ab26833b62b8476356fd8faa7ec157d43"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Thu Jun 10 16:27:38 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Thu Jun 10 23:30:19 2021 +0900"
      },
      "message": "microdroid_manager executes a task via microdroid_launcher\n\nTask can be one of \"executable\" or \"microdroid_launcher\".\nWhen it is a microdroid_launcher task, microdroid_manager find the\ntarget library in /mnt/apk/lib/{abi}/, and then executes it via\nmicrodroid_launcher.\n\nBug: 186396080\nTest: MicrodroidHostTestCases\nTest: /system/bin/microdroid_manager in microdroid launched with\n   default configuration.\n   it should run testapk\u0027s MicrodroidTestNativeLib.so\nChange-Id: I065f5c5d789e6a96fd658a52ed8533f42b1cbc42\n"
    },
    {
      "commit": "7457348813b0a668755125fe16e577a21aa02dce",
      "tree": "cb20da1b8a96138901c1a1513cb3863b12d5930e",
      "parents": [
        "8c0de55863b8da5dabd13f585bb33dd72807197c"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Jun 08 17:10:21 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Jun 09 10:53:54 2021 +0900"
      },
      "message": "Rename \"signature\" to \"metadata\"\n\nBug: 186396424\nTest: atest ApexTestCases MicrodroidHostTestCases\nChange-Id: Id401d33edc6c6d4aba2b5982c8ab75820faea793\n"
    },
    {
      "commit": "f48ceb41252f39162f8ff4294b52591ef66847e8",
      "tree": "70d91cdbac3be6a113f69f8becb793c8eb3d1bb8",
      "parents": [
        "16186d9519104c4bf21de53ef1f660b4c6697cde"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Jun 01 18:00:04 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Jun 01 21:39:13 2021 +0900"
      },
      "message": "microdroid_manager: waits for a config file\n\nIdeally, microdroid_manager should start zipfuse only if necessary and\naccess the VM config file from the APK via fusefs when it\u0027s ready.\n\nBut for now zipfuse doesn\u0027t report when it\u0027s ready to access files in a\nzip file. So, microdroid_manager should wait a while to access the\nconfig file when it is from the APK.\n\nBug: 189301496\nTest: MicrodroidHostTestCases\nTest: microdroid_manager_test\nChange-Id: I0dc304a8f135f52a846fc1bb6f4e476f6162697a\n"
    },
    {
      "commit": "347d9f2bee8fd2fe7b6b5e99f7e5bc70fb885e39",
      "tree": "491815b8d5ba307001c38c09000e5a56e417d1d5",
      "parents": [
        "2c770e73a726aa29aa78e860b6d502ebb6a39d12"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri May 28 00:05:14 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Fri May 28 07:30:44 2021 +0900"
      },
      "message": "microdroid_manager: initial impl\n\nIt is started by init in microdroid and executes a command specified in\na VM payload config.\n\nBug: 189301496\nTest: MicrodroidHostTestCases\n  (in a microdroid, run /system/bin/microdroid_manager manulally)\nChange-Id: I85c7e370d4a0dcf58b4aafbe6e9fba73e69c2a44\n"
    }
  ]
}
