)]}'
{
  "log": [
    {
      "commit": "4644606d8b01077d20de950e0d323c17e7a88b1e",
      "tree": "8ba1063513aaddc647745fd66786f5264f02bb2d",
      "parents": [
        "be453f2959206b6b4100c4b6a4bedffd6bce2057"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 25 13:18:18 2022 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 20 14:13:09 2022 +0000"
      },
      "message": "vmclient: Spawn child virtmgr and connect to it\n\nInstead of connecting to the global virtualizationservice, make\nvmclient::connect() spawn a child virtmgr process and connect to it via\nRpcBinder.\n\nBug: 245727626\nTest: atest -p packages/modules/Virtualization:avf-presubmit\nChange-Id: I456a151071a5f0d8448b11b89d88c1c2892f911f\n"
    },
    {
      "commit": "a2125ddf7578f766b5e5ea7f9c395348d62f14fc",
      "tree": "792db278970443a7c61b438ea9e3eeeae2291643",
      "parents": [
        "1806205e1dd43a8a46fcd969d68fbd56cd61a409"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 14 16:37:44 2022 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 19 09:30:02 2022 +0000"
      },
      "message": "rpc_binder: Update users of RpcSession\n\nBug: 245727626\nTest: atest -p packages/modules/Virtualization:avf-presubmit\nChange-Id: Ic6d57bac2fba09a0061334b27bdc81c817734532\n"
    },
    {
      "commit": "49f96f56dadbb93af5bd59ced5b78ace21b15e8f",
      "tree": "981a4e4f70071a13c2c668825f62a301c718d5cf",
      "parents": [
        "f18e116c007d054f83ca5bf261c48696556f329a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 16 21:29:13 2022 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Dec 18 23:13:44 2022 +0000"
      },
      "message": "Send atoms via VirtualizationServiceInternal\n\nIn preparation for spliting VS into two services (global and\nUID-specific), forward all statsd atoms via\nVirtualizationServiceInternal. This is necessary because statsd\nwill not accept atoms from the client-specific VS instance, as it only\naccepts atoms from known UIDs.\n\nBug: 245727626\nTest: atest MicrodroidHostTestCases\nChange-Id: I779bbc77a83665a88c9e12d3ad25824e7857514b\n"
    },
    {
      "commit": "3e98d29f4ab3469bf5fcee362c4f5d5104a7b16b",
      "tree": "174944db12a32aadf41cbe459ccc155b7f6252d6",
      "parents": [
        "51a279feb55e712738510631cde10c6cdf93aafb"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Wed Dec 14 15:18:22 2022 +0000"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Wed Dec 14 15:32:15 2022 +0000"
      },
      "message": "Remove onRamdump callback\n\nRamdumps are still written to tombstoned, but we remove the callback\nto the client.\n\nRemove the option from vm that allows the ramdump to be written elsewhere.\n\nI could have left the callback from VS and just ignored it in our\njavalib, but adding extra work to all clients just to support the\nniche vm usecase felt wrong.\n\nAlso fix a type.\n\nBug: 262538986\nBug: 261037705\nTest: atest MicrodroidTests\nChange-Id: If60ac5033a8b077fc35b499e056461782b5027fe\n"
    },
    {
      "commit": "7c459e8564f80283279014f804812b3e66711edf",
      "tree": "53e8d199144ccd2145888abaa7a2fcb7a33bc5cf",
      "parents": [
        "48de1258ce28bdaba984ed1fd77375ee31d32869"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Dec 06 12:21:49 2022 +0000"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Dec 06 13:38:05 2022 +0000"
      },
      "message": "Give a better name to STOP_REASON_ERROR\n\nIt indicates crosvm failed to start the VM, so\nSTOP_REASON_START_FAILED.\n\nSlightly gratuitously I also renamed the internal DeathReason - mainly\nbecause this is just a much clearer name.\n\nI didn\u0027t change the statslog version, because that would just be too\ncomplicated.\n\nBug: 261037705\nTest: atest MicrodroidTests\nChange-Id: I5effdba86ea49ff919d82810926fb14ccbbd8499\n"
    },
    {
      "commit": "f30982bdc4d17003d8a6390849259e7f7a65d5e4",
      "tree": "730878898236aa115768448041cee63c9929be09",
      "parents": [
        "f52ea1400ef26734c1f89f531ae350cc79d0f581"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Fri Nov 18 11:50:32 2022 +0000"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Nov 21 14:46:24 2022 +0000"
      },
      "message": "Remove onPayloadStdio\n\nMostly this is removing the onPayloadStdio callback and everything\nassociated with it in the Java \u0026 Native APIs, and removing the\nimplementation, thereby reverting much of\ncommit 451cc9680119f40c0deeb52e74c776055c5bd2db.\n\nSlightly randomly, ensure all our native API functions enable logging.\n\nBug: 253221932\nBug: 243512115\nTest: atest ComposHostTestCases MicrodroidTests\n\nChange-Id: Ib7d1491e264539ffcc40442fdf419ce50d8cecf5\n"
    },
    {
      "commit": "451cc9680119f40c0deeb52e74c776055c5bd2db",
      "tree": "50a694727c74e2c81944704e9bbed734b2de3bac",
      "parents": [
        "b28124b02b2de9d0864e4deb53f755023df2c4ef"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Oct 14 14:08:12 2022 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 15 11:25:38 2022 +0000"
      },
      "message": "Remove onPayloadStarted stream argument\n\nmicrodroid_manager creates a vsock connection with the host and\nredirects the payload\u0027s stdin/stdout/stderr streams over it. This may\nnot necessarily be a securiy issue if the app never writes any secrets\nto its standard output, but it would be safer to not open up\na communication channel like that by default. If the payload wishes to\npass its logs to the host, it should open up the connection explicitly.\n\nRemove the vsock connection, the virtualizationservice server and the\ncorresponding file descriptor argument of onPayloadStarted() callback.\nInstead, provide onPayloadStdio() that the payload can optinally call\nto set up the connection.\n\nBug: 245727626\nBug: 253221932\nTest: atest -p packages/modules/Virtualization:avf-presubmit\nChange-Id: I89fd3a52aae9272db7300224b88d87c6f4d8a8a7\n"
    },
    {
      "commit": "2bead0d6d26a765ed7540fede1f99ff6c2f91c56",
      "tree": "6aeb19468c8906b9959f09f427d82691d033b7da",
      "parents": [
        "512a1f174d9112c5d1d8190ffdf6d53bf70566f8"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Sep 05 16:58:34 2022 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Sep 05 17:43:32 2022 +0100"
      },
      "message": "Make ErrorCode an enum\n\nChange the VS AIDL to define it as an enum. Added a new common AIDL\nmodule to hold it, since this is needed by both existing AIDLs, and we\ndon\u0027t want either directly depending on the other.\n\nModify vmclient to also have Rust enum for ErrorCode, with translation\nlogic, in the same way as we did for DeathReason. Switch to Debug\nrather than Display for these enums.\n\nAlso fixed a couple of AIDL warnings (enum-explicit-default).\n\nWe also need translation in the Java API, but I\u0027ll do that as part of\nhttps://r.android.com/2192077.\n\nBug: 236811123\nTest: atest MicrodroidTests MicrodroidHostTestCases\nTest: composd_cmd test-compile\nChange-Id: I561e5f43f0f1c74d1318dc41782ed390bb5f0337\n"
    },
    {
      "commit": "7eb5ca4ff4ca2f47b6936f6470d91c5e0a719968",
      "tree": "402bbf66bc5869f3621daf286f24623b886d616c",
      "parents": [
        "1b5ec6fb13a0388294b3ff665c5b7d53146eadb8"
      ],
      "author": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Mon Aug 08 15:33:34 2022 +0000"
      },
      "committer": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Fri Aug 19 10:32:26 2022 +0000"
      },
      "message": "Moved binder_common to rpcbinder package under binder directory.\n\nBug: 234019127\nBug: 184872979\nTest: atest compos_key_tests MicrodroidHostTestCases MicrodroidTestApp libbinder_rs-internal_test\nChange-Id: Iceac394d2341f463362e9bbe8908e5d8a1b3f34f\n"
    },
    {
      "commit": "0e82b50e236acdab78fa566e92442b020262b97f",
      "tree": "86d28a5dc3552139bbb28926ca87718d85223f0c",
      "parents": [
        "9c28cb083109e3d582be4f5159002a8803f21edd"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Aug 08 14:44:48 2022 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Aug 09 17:43:29 2022 +0100"
      },
      "message": "Move VM callback to vmclient\n\nInstead of having clients directly register a callback with VS,\nimplement a Rust level callback interface in vmclient. This saves an\nextra binder call on each notification, a bunch of boilerplate code,\nand allows us to provide a slightly better interface (e.g. we can use\nthe Rust DeathReason enum, as elsewhere in vmclient, for instantly\nbetter logging).\n\nI also replaced all our usages of \u003csome_interface\u003e::binder::{...} with\ndirect access to binder::{...}. That makes it clearer what depends on\nthe interface itself and what is just generic binder code. I realise\nthis should be a separate change, but I only realised that after doing\nbits of both.\n\nTest: composd_cmd test-compile, observe logs (on both success \u0026 failure)\nTest: atest -b (to make sure all our tests build)\nTest: Presubmits\nChange-Id: Iceda8d7b8f8008f9d7a2c51106c2794f09bb378e\n"
    },
    {
      "commit": "c944faeb5da9036f0c0d3688f92589257d90f500",
      "tree": "2ea9278fce4b4e9a46281b2b6d6f6edee5e34f55",
      "parents": [
        "0fd0ff0b6f73dc065f53f8e5be0d90cd94afe0cb"
      ],
      "author": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Tue Aug 02 16:16:28 2022 +0000"
      },
      "committer": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Wed Aug 03 12:31:59 2022 +0000"
      },
      "message": "Add safe wrapper for RpcPreconnectedClient.\n\nTest: atest compos_key_tests MicrodroidHostTestCases MicrodroidTestApp\nChange-Id: I8dcc6c9b0465950bfaced03699fa3167dc3dc641\n"
    },
    {
      "commit": "34b1ff99bcdc8c1486cb10b26d13c0c2274aca9e",
      "tree": "89510a10313d70ec87d29a05b08605ea58d1d665",
      "parents": [
        "df0a601a074bd6411b2741851a18f0d42fada729"
      ],
      "author": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Fri Jul 08 15:48:28 2022 +0000"
      },
      "committer": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Fri Jul 22 10:40:08 2022 +0000"
      },
      "message": "Derive Eq for error types.\n\nThis makes it easier to check for them.\n\nBug: 223166344\nTest: m libcompos_common\nChange-Id: I719d3b0b8fcad4030d57bf3cbe9b3af7367cb688\n"
    },
    {
      "commit": "71403778920a382adfc075f35c9faa369b9f5d3d",
      "tree": "27d340409257c72a073e4ea5abfdf264c97e0fef",
      "parents": [
        "4a6a12d9681c0feaa3bbe6fcd1539133de052794"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Jun 21 14:56:28 2022 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Wed Jul 20 12:33:17 2022 +0100"
      },
      "message": "Orderly VM shutdown, part 1\n\nRather than killing the VM when we are done with it, ask the payload\nto exit, and wait for the VM to have full exited. This allows the VM\ntime to write logs, generated crash dumps etc if there has been a\nfailure.\n\nAdd a quit method to the CompOS service, so clients can request it to\nexit. Add the ability to wait for a VM to have died with a timeout to\nvmclient. Implement a wait for shutdown in compos_client that waits\nfor the VM to exit but terminates it abruptly if it doesn\u0027t do so in a\nreasonable time; do the same thing if the VM fails to start.\n\nChange compos_verify to use this method to wait for the VM to have\nfully exited once we are done with it.\n\nAssorted refactorings:\n\n- Simplify the timeout handling code so we panic if the neccessary\n  property isn\u0027t available (all requests would fail anyway). Also\n  updated the timeouts a little.\n\n- Rename get_service to connect_service (it\u0027s definitely not a simple\n  getter).\n\nI haven\u0027t dealt with compilation yet; that will have ramifications all\nthe way up to Java, and this CL is big enough already. Additionally I\nhaven\u0027t yet attempted to allow odsign to continue while we wait for\nthe VM to exit.\n\nBug: 236581575\nTest: Run VM, see both finished \u0026 died in the logs.\nChange-Id: I47501081d23833fe7ef791240161d93e38b3d951\n"
    },
    {
      "commit": "e558ab1c451b01193c6c7a9dfaa2d639b0212584",
      "tree": "99953931c385460ddda96a1efb2c953b6d073fc1",
      "parents": [
        "9e5ae63ae9d8c2fac84486feb1c1b9fe227610a0"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jul 07 20:18:55 2022 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jul 08 14:48:46 2022 +0900"
      },
      "message": "VirtualizationService notifies to its client when ramdump is available\n\nWhen a kernel panic occurs in a pVM and the ramdump is enabled there, a\nramdump file is generated.\n\nThis file should eventually be consumed by the client (the owner of the\nVM) for further analysis. VirtualizationService let its client know that\na ramdump has been created and provide access to it.\n\nSpecifically, the end-to-end flow is as follows:\n\n1) When starting a VM, an empty file is created under the VM-specific\n   directory (`/data/misc/virtualizationservice/\u003ccid\u003e/ramdump`).\n\n2) The file becomes a backing store for a virtio-console device\n   (/dev/hvc3).\n\n3) When a kernel panic occurs, the `crashdump` binary is executed and\n   the `/proc/vmcore` is written to `/dev/hvc3`. After the dump is done,\n   the VM triggers a reboot which is kills crosvm.\n\n4) Virtualizationservice is notified with the exit of crosvm. It then\n   checks the size of the ramdump file. If that is not empty, it can\n   assume that a ramdump was occurred in the pVM.\n\n5) Then virtualizationservice notifies the event via\n   `IVirtualMachineCallback.onRamdump(ParcelFileDescriptor)`, where the\n   parcel file descriptor is the handle to the ramdump file.\n\n6) Client reads the ramdump file.\n\nThis change also adds `--ramdump` option to the `vm` tool to designate\nthe path where ramdump is saved to.\n\nBug: 238278104\nTest: follow the steps. Automated tests will be added in a followup CL\n1) Run a pVM:\nadb shell /apex/com.android.virt/bin/vm run-app --debug full --mem 300 \\\n--ramdump /data/local/tmp/virt/myramdump \\\n/data/local/tmp/virt/MicrodroidDemoApp.apk \\\n/data/local/tmp/virt/apk.idsig /data/local/tmp/virt/instance.img \\\nassets/vm_config.json\n\n2) Adb shell into the VM\nadb forward tcp:8000 vsock:10:5555\nadb connect localhost:8000\nadb -s localhost:8000 root\nadb -s localhost:8000 shell\n\n3) Load the crashdump kernel\n/system/bin/kexec \\\n/system/etc/microdroid_crashdump_kernel \\\n/system/etc/microdroid_crashdump_initrd.img \\\n\"1 rdinit\u003d/bin/crashdump nr_cpus\u003d1 reset_devices console\u003dhvc0 earlycon\u003duart8250,mmio,0x3f8\"\n\n4) Trigger a crash\necho c \u003e /proc/sysrq-trigger\n\n5) Check the ramdump at /data/local/tmp/virt/myramdump\n\nChange-Id: I1f90537961632708ca5a889cdd53390030518bb8\n"
    },
    {
      "commit": "e6ed0f92f4f78218ec102ce06df1aaa7be14d467",
      "tree": "7bcabebf8c28d33e095af141cec1249334207840",
      "parents": [
        "71215c64cc975b7ec361347fdabdba50e040c706"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jun 22 00:13:00 2022 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jun 23 01:18:45 2022 +0900"
      },
      "message": "Detect Microdroid hangup during boot\n\nHangup in Microdroid is defined as a state where payload hasn\u0027t been\nstarted for a long time. In that case AVF kills the VM and the death is\nreported via onDied callback.\n\nIn addition, modified the client-facing java and rust libraries to add\ndeath reasons that were added before but haven\u0027t surfaced yet.\n\nBug: 222228861\nTest: I couldn\u0027t make a test for this because it was impossible to\nintentionally make the hang by a test. Instead, I confirm that `onDied`\nis called and the VM eventually is killed when I edited the timeout\nvalue to a very small number (e.g. 100ms).\n\nChange-Id: I53f232d0b609e6e8a429d996c7d6fdd0b37e7b4c\n"
    },
    {
      "commit": "1072cc058062f0083e5d774df7e01f6dda1dacfd",
      "tree": "3029b1b44238b4f6f13217c8572e64e08209ae71",
      "parents": [
        "d0ef400bd145dcde0fcab4bb9694cec51cbb7657"
      ],
      "author": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Mon May 23 14:47:58 2022 +0000"
      },
      "committer": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Tue May 24 09:59:18 2022 +0000"
      },
      "message": "Move VsockFactory into VM client library.\n\nTest: ComposHostTestCases compos_key_tests\nChange-Id: I0500c9ad46df4c004f033161ade53b94d3d2afea\n"
    },
    {
      "commit": "d0ef400bd145dcde0fcab4bb9694cec51cbb7657",
      "tree": "2dbf083058c14087525abc07a8798193afb82b55",
      "parents": [
        "bd7ce985ca8eb13c1acf284aa53c9724ec33e27b"
      ],
      "author": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Mon May 16 16:14:10 2022 +0000"
      },
      "committer": {
        "name": "Andrew Walbran",
        "email": "qwandor@google.com",
        "time": "Mon May 23 18:51:14 2022 +0000"
      },
      "message": "Factor out Rust client library for VirtualizationService.\n\nThis reduces code duplication, and will also be useful for Rust tests.\n\nTest: ComposHostTestCases compos_key_tests\nChange-Id: I13c41d3b2bbe506495b723e7739f3181cb033f0f\n"
    }
  ]
}
