Commit graph

6596 commits

Author SHA1 Message Date
recipe-roller
cb9a9035f5 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/8780090450185133777

depot_tools:
b52b190cb8
  b52b190 (jojwang@google.com)
      Add explicit path for infra in infra_superproject gclient config.

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: Ib8c916f32d30f7205a1539f213d27c5123a6168d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4568148
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>
2023-05-25 21:44:24 +00:00
Daniel Verkamp
dbf07144e2 data_model: deduplicate IoBufMut sys code
Most of the IoBufMut code is generic and doesn't need to be implemented
for each platform. Factor out the sys-specific parts into a new trait,
PlatformIoBuf, that contains the minimal accessor functions for getting
and setting address and length.

BUG=None
TEST=tools/dev_container tools/presubmit

Change-Id: If647dd268f8ccdb8ecba2dcf5b12711363a32c69
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4559526
Reviewed-by: Zihan Chen <zihanchen@google.com>
Reviewed-by: Noah Gold <nkgold@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-05-25 21:09:58 +00:00
recipe-roller
44d9341061 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/8780098629700446385

recipe_engine:
b60bb0d221
  b60bb0d (nmulcahey@google.com)
      Revert "[recipes.py] Unset PYTHONPATH in case users have confli...

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: I6d61129c3d7f62cc6fe403739a9cea2b4f48e64d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4568147
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>
2023-05-25 19:35:36 +00:00
Keiichi Watanabe
4caa4427f6 jail: Compile seccomp policies in parallel
Allow running `compile_seccomp_policy` script in parallel in build.rs so
the build time would change from 19 sec to 1.6 sec on my Linux
workstation.

With combinining with crrev.com/c/4546480, time of clean build of crosvm
changed from 73.5 sec to 67.8 sec.

BUG=b:283197076
TEST=cargo build

Change-Id: I60197e29d623ccc3638fc464373fdf1d71b00ae1
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546818
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2023-05-25 19:13:12 +00:00
Keiichi Watanabe
cb869c4933 jail: build: Move policy compilation logic into a separate function
This is just a clean up CL to introduce parallelism in the next CL.

BUG=b:283197076
TEST=cargo build

Change-Id: I5118f08a9671b32bbebf850764d627fb32db7383
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4567763
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2023-05-25 19:13:01 +00:00
Ryan Neph
42ee99f25e gpu: allow unsandboxed implicit render server spawn
Allow virglrenderer to implicitly spawn a render_server process when a
render_server_socket is not provided and sandboxing is disabled.

BUG=None
TEST=cargo build --features=gpu,x,wl-dmabuf,virgl_renderer,virgl_renderer_next

Change-Id: Icb682ffbf5812675d3c0c8e5a3d11006ecd53e8d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4563457
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Ryan Neph <ryanneph@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
2023-05-25 19:10:51 +00:00
Ryan Neph
6a96c5b7ad gpu: refactor gpu device creation
Reduce the number of parameters passed down multiple levels of the call
stack.

BUG=None
Test=cargo build --features=gpu,x,wl-dmabuf,virgl_renderer,virgl_renderer_next,gfxstream

Change-Id: Iac4436e391b2d246b5ab7aecf04fd48d523fac78
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4563456
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Ryan Neph <ryanneph@google.com>
2023-05-25 18:56:52 +00:00
Ryan Neph
3d1bf4aa67 gpu: remove redundant feature predicates
The gpu module is already conditionally imported.

BUG=None
TEST=cargo clean && cargo build
TEST=cargo clean && cargo build --features=gpu

Change-Id: If797ef49b3b0208649409c4f46933a9b687d2f8a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4563455
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Ryan Neph <ryanneph@google.com>
2023-05-25 18:56:52 +00:00
recipe-roller
fb68eb8961 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/8780101146004002017

depot_tools:
c83abb3247
  c83abb3 (yueshe@google.com)
      Roll mac_toolchain version for builders using osx_sdk

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: I1c376eb4b38ba1ffe95d46dd5f3706fc5a9e7c00
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4568146
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>
2023-05-25 18:56:37 +00:00
Yi-De Wu
cc44fd982e geniezone: Pass dtb config to hypervisor
Feature:
- Add new uapi to pass dtb config to geniezone hypervisor

Bug: 278959491
Test: tools/presubmit --all

Signed-off-by: Jerry Wang <ze-yu.wang@mediatek.com>
Signed-off-by: Yi-De Wu <yi-de.wu@mediatek.com>
Change-Id: I37eff2fb1de581493fbe584621fad63995b6c2ff
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4413734
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Commit-Queue: Frederick Mayle <fmayle@google.com>
2023-05-25 18:42:14 +00:00
Yi-De Wu
75931cd608 geniezone: Require static swiotlb allocation
Bug: 278959491
Test: tools/presubmit --all

Signed-off-by: Jerry Wang <ze-yu.wang@mediatek.com>
Signed-off-by: Yi-De Wu <yi-de.wu@mediatek.com>
Change-Id: Ic8f19783dca1da8771c0500a56de3eaae73fb710
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4413736
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Frederick Mayle <fmayle@google.com>
2023-05-25 18:42:14 +00:00
Yi-De Wu
27dff281ae geniezone: Pass memory region purpose to hypervisor
Feature:
- Modify set_user_memory_region function
- Encode memory region purpose to flags

Bug: 278959491
Test: tools/presubmit --all

Signed-off-by: Jerry Wang <ze-yu.wang@mediatek.com>
Signed-off-by: Yi-De Wu <yi-de.wu@mediatek.com>
Change-Id: I8b46219ba73c24eae9ca7ca80174cdec3a6f822d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4413735
Reviewed-by: Frederick Mayle <fmayle@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-25 18:42:14 +00:00
Dennis Kempin
8656c2f8c3 Upgrade to 1.68.2: Set default version and rebuild container
The new toolchain is now used in CI and as default for developer builds.

The mingw ldd hack is no longer needed as debian has released a fixed
package.

BUG=None
TEST=CQ

Change-Id: I713d2901165ec33efe301e79819ef31ab86fee48
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4568145
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-25 18:30:55 +00:00
Dennis Kempin
4cd4043fd1 Upgrade to 1.68.2: Fix clippy nits
The new rust toolchain comes with improved clippy warnings that
catch more unnecessary casts than before.
Some cases have to be whitelisted since libc types have varying size
based on the architecture we are compiling for.

BUG=None
TEST=presubmit

Change-Id: Ia473b0bfe6e74bdb7b0d4ca15d2c9fb410fc353e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4568144
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-25 18:28:14 +00:00
Ryan Neph
dde9aa0e6d rutabaga_gfx: Override to use pkg_config-provided virglrenderer
BUG=b:220199446
TEST=CROSVM_USE_SYSTEM_VIRGLRENDERER=1 cargo build

Change-Id: If1a0a9f0158b116812b1f2364519504363fa03b4
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4563454
Commit-Queue: Ryan Neph <ryanneph@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-05-25 17:16:09 +00:00
Noah Gold
6c84a3d1fe devices: irqchip: fix WHPX IRQ route save/restore.
It looks like WHPX isn't building fully upstream since there were a few
type errors that came up when I was testing. This CL fixes them.

BUG=none
TEST=builds

Change-Id: I406c4103cfa9e23dc27cb01b56fd91150c0f28de
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4556837
Reviewed-by: Frederick Mayle <fmayle@google.com>
Reviewed-by: Elie Kheirallah <khei@google.com>
Reviewed-by: Vikram Auradkar <auradkar@google.com>
Commit-Queue: Noah Gold <nkgold@google.com>
2023-05-25 16:49:57 +00:00
recipe-roller
2a0857c472 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/8780111212690749457

depot_tools:
43ceaf0353
  43ceaf0 (sokcevic@chromium.org)
      Update message when external changes are detected

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: I45fef76c524881b1c10cf2725b8c450f036db763
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4568143
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>
2023-05-25 16:17:11 +00:00
Elie Kheirallah
601f7b6d9d vm_control: move snapshot logic to do_snapshot function
Move the snapshot logic to a function similar to do_restore.

BUG=N/A
Test=presubmit

Change-Id: I73787a89e8ec6051fd10c6e5a3ea64eabc461017
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4550001
Commit-Queue: Elie Kheirallah <khei@google.com>
Reviewed-by: Noah Gold <nkgold@google.com>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-25 00:46:57 +00:00
recipe-roller
fe17f31ba3 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/8780172868959244913

depot_tools:
456d085e75
  456d085 (dlf@google.com)
      Adding batch CIPD version resolution to gclient.

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: Ib25983551ad1326c995255a988e05225ca463046
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4562960
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>
2023-05-25 00:01:01 +00:00
recipe-roller
058853a71d 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/8780185451022819457

depot_tools:
1affd9c35d
  1affd9c (jojwang@google.com)
      Add arg in bot_update recipes api to override deps revisions.

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: I39e7fd709b981bebec5ef17bb0f0a0435bc52d8d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4562899
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>
2023-05-24 20:41:13 +00:00
recipe-roller
4b7277206a 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/8780190483953277825

depot_tools:
05ebc9e3e0
  05ebc9e (brucedawson@chromium.org)
      Allow calling tag functions from PostUploadHook

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: I732d84b830c28847843f8bb2e6b426608507ab1c
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4562897
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>
2023-05-24 19:17:27 +00:00
recipe-roller
765cce4ee8 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/8780235783205161953

recipe_engine:
7f9b133838
  7f9b133 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from edf7c1502de4 to 406fda74bafb

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: Ie045ccf0f811b1bc18a238e8bf55814e89a28f58
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4559378
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>
2023-05-24 07:16:31 +00:00
Federico 'Morg' Pareschi
362f5103fa cros_tracing: Fix missing fully qualified names
We need to use fully qualified crate names for things like Ordering when
we use them inside macros.

BUG=None
TEST=built crosvm with tracing and checked macros work without imports

Change-Id: I7cae94822ca5c3ef188e8e46e79edfb6bd0fca5b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4560807
Auto-Submit: Morg <morg@chromium.org>
Commit-Queue: Takaya Saeki <takayas@chromium.org>
Commit-Queue: Morg <morg@chromium.org>
Reviewed-by: Takaya Saeki <takayas@chromium.org>
2023-05-24 04:49:56 +00:00
recipe-roller
f312972f7d 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/8780248365330761185

depot_tools:
2568d4c1eb
  2568d4c (sokcevic@chromium.org)
      Add additional check for PS parents

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: I60a46eb5a873dca12205e571913255a6663e9ade
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4559372
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>
2023-05-24 03:59:53 +00:00
Noah Gold
d89938d37f vm_control: add Windows vm_control client support.
With the server support in place, we can connect to the control socket
just like unix does (albeit a named pipe instead of a UDS).

BUG=b:276361599
TEST=tested snapshot commands on Windows.

Change-Id: I874463026e3b4504009c6a19d7ba9ffb8fa169fa
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4558308
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Richard Zhang <rizhang@google.com>
2023-05-24 00:01:51 +00:00
Noah Gold
ae33f0fc5a src: run the control server on Windows.
If --socket is specified on a non-prod build, we will run a named pipe
server on that socket which will soon service requests like pressing the
power button, etc.

BUG=b:276361599
TEST=builds + later CLs in the chain.

Change-Id: I0be227f5e915feb29ab2883ab3bceb85a50cfc92
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4558307
Reviewed-by: Richard Zhang <rizhang@google.com>
Commit-Queue: Noah Gold <nkgold@google.com>
2023-05-24 00:01:51 +00:00
Noah Gold
883e44a700 src: implement control socket adapter for Windows.
Implements a control socket adapter for named pipes that will allow
run_control to listen for control socket connections on Windows just
like it does on unix.

BUG=b:276361599
TEST=unit test

Change-Id: I3b2453e3b066a565cab64fc69ba19e960c3a806a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4558304
Reviewed-by: Richard Zhang <rizhang@google.com>
Commit-Queue: Noah Gold <nkgold@google.com>
2023-05-23 22:53:30 +00:00
Noah Gold
2516507e92 base: make Tubes return a Disconnect error.
Detecting if a Tube is disconnected used to be a little painful since
we'd have to extract the underlying io::Error and check for BrokenPipe.
On unix it wasn't ever this hard since Error::Disconnected exists for
the Tube Error type. On Windows it looks like we just forgot to
implement this.

This CL makes all broken pipes on Tube read/write return Disconnected
instead of a generic IO error.

BUG=b:276361599
TEST=manual run of VM.

Change-Id: I422951b770fd966d6d5e9618c3b756bb2ab5ef7d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4558305
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Richard Zhang <rizhang@google.com>
2023-05-23 22:53:30 +00:00
Noah Gold
3a46037613 base: fix StreamChannel broken pipe bug.
StreamChannel notifications were not properly handling broken pipes
when fetching the number of bytes available during the notification
sync. This is because the PeekNamedPipe call comes after the final read
call that drains the named pipe, and at this point the pipe is broken.
This CL fixes the problem by treating the byte count as zero if the
pipe is broken, which is technically true (it has no data).

BUG=b:279840868
TEST=manual

Change-Id: Ib563c7e5e426524f666ff191ec3774a4b40f59a0
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4556842
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Richard Zhang <rizhang@google.com>
2023-05-23 22:04:40 +00:00
Noah Gold
70e9e588d1 base: relax thread::spawn_with_timeout trait reqs.
base:🧵:spawn_with_timeout was stricter than
std:🧵:spawn, which wasn't really helpful.
(In prod code we use std:🧵:spawn, so being
stricter than that isn't useful or safer in a meaningful
way.)

BUG=b:276361599
TEST=builds

Change-Id: I4197d3ac082af4077f82d7d70a11869b0a886238
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4556841
Reviewed-by: Richard Zhang <rizhang@google.com>
Commit-Queue: Noah Gold <nkgold@google.com>
2023-05-23 21:41:06 +00:00
Noah Gold
738220a623 base: new Tube APIs (split, PipeTube, FlushOnDrop).
* Sometimes we want to split a Tube end into a reader & writer so
those responsibilities can be handled separately. This is what
`split_to_send_recv` does.
* On Windows, making a Tube directly attached to a named pipe will be
  needed for the control client. This is what `PipeTube` implements.
  Just like a raw named pipe, it has no notification support, and so it
  hides those elements of the Tube API.
* On Windows, we need a way to ensure a Tube is flushed before it is
  dropped so that a disconnecting client can ensure the server has read
  its messages before the pipe is dropped / EPIPE happens.
  Paradoxically, the "flush" can only be implemented on the server end
  of a pipe, so in CrosVM, our "clients" are actually the server end of
  pipes.

BUG=b:276361599
TEST=tested in future CL in the chain.

Change-Id: I70a7badc92461d49b9f08a5f997157b0698cff24
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4556840
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Richard Zhang <rizhang@google.com>
2023-05-23 21:36:56 +00:00
Noah Gold
a6169ea5b1 base: fix ERROR_MORE_DATA being a read failure.
In our overlapped read helper API, ERROR_MORE_DATA was considered to be
a fatal error (if returned from the initial call to ReadFile). It looks
like this might only happen for message mode pipes, which probably
weren't used with this function until an upcoming CL. This error would
cause us to return early and leave the OverlappedWrapper in use. Leaving
the wrapper in use is still possible, so that's a bug (b/279459822).

BUG=b:276361599
TEST=future CLs in the chain.

Change-Id: Icc8dff9b83542365336664ee1219654cb3ec1eef
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4556839
Reviewed-by: Richard Zhang <rizhang@google.com>
Reviewed-by: Vikram Auradkar <auradkar@google.com>
Commit-Queue: Noah Gold <nkgold@google.com>
2023-05-23 21:31:49 +00:00
Noah Gold
448e796868 base: add interruptable ConnectNamedPipe for pipes.
Similar to our other overlapped utility functions for read, this CL adds
one for the named pipe equivalent of accept (ConnectNamedPipe).

BUG=b:276361599
TEST=unit tests

Change-Id: I30780fbfea6ff57aaf4bb3176f400f5b5e5fb9de
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4556838
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Vikram Auradkar <auradkar@google.com>
Reviewed-by: Richard Zhang <rizhang@google.com>
2023-05-23 21:31:49 +00:00
recipe-roller
f913a0e9eb Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools, recipe_engine) into this repository.

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

depot_tools:
02838e6f4e
  02838e6 (tusharvickey1999@gmail.com)
      Import Get-FileHash from PowerShell's version specific path

recipe_engine:
a5c25e8f06
  a5c25e8 (iannucci@chromium.org)
      [recipes.py] Unset PYTHONPATH in case users have conflicting va...

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: I0edc7774d0b64501a2133b7a602003ddeaaca4d7
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4558944
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>
2023-05-23 20:53:57 +00:00
Noah Gold
c350eee33b hypervisor: implement blanket MSR fetch for WHPX.
For snapshotting, we want to save/restore *all* MSRs rather
than a one or two specific MSRs. To accomplish this, we're
implementing get_all_msrs for WHPX.

BUG=b:269705560
TEST=unit tests

Change-Id: I706c3bd1d9d11ca58c709e1a19e0184dc560f193
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546271
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Richard Zhang <rizhang@google.com>
Reviewed-by: Frederick Mayle <fmayle@google.com>
2023-05-23 20:00:32 +00:00
Noah Gold
458bc9e033 hypervisor: add test for interrupt state snapshot.
After running into issues with MSRs, it seemed advisable to have a smoke
test for these functions too.

BUG=b:269705560
TEST=unit test

Change-Id: I2017dc95c19a7097a4be17099cd33ae75bf7c6f6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546270
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Vaibhav Nagarnaik <vnagarnaik@google.com>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Reviewed-by: Steven Moreland <smoreland@google.com>
2023-05-23 20:00:32 +00:00
Gurchetan Singh
fefe0c8aba rutabaga_gfx: move to updated stream_renderer_flush api
Removed unused parameters.

BUG=b:278138335
TEST=compile

Change-Id: I5226689af156fca5f80d0c79ead88a12ce99aba5
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546261
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
2023-05-23 16:01:26 +00:00
Shintaro Kawamura
f35834e243 base: tube: handle EINTR on Tube
According to man 7 signal:

> On Linux, even in the absence of signal handlers, certain blocking
> interfaces can fail with the error EINTR after the process is stopped
> by one  of the stop signals and then resumed via SIGCONT.  This
> behavior is not sanctioned by POSIX.1, and doesn't occur on other
> systems.
>
> The Linux interfaces that display this behavior are:
>
> •  "Input"  socket  interfaces,  when  a  timeout  (SO_RCVTIMEO)  has
>    been set on the socket using setsockopt(2): accept(2), recv(2),
>    recvfrom(2), recvmmsg(2) (also with a non-NULL timeout argument),
>    and recvmsg(2).
> •  "Output" socket interfaces, when a timeout (SO_RCVTIMEO) has been
>    set on the socket using setsockopt(2):  connect(2),  send(2),
>    sendto(2),  and sendmsg(2), if a send timeout (SO_SNDTIMEO) has
>    been set.

The swap feature sends SIGSTOP and SIGCONT to crosvm processes. The
balloon command tube and the proxy devices fall into this category.

BUG=b:259621330
TEST=tools/dev_container tools/run_tests2

Change-Id: I34535430d6fcde4eaf3d2b21acf9ee444baad42c
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4547741
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Shin Kawamura <kawasin@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2023-05-23 10:29:53 +00:00
Shintaro Kawamura
ded8ec392e base: tube: send/recv for srteam socket to use io::Result
It is confusing that `Tube::recv()` may return `Error::Send`. This was
because `TubeError::Recv` accepts `std::io::Error` only while socket
related raw function in base crate returns `base::Error`.
`TubeError::Recv` and `Tube::Send` should accept either of `base::Error`
or `std::io::Error` but the same one.

`std::io::Error` is preferred because send/recv on `ScmSocket` are I/O.

`std::io::Error::raw_os_error()` always returns `Some` if the error was
constructed via `std::io::Error::last_os_error()`.

BUG=b:276384648
TEST=tools/dev_container tools/run_tests2

Change-Id: I73509c7173b4b0e5e7ed939ef20e36db2f16ade3
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546494
Commit-Queue: Shin Kawamura <kawasin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Shin Kawamura <kawasin@google.com>
2023-05-23 10:29:53 +00:00
Daniel Verkamp
5da3111c57 fuzz: improve virtqueue fuzzer coverage
Exercise more of the virtqueue descriptor chain API by consuming the
reader and writer. This also makes the fuzzer match the real-world usage
of the DescriptorChain APIs.

BUG=None
TEST=cargo +nightly fuzz run virtqueue_fuzzer

Change-Id: Ic56362cda87dd482a7c8fa6b3dd89cebfee8bc30
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4553720
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-05-23 00:24:32 +00:00
Frederick Mayle
b3d2d4f801 devices: virtio: minor handle_irq_resample simplifications
This commit basically undoes https://crrev.com/c/3311457 because,
after https://crrev.com/c/3858693, there is no longer a RefCell to
worry about.

Change-Id: Ic14dac01dff28f5644981c302a647663f2a6771d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4553719
Auto-Submit: Frederick Mayle <fmayle@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-05-23 00:10:22 +00:00
Elie Kheirallah
3a53bce8c6 devices: add snapshot/restore to IrqChip riscv64
Add missing snapshot/restore function to Irqchip for riscv64

BUG=N/A
TEST=presubmit

Change-Id: Ic73c71be6104bc4724225039588500bf9107ab68
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4553718
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Elie Kheirallah <khei@google.com>
Commit-Queue: Elie Kheirallah <khei@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-05-22 22:49:02 +00:00
Elie Kheirallah
9787c96675 crosvm: Add irq_chip snapshot/restore to VM
Add Irq_chip snapshot/restore to the existing operation of
snapshot/restore in the VM.

BUG=b:276357277
TEST=crosvm snapshot/restore && presubmit

Change-Id: I7bfb7eba11668e507d8a7d8b7fa75878c3b1a943
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4550006
Reviewed-by: Frederick Mayle <fmayle@google.com>
Reviewed-by: Steven Moreland <smoreland@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Elie Kheirallah <khei@google.com>
2023-05-22 22:13:35 +00:00
Vikram Auradkar
f054575a8b clippy: Disallow len_without_is_empty and len_zero
BUG=b:283512997
TEST=none

Change-Id: I0477583b3f8c8eefeb1d79f11302b1b28a8bd770
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4549999
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
2023-05-22 21:27:21 +00:00
Vikram Auradkar
bc604656c9 clippy: Disallow nmodule_inception
BUG=b:283512997
TEST=none

Change-Id: I5cacef1d485d2f25e5377e285a47442da766bac2
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4549998
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
2023-05-22 21:21:43 +00:00
Vikram Auradkar
0e1c85f293 clippy: Disallow new_without_default
BUG=b:283512997
TEST=none

Change-Id: If10b73f0cd686ff1a1a17e4aa3260f01e1ee8db5
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546662
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
2023-05-22 21:14:06 +00:00
recipe-roller
2e8301e875 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/8780370419358540161

depot_tools:
63d20c330b
  63d20c3 (yueshe@google.com)
      Roll mac_toolchain in depot_tools to latest version

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: Iac0a1be0389ed84c6be655f0956eea62d5415a8b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4550406
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>
2023-05-22 19:35:19 +00:00
maciek swiech
fac9000051 balloon: use protos for registered events
since the RegisteredEvent model is effectively an external API, switch
to using protobuf as a more formal/stable means of communicating
messages. also introduces exporting the registered_events.proto file as
part of crosvm_control build, alongside the currently existing header
file.

this patch also introduces feature-gating for registered_events and
protos so as not to bring in too many third party dependencies for a
base build.

BUG=b/278117550
TEST=run bzImage locally
TEST=sidecar program available at https://x20.corp.google.com/users/dr/drmasquatch/socket-pinger-proto

Change-Id: I5d91d87f7807effc125352caf5c75eee2593f70d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4521604
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: maciek swiech <drmasquatch@google.com>
2023-05-22 19:28:45 +00:00
Takaya Saeki
293bdf3f24 cros_async: Rename Mutex to RwLock
Currently, cros_async::sync::Mutex is named "Mutex", but it is actually
a read-write lock, which is confusing to readers. As a result, readers
often mistakenly think that the part of the code which should use a
read-write lock is using a Mutex.

This change renames Mutex to RwLock to eliminate the confusion. In
addition, this change updates the documentation to recommend developers
to use the standard `futures:🔒:Mutex` if they just need a Mutex,
not a read-write lock.

BUG=None
TEST=./tools/dev_container ./tools/presubmit

Change-Id: Ic008d2448308066d9c5cabb0b6c499a62994e5e2
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4546967
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Commit-Queue: Takaya Saeki <takayas@chromium.org>
2023-05-22 07:01:38 +00:00
recipe-roller
6cd80fc3ea 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/8780424526726794721

depot_tools:
3a5cc40813
  3a5cc40 (jwata@google.com)
      [autosiso] Do not double quote arguments on Windows.

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: Ib8a4cb82fbf1e7d54c29d25b07808ee579b70307
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4550883
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>
2023-05-22 05:17:31 +00:00