Commit graph

5080 commits

Author SHA1 Message Date
Daniel Almeida
42bdf1de57 media: cros-codecs: Introduce the cros-codecs crate
Introduce the cros-codecs crate. This crate contains all the
codec-related code and does not depend on CrosVM. The decoders are
decoupled from the backends, which allows for the implementation of new
backends without touching the decoder code.

This crate comes with dummy backends to test the decoder functionality
in isolation, but in order to decode frames, a real backend is needed.
Currently this backend is the VAAPI backend. Using it adds a dependency
on the libva crate.

This change adds support for VP8, H264 and VP9.

BUG=b:214478588
TEST="cd media/cros-codecs && cargo test --release --features vaapi -- --include-ignored"
TEST="emerge-hatch chromeos-base/crosvm" completes successfully.

Change-Id: I596d5db4dabcc96dcfdbce1f41c8092e01b64271
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3875043
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-10-28 03:23:26 +00:00
Alexandre Courbot
0fbe82466f tools/health-check: ignore more video file types for newline check
We are going a add a couple of .vp9 and .ivf files, these are binary and
do not need to end with a newline.

BUG=b:214478588
TEST=./tools/health-check passes with crrev.com/c/3875043

Change-Id: Ic4e434616ed880dbff5dae76108e8d6692d80584
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3990145
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Auto-Submit: Alexandre Courbot <acourbot@chromium.org>
2022-10-28 03:21:59 +00:00
Daniel Verkamp
aa9bc60dc8 hypervisor: only check whpx feature for Windows targets
Ensure all of the cfg checks for whpx also validate the target is
Windows when used in generic (non-Windows-platform-specific) code. This
will allow all builds to enable the whpx feature by default.

BUG=b:213151419
TEST=tools/dev_container tools/presubmit --all

Change-Id: I1faebeed227ac5653697195b195b0884e043f110
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3989384
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-10-27 22:46:27 +00:00
Dennis Kempin
d5cd2422fe scudo: Drop version to 0.1
This allows ChromeOS/AOSP to keep using their slightly older bugfix
version number, while our Cargo.lock file is updated to the latest
version that includes the build.rs fix to prevent unnecessary re-builds.

BUG=None
TEST=presubmit

Change-Id: Ibe0a46632d9766cad7fb6bc5b6b4042da92313bf
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3984415
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-10-27 18:25:05 +00:00
Vikram Auradkar
2653304c8e tools: Install winetricks
This will help us running audio tests under wine.

BUG=b:237011316
TEST=presubmit

Change-Id: Iba297159291abd135fb1972a19fa5b5c216fa956
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971028
Commit-Queue: Vikram Auradkar <auradkar@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2022-10-27 18:11:46 +00:00
Zihan Chen
462d4c799c infra: Fix recipe name
BUG=b:240692674
TESTED=no test, led missed this in the last cl

Change-Id: I725083b7d8b62eef5c411acb7113fd5f18059410
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3984414
Auto-Submit: Zihan Chen <zihanchen@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-10-27 02:19:48 +00:00
Daniel Verkamp
a323861bf5 p9: set filetype from directory to file in lcreate
The 9p lcreate operation takes a directory fid as input and creates a
file in that directory; when the operation completes, the same fid
becomes a reference to the newly-created file. We updated the internal
self.fids structure's file and path fields to point to the new file, but
we neglected to update the filetype field, which would remain as the
original FileType::Directory.

This caused an issue with commit 53cd18e062 ("p9: use *at() functions
for set_attr"), since that change causes set_attr requests to validate
the filetype is not a directory when attempting to set its length.

BUG=b:253838039
TEST=tast run <...>.DefaultSharedFolder

Change-Id: Ie46a660dd4616d669c924014e704e9b5703eb7e9
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3983116
Reviewed-by: Joel Hockey <joelhockey@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-10-26 23:23:53 +00:00
Zihan Chen
988858b66b infra: Add build_chromeos_container builder
Add a new builder to build crosvm in crOS tree, and all the
depencies of this new builder.

BUG=b:240692674
TESTED=led get-builder luci.crosvm.ci:chromeos_amd64-generic | led edit-cr-cl https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3966928 | led edit-recipe-bundle | led edit -r build_chromeos_hatch | led launch

Change-Id: Id2f284139922916edd2dd584f576da9fb3445518
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3966928
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
2022-10-26 23:05:08 +00:00
Dennis Kempin
bf4cad131d reland: dev_container: Fix podman and enable unprivileged containers
reland note: Added wineboot for Dockerfile.user, since it prepares
directories for wine on a per-user basis.

To enable podman, the Dockerfile has been split into a root
run Dockerfile and one that adds a non-root user.

The following combinations have been tested:

./tools/dev_container -v --clean --podman --unprivileged
./tools/dev_container -v --clean --podman
./tools/dev_container -v --clean --unprivileged

And warnings have been added to ensure users are aware that
the only fully supported variant is running a privileged
docker container:

./tools/dev_container -v --clean

The unprivileged containers will allow us to validate if
unit tests require privileged system access.

BUG=None
TEST=See above

Change-Id: Ifd70c1e30ef266e39bf517e315dc88fccecc8a62
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3983255
Auto-Submit: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
2022-10-26 20:10:25 +00:00
recipe-roller
4fc582f077 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799220868135906993

depot_tools:
f4670898b9~..6f2321d1de694d4ca56784ba8b5634f9ca74b3a6
  f467089 (spang@chromium.org)
      Revert "Update autoninja to check for enable_rbe_bootstrap on b...
  6f2321d (mbid@google.com)
      Speed up git thaw

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ic9ad54d8b21cf7800d4baf44eebe4be21659f85b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3982303
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-26 17:57:22 +00:00
Dennis Kempin
2f5eb3ac64 Extract devices integration tests
This change moves most ircchip tests into an integration test.
These tests rely on kvm, and if they do not - reuse much of the
test code from each other, so they need to move together.

Note: This removes the apic_timer test. The test has been disabled
for a while due to it's use of sleep in unit tests.

We cannot support it as an integration test either, since it combines
the sleep with a FakeClock. userspace.rs swaps the real clock for
FakeClock when compiled with cfg(test), but integration tests do not
compile with cfg(test), so we cannot use the FakeClock.

The biggest side-effect is faster execution as we can run all other 300+
tests in parallel and via user-space emulation, significantly cutting
down on the test times. It also allows those tests to run in a
podman container.

BUG=b:244620308
TEST=CQ

Change-Id: I1728a736d27e924daf228752711435885dacfa6a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3977111
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-10-26 17:53:08 +00:00
Alexandre Courbot
e288105e56 serde_keyvalue: allow parsing of inner structs
Structs can be parsed as part of the command-line input, if they are
enclosed within braces.

BUG=b:218223240
TEST=cargo test -p serde_keyvalue

Change-Id: I05d9d1237036c6ba464408d56c216072e285d801
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3979490
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Pujun Lun <lunpujun@google.com>
Auto-Submit: Alexandre Courbot <acourbot@chromium.org>
2022-10-26 17:41:37 +00:00
Alexandre Courbot
eb8d6c1462 serde_keyvalue: clarify map key parsing
Group related bits closer and comment a bit. This does not change the
behavior of the code.

BUG=None
TEST=cargo test -p serde_keyvalue

Change-Id: I01136fbebaa3790311255492f87848e058a8ae8f
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3979489
Reviewed-by: Pujun Lun <lunpujun@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-10-26 17:41:37 +00:00
recipe-roller
3a4e151662 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (recipe_engine) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799229050721699729

recipe_engine:
c7db114d4f
  c7db114 (randymaldonado@google.com)
      [recipes-py] adding step tags to placeholder recipe

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: If6790146320ade0f352c299a78800844d05716e8
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3981977
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-26 15:47:58 +00:00
recipe-roller
f511a8e26f Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799232833278235825

depot_tools:
f52f44b287
  f52f44b (msavigny@google.com)
      Update autoninja to check for enable_rbe_bootstrap on builds th...

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I58dd271caccf85f07ce687c6c148216b05f1b256
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3981976
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-26 14:46:03 +00:00
recipe-roller
948a151bc7 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799237237650838177

depot_tools:
1b7204d841
  1b7204d (rgw@google.com)
      Update Presubmit to python3

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I77838c67946a5fffdbbd106c245acdc1b352e09b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3981974
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-26 13:37:32 +00:00
Alexandre Courbot
76b21794e3 crosvm: allow several video devices to be instantiated
There is no technical reason to limit the number of video decoders and
encoders that can be instantiated, so remove the current artificial
limitation of one.

BUG=b:255223604
TEST=`cargo run --features "video-decoder,ffmpeg,vaapi" -- ... --video-decoder ffmpeg --video-decoder vaapi`
results in two usable decoder devices in the guest.

Change-Id: I71cd344db6827b57daa324ccb467425fe8337b65
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3974354
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-26 07:56:46 +00:00
Alexandre Courbot
275731501a crosvm: config: rename VideoDeviceConfig's backend_type to backend
Other device parameters with a backend type use `backend` as field name,
so do the same for video devices. This is backward-compatible as the
backend field is implicit for the command-line.

BUG=b:255223604
TEST=cargo build --features "video-decoder,video-encoder,ffmpeg"

Change-Id: I5133080714d3292295468a2c7152a06fc669da1c
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3974353
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2022-10-26 07:56:46 +00:00
Alexandre Courbot
6a5680fae3 crosvm: make the gpu argument a vector
Virtio devices can typically be instantiated several times. This should
particularly be the case for the GPU device, but we currently have an
artificial limitation to 1 device due to the way we handle resource
bridges.

This limitation should hopefully be lifted in the future, and meanwhile
we would like to enable instantiating the GPU from the configuration
file with its final syntax ; so turn the `gpu` field of `RunCommand`
into a vector, and throw a custom error if more than one GPU has been
instantiated.

BUG=b:255223604
TEST=cargo build

Change-Id: Ia2f76e52efaddeffb1a23c86088c123587985b94
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3974352
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2022-10-26 07:56:46 +00:00
Alexandre Courbot
e31a097394 crosvm: make RunCommand deserializable
Configuration file support for the `run` command will be done by
deserializising a file into a `RunCommand` instance, where all the
parameters will be optional.

Make sure that all parameters that are not an `Option` are optional by
giving them a default value if they are not explicitly specified to make
the structure deserializable.

The set of parameters we are confident enough about to allow them in the
configuration file is still limited, so most parameters are skipped. We
will enable them after review and ensuring they are suitable for a
configuration file (see b/255223604).

There are also a few parameters that are definitely deprecated ; these
ones are also skipped pending their removal from the command-line.

BUG=b:218223240
TEST=./tools/health-check

Change-Id: Ia261e7e4d2d5957cf96265d9117355dc352fdd3c
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970367
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2022-10-26 03:42:46 +00:00
Dennis Kempin
a0e6a664fc Revert "dev_container: Fix podman and enable unprivileged containers"
This reverts commit 6a2b1fda85.

Reason for revert: Broke mingw64 builds

Original change's description:
> dev_container: Fix podman and enable unprivileged containers
>
> To enable podman, the Dockerfile has been split into a root
> run Dockerfile and one that adds a non-root user.
>
> The following combinations have been tested:
>
> ./tools/dev_container -v --clean --podman --unprivileged
> ./tools/dev_container -v --clean --podman
> ./tools/dev_container -v --clean --unprivileged
>
> And warnings have been added to ensure users are aware that
> the only fully supported variant is running a privileged
> docker container:
>
> ./tools/dev_container -v --clean
>
> The unprivileged containers will allow us to validate if
> unit tests require privileged system access.
>
> BUG=None
> TEST=See above
>
> Change-Id: I185b1d9c3829674986305b0e72a39b1a4ba11b98
> Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971029
> Reviewed-by: Zihan Chen <zihanchen@google.com>
> Commit-Queue: Dennis Kempin <denniskempin@google.com>
> Reviewed-by: Dennis Kempin <denniskempin@google.com>

Bug: None
Change-Id: Id57686ed869abcfb54431aa328c54234b9465eb7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3979385
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Auto-Submit: Dennis Kempin <denniskempin@google.com>
2022-10-26 03:06:26 +00:00
Dennis Kempin
6a2b1fda85 dev_container: Fix podman and enable unprivileged containers
To enable podman, the Dockerfile has been split into a root
run Dockerfile and one that adds a non-root user.

The following combinations have been tested:

./tools/dev_container -v --clean --podman --unprivileged
./tools/dev_container -v --clean --podman
./tools/dev_container -v --clean --unprivileged

And warnings have been added to ensure users are aware that
the only fully supported variant is running a privileged
docker container:

./tools/dev_container -v --clean

The unprivileged containers will allow us to validate if
unit tests require privileged system access.

BUG=None
TEST=See above

Change-Id: I185b1d9c3829674986305b0e72a39b1a4ba11b98
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971029
Reviewed-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2022-10-26 02:06:06 +00:00
Alexandre Courbot
d57ff28353 crosvm: fixup GpuParameters during serde parsing
Parsed GPU parameters need to be fixed up using a platform-dependent
function. This was done using a custom argh parsing function, but doing
so only applies the fixup to command-line arguments, and we will want to
deserialize GPU parameters from configuration files as well.

Move the fixup to the serde deserialization stage by using a proxy type
which fixes up GpuParameters while being converted from it. Since
GPU command-line parameters are also parsed using serde, this ensures
fixup is performed from both paths.

BUG=b:218223240
TEST=`cargo test --features "gpu,virgl_renderer,virgl_renderer_next" parse_gpu` passes.

Change-Id: I54b73bf0bddc933c012cc00f70608afd575c3352
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3977490
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Pujun Lun <lunpujun@google.com>
2022-10-26 00:05:08 +00:00
Ryan Neph
3d0ece792c gpu: handle unexpected compositor disconnections
If crosvm's connection to the host compositor is suddenly broken
(e.g. from a compositor crash), a single POLLHUP is sent on the listened
file descriptor, but it is ignored. Then the VirtioGpu backend is
repeatedly awoken to handle display events, although there are none.

Since the compositor is lost and there is currently no path for
recovery, we can at least prevent runaway CPU usage by removing the
display from VirtioGpu's WaitContext. For VMs that can continue to
function without a guest display (headless crostini), this is
non-lethal. For VMs that require a display (ARCVM), other mechanisms
already exist for shutting down the VM under such unrecoverable
conditions.

BUG=b:250923109
TEST=Run Crostini and trigger a chrome crash; inspect virtio_gpu CPU
usage

Change-Id: I8b2261a093191dfe142697c4c4adc4e9ffab751a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3975942
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Ryan Neph <ryanneph@google.com>
2022-10-25 21:39:45 +00:00
Alexandre Courbot
439d455c9a crosvm: disable tests parsing virglrenderer mode if virgl_renderer is disabled
crrev.com/c/3971026 put GpuMode::ModeVirglRenderer behind the
`virgl_renderer` feature, but did not disable all the tests that try to
parse the virgl renderer.

BUG=None
TEST=`cargo test --features "gpu" parse_gpu` passes.
TEST=`cargo test --features "gpu,virgl_renderer,virgl_renderer_next" parse_gpu` passes.

Change-Id: I1018d5021b81484b6d747e15aa60edf005c1f53a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3977489
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Pujun Lun <lunpujun@google.com>
Auto-Submit: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-25 19:39:28 +00:00
Alexandre Courbot
54a22c93ab crosvm: rename fields of RunCommand for easier deserialization
We want to support configuration files where configuration options will
have the same name as our command-line arguments. For fields of
RunCommand which name is not identical to the argument itself, this
would mean adding a new serde helper attribute to make the name match we
one we already explicitly specified to argh.

It is just simpler and consistent to have the fields named exactly after
their corresponding argument, so do this. Some fields need to be
reordered in order to satisfy the #[remain::sorted] requirement, but no
other change is done otherwise.

BUG=b:218223240
TEST=`cargo run --features all-x86_64 -- run --help |sort` yields
identical output before and after with CL.

Change-Id: I1bf9d1e6a443afd61dd6d8180da42e485699353e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970366
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-10-25 05:42:28 +00:00
Alexandre Courbot
efec33af6f crosvm: add --block argument to the run command
We currently have 4 different arguments for specifying block devices:
`disk`, `rwdisk`, `root`, and `rwroot`. These arguments basically do the
same thing save for setting an additional flag to the disk
configuration.

This is both inefficient and confusing, so add a new `block` argument
that allows to specify both the root and read-only properties as flags.
It works similarly to the argument of the same name of the `devices`
command and is easier to use in the context of a configuration file.

We will eventually deprecate the 4 previous arguments after all users
have transitioned to the new one.

Change-Id: I87451aee57c714b5d47df9d8823c0b769137d426

BUG=b:218223240
TEST=`--block PATH,root` can be specified in place of `--rwroot PATH`
and the right device is mounted as root, read-write.

Change-Id: Ic186616344abac8af86040fc6b1613fd8e66a6a0
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970364
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-25 04:32:24 +00:00
Alexandre Courbot
eeafbb16e8 virtio: block: add root parameter to DiskOption
The `root` and `rwroot` command-line parameters allow to specify a block
device for which the right parameters are passed to the kernel to mount
it as the root filesystem. This approach relies purely on the name of
the parameter given and won't allow us to pass a "root" flag to a
unified block device command-line option.

Address this by adding a "root" member to `DiskOption`. On top of
allowing us to specify the will to mount a particular device as root
through a flag, it also clarifies the code a bit as we deal with one
less unnamed tuple.

BUG=b:218223240
TEST=Guest Linux boots as expected with the `--rwroot` option.

Change-Id: I5d5eda1cc8b1fc2f08e798064fc0db3b17f000a3
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970363
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2022-10-25 04:18:44 +00:00
Alexandre Courbot
81c903beef crosvm: handle disk ID more cleanly
Since we have several command-line options for specifying disks (disk,
rwdisk, root, and rwroot), we add an increasing disk ID each time we
encounter one of these options so we can preserve the order of
declaration later.

This ID is currently handle as a tuple alongside the actual DiskOption,
which forces us to use the `from_str_fn` argh attribute and requires the
ID to be explicitly specified if we deserialize RunCommand.

Replace the tuple by a dedicated local structure with its own FromStr
and From<DiskOption> implementations that assign the ID transparently.
This allows us to stop using `from_str_fn` and will also make
deserialization behave as we want for supporting configuration files.

BUG=b:218223240
TEST=Guest Linux boots as expected with the `--rwroot` option.

Change-Id: I291c119e6e9c4d76b71a2d6982d1504a3d689160
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970362
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-10-25 02:29:08 +00:00
Masami Hiramatsu
c80de3af0e aarch64: Fix Goldfish battery to send IRQ correctly
Since the virtio allocates all available IRQ lines for VGIC,
system_allocator::allocate_irq() returns 32 for Goldfish battery,
but that is not handled by the VGIC. In the result, the interrupts
from Goldfish Battery device are dropped in the host kernel. Thus
even if the crosvm detects the AC unplug, it is not notified to
the guest.

To fix this issue, assign a static IRQ number (#3) to Goldfish
battery device as same as other devices, so that it can deriver the
interrupts correctly to the guest side via VGIC.

BUG=b:252582345
TEST=Boot the ARCVM and run 'dumpsys battery' and unplug/re-plug
  AC connector several times, and confirm the AC status is updated.

Change-Id: Icdf3713cdf615d0039dd4e7719b80cad32333094
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971137
Reviewed-by: Masami Hiramatsu <mhiramat@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Auto-Submit: Masami Hiramatsu <mhiramat@google.com>
2022-10-25 01:02:33 +00:00
recipe-roller
40b890c084 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799379425632942289

depot_tools:
1f51102073
  1f51102 (agrieve@chromium.org)
      post_build_ninja_summary.py: chmod u+x

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I3386fc7ddfd88f26c1a017905241ec3fe327b68b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3975944
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-24 23:56:39 +00:00
Pujun Lun
3434b3283e devices: set default GPU mode for Windows.
Only gfxstream is being actively used on Windows for now, so we
either use it or fall back to 2D rendering by default.

This CL also puts ModeVirglRenderer under the "virglrenderer"
feature flag, so that the arg parser would reject it when specified
by mistake.

BUG=b:254284360
TEST=presubmit

Change-Id: Ifa39e4a528acf1bd45a85e7327b3edded3a4e7d6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971026
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Kaiyi Li <kaiyili@google.com>
Commit-Queue: Pujun Lun <lunpujun@google.com>
2022-10-24 23:50:51 +00:00
Dennis Kempin
b896b869e4 base: Extract integration tests
The extracted tests rely on access to system devices
or global state that prevent them from being run in parallel
or in restricted environments.

As an integration test they will be executed separately and
single threaded.

Updates the test runner to ensure integration tests are actually
run single threaded as intended.

BUG=b:244623061
TEST=./tools/run_tests base:\* --repeat 100 -p x86_64/mingw64/aarch64

Change-Id: I4267b9f79055208aca86796d902da251816bcada
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971025
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-10-24 22:49:29 +00:00
recipe-roller
08bd3b167c Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799386345334112737

depot_tools:
ff5d25bb10
  ff5d25b (gavinmak@google.com)
      Add canned presubmit checks for corp links

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I0fbbd3532bc50278464a686ce869dc3edd5b2609
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3975939
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-24 22:07:45 +00:00
Pujun Lun
eb3b49f185 gpu_display: better detection for window sizing/moving modal loop.
We do receive WM_ENTERSIZEMOVE when the window is about to be resized or
moved, but it doesn't tell us whether resizing or moving should be
expected. We won't know that until later we receive WM_SIZING or
WM_MOVING. There are also corner cases where we don't receive either
WM_SIZING or WM_MOVING in the modal loop, or receive both of them.

This CL adds an enum SizeMoveLoopState to track this state, so that we
can know whether the window is resizing or moving.

One alternative is to use WM_NCHITTEST to test whether the cursor is on
the window title bar (which implies moving the window) or window
borders/corners (which implies resizing) when WM_ENTERSIZEMOVE is
received. However, the user may also trigger resizing/moving from the
system menu (e.g. by right-clicking on the title bar and selecting it
from the drop down list), so this is not always reliable.

BUG=b:254702853
TEST=Tested in the Windows downstream

Change-Id: I8c8d97a7542b291c57dbddb75d785b324ff2776e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3975933
Commit-Queue: Pujun Lun <lunpujun@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-24 20:21:57 +00:00
Bastian Kersting
606bebceaf Bump scudo and enable corresponding feature
This CL bumps to the latest Rust-scudo version and re-enables
the corresponding feature, after it was disabled in crrev/c/3964927.
The fix introduced in https://github.com/google/rust-scudo/pull/6 was
submitted and is part of the 0.1.3 release of scudo.

BUG=None
TEST=health-check

Change-Id: I9c658cde9ea2d4cdf0d03110e2d015c8339e5267
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3973490
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2022-10-24 17:40:47 +00:00
Alexandre Courbot
d42277f43a resources: reject unknown fields when deserializing AddressRange
We will deserialize AddressRange from RunConfig, so make sure we error
on invalid parameters.

BUG=None
TEST=./tools/health-check

Change-Id: Ia4b5c62e61f3e12e40f400e199fc401773dbbdcc
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970365
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-10-24 02:56:12 +00:00
recipe-roller
0d1d1708f6 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799459327196252097

depot_tools:
61ef3d8647
  61ef3d8 (tikuta@chromium.org)
      remove reclient

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I771520d9a5d5821c41c5ecf373ae204cc3286fcc
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3973021
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-24 02:47:55 +00:00
Alexandre Courbot
96ebc3b96a crosvm: aerate RunCommand a bit
RunCommand is made of more than 100 (!) command-line parameters, each
with its own derive helper attributes. As we are going to add more of
the latter, add an empty line between each option to improve legibility.

BUG=b:218223240
TEST=./tools/health-check

Change-Id: I2873942e3b492789fa2367341055a5fe5f69b51e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3970361
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-10-22 15:41:43 +00:00
recipe-roller
d0f0fa9848 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799663795347091729

depot_tools:
9879712089
  9879712 (bsheedy@chromium.org)
      Run recipe git_cl under Python 3

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ie49f387c7f5341b19e03ceb2dee5a97eaf871b0e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971027
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-21 20:37:30 +00:00
Pujun Lun
f8a6c29e60 gpu_display: use the unicode version of WinAPI everywhere.
The Windows official doc suggests that, "New Windows applications
should use Unicode to avoid the inconsistencies of varied code
pages and for ease of localization".

BUG=b:254702853
TEST=Tested in the Windows downstream

Change-Id: I159263d21ff5e9900c4bb79fe17bd0aa3aedae0d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971022
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Pujun Lun <lunpujun@google.com>
2022-10-21 18:01:48 +00:00
Alexandre Courbot
839577a796 media: libvda: allow to build without linking to libvda
libvda is only available on ChromeOS, and being unable to link to it
with regular builds reduces our build coverage.

Add a "libvda-stub" feature that, if enabled, results in dummy C stubs
being build for all the exported libvda functions. This allows builds
with the "libvda" feature to pass, although of course the resulting
video device would immediately crash and thus should not be used.

BUG=b:244619291
TEST=`cargo build --features="video-decoder,video-encoder,libvda-stub"`
completes.
TEST=`cargo build --features="video-decoder,video-encoder,libvda"`
reports link errors against libvda.
TEST=`cargo build --features all-x86_64` builds libvda and completes
without error.

Change-Id: I9bb60f6caf670081d67c91275727f3888272d64b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3947844
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-10-21 13:57:31 +00:00
recipe-roller
52b5462ba8 Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8799700287580809569

depot_tools:
8e2da91cbb
  8e2da91 (vadimsh@chromium.org)
      Fix UnboundLocalError in CheckLicense.

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ia792f116e179caf1bcb8cc634c4a519f5d09b450
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971377
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-10-21 11:31:29 +00:00
David Stevens
60aa43629a devices: vhost-user: add protocol flag for shmem
Add a vhost protocol feature flag for shared memory region support. This
is necessary to avoid sending the GET_SHARED_MEMORY_REGIONS message to
backends which don't support it.

BUG=b:252901073
TEST=crosvm device wl

Change-Id: I044926e982526c3c76063b5386cab0db72524707
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3951472
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: David Stevens <stevensd@chromium.org>
2022-10-21 01:09:07 +00:00
Dennis Kempin
89f0a34eff Disable scudo feature
The feature will trigger rebuilds on every cargo build invocation.
A fix is submitted: https://github.com/google/rust-scudo/pull/6
Until then, let's disable it.

BUG=None
TEST=health-check

Change-Id: Id328bd976b65674b50f9845490eb5083008781e8
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3964927
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-20 23:11:58 +00:00
Dennis Kempin
ca2049f982 Use previous bindgen version
The latest version is breaking minijail bindings and needs changes
to accomodate, which we cannot do until ChromeOS is updating it's
bindgen version as well.

BUG=None
TEST=make -C tools/impl/dev_container crosvm_dev &&
./tools/dev_container cargo build

Change-Id: I86476e4260154caf2aaf1b210490d466961b827f
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3964923
Reviewed-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
Auto-Submit: Dennis Kempin <denniskempin@google.com>
2022-10-20 22:08:37 +00:00
Pujun Lun
4331e432c5 gpu_display: add F1-F12 and numpad equal key to keycode translator.
BUG=b:254702853
TEST=Tested in the Windows downstream

Change-Id: I932bac772acee48179b3d793be0f129c9bfed79e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3969223
Commit-Queue: Pujun Lun <lunpujun@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-20 21:25:37 +00:00
Daniel Verkamp
c433c9e796 base: remove Windows EventExt::new_with_manual_reset()
Replace the single new_with_manual_reset() call, which passed false to
create an auto-reset event, with a call to the more descriptive
new_auto_reset() function.

This allows the new_with_manual_reset() API to be removed.

BUG=b:231344063
TEST=tools/presubmit --all

Change-Id: I51d1fcbab161d10539c44689b31e2d86ad9e1527
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3966482
Reviewed-by: Noah Gold <nkgold@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-10-20 21:15:41 +00:00
Daniel Verkamp
a364040b4b base: fix WaitContext doc tests
BUG=b:231344063
TEST=cargo test -p base -- --test-threads=1

Change-Id: Icf4dc6228eadb41aacbb49844089b1cadb6c5b5e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3966481
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Reviewed-by: Noah Gold <nkgold@google.com>
2022-10-20 21:10:14 +00:00
Daniel Verkamp
28d0f67858 base: event: add Event::reset() API
This allows resetting an Event without waiting on it. Windows already
had this functionality in its EventExt, and we can provide an equivalent
implementation for eventfd on Linux, so promote this function to the
cross-platform Event type.

BUG=b:231344063
TEST=tools/presubmit --all

Change-Id: I6dba3cb2e0b2d702e8a3f0dacf5c25c1dd044a13
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3966480
Reviewed-by: Frederick Mayle <fmayle@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Noah Gold <nkgold@google.com>
2022-10-20 21:04:14 +00:00