No description
Find a file
Keiichi Watanabe 77ca3e34e6 devices: vvu-proxy: Support reconnecting when a sibling exits
This change will allow the guest to start a new VVU device backend
after an old VVU device backend process exited due to sibling
disconnection.

More specifically, this CL will allow the vvu-proxy to support scenarios
like follows:
1. A device backend starts in the guest and a sibling VM connects to
the socket.
2. The sibling VM shuts down. Then, the device backend process exists in
the guest. And, the vvu-proxy's state is changed from `Running` to
`Activated`.
3. Return to 1.

Note that we don't support more complicated reconnection scenario such
as:
* reconnection after sibling's unexpected crash
* restart after device backend's unexpected crash

To support the reconnection feature, the vvu-proxy device needs to clean
its status when a sibling disconnected. Specifically, it needs to
* reset virtqueues' state,
* unregister memory regions that it registered via VmMemoryRequest, and
* update the device state from the worker thread.

BUG=b:216407443
TEST=run on workstation; sibling could reconnect after the first
instance exits.

Change-Id: I4c01e6069484ff74a0d643edd6a3b3231fb5c2d6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3602361
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2022-06-13 09:19:37 +00:00
.cargo Run some win64 tests with wine as part of presubmit 2022-04-06 19:45:49 +00:00
.devcontainer Make vscode devcontainer usable 2022-01-25 21:30:49 +00:00
.github Reland "github: Minimize dependencies for document generation" 2022-04-12 22:30:10 +00:00
aarch64 Fix some clippy warnings on aarch64. 2022-06-06 16:58:32 +00:00
acpi_tables doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
arch crosvm: Simplify Msr set up loop and MsrFilter. 2022-06-03 00:00:04 +00:00
argh_helpers crosvm: arghify top-level cmdline options 2022-06-02 21:34:01 +00:00
base Use 4-space indent in cfg_if treewide 2022-06-07 17:36:51 +00:00
bin
bit_field crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
broker_ipc broker_ipc: add crate 2022-06-03 22:00:11 +00:00
ci/kokoro Kokoro: Fix dry-run merge target 2022-06-06 19:42:57 +00:00
common Use 4-space indent in cfg_if treewide 2022-06-07 17:36:51 +00:00
cros_async cros_async: add async_from_local() 2022-06-08 02:29:19 +00:00
crosvm-fuzz devices: virtio: convert Interrupt to use IrqLevelEvent 2022-04-06 18:54:41 +00:00
crosvm_control crosvm_control: Add make_rt API 2022-05-10 01:29:17 +00:00
crosvm_plugin Rust 1.60 clippy fixes 2022-04-11 20:40:36 +00:00
devices devices: vvu-proxy: Support reconnecting when a sibling exits 2022-06-13 09:19:37 +00:00
disk disk: upstream windows support 2022-05-19 18:25:30 +00:00
docs/book docs: Add a page about VVU 2022-06-13 08:48:23 +00:00
fuse doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
gpu_display base: replace PollToken with EventToken tree-wide 2022-06-02 22:30:38 +00:00
hypervisor crosvm: enable windows tests for hypervisor and vmm_vhost crates 2022-06-07 16:31:39 +00:00
infra infra: Update merge builder to run periodically 2022-06-08 17:20:27 +00:00
integration_tests integration_tests: Remove debug field 2022-06-08 07:19:40 +00:00
io_uring base: remove WatchingEvents in favor of EventType 2022-06-06 17:07:33 +00:00
kernel_cmdline crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
kernel_loader doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
kvm base: clarify SharedMemory API 2022-06-01 03:55:47 +00:00
kvm_sys crosvm: Enable windows tests for a few crates 2022-06-07 14:37:43 +00:00
libcras_stub crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
linux_input_sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
logo
media virtio: video: decoder: add ffmpeg-based software decoder backend 2022-06-07 11:44:21 +00:00
metrics base: replace PollToken with EventToken tree-wide 2022-06-02 22:30:38 +00:00
net_sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
net_util Use 4-space indent in cfg_if treewide 2022-06-07 17:36:51 +00:00
power_monitor doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
protos doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
qcow_utils doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
resources x86_64: Add parameter to speicify pcie cfg mmio base and size 2022-05-13 00:19:52 +00:00
rutabaga_gfx base: replace PollToken with EventToken tree-wide 2022-06-02 22:30:38 +00:00
seccomp Revert "Add rseq to the seccomp policy file on aarch64." 2022-06-07 04:30:15 +00:00
serde_keyvalue serde_keyvalue: parse hex, octal, and binary nums 2022-06-02 22:03:20 +00:00
src crosvm: tweak create_qcow2 usage text 2022-06-09 21:53:59 +00:00
system_api_stub crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
tests net_util: refactor unix for cross platforming. 2022-04-22 01:37:58 +00:00
third_party devices: vhost-user: handler: make run_with_listener() generic 2022-06-08 02:29:21 +00:00
tools merge_bot: Enable on luci 2022-06-08 17:20:27 +00:00
tpm2 doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
tpm2-sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
tube_transporter tube_transporter: Upstream this Window's specific crate 2022-04-20 01:24:35 +00:00
usb_sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
usb_util doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
vfio_sys Revert "direct_irq: Add support for host wakeup capable IRQs" 2022-05-19 14:28:46 +00:00
vhost crosvm: enable windows tests for vhost crate 2022-06-07 20:46:28 +00:00
virtio_sys virtio: create a DeviceType wrapper enum 2022-05-10 21:00:07 +00:00
vm_control crosvm: vm_control: make handle_request generic over AsRef<Path> 2022-06-07 20:19:34 +00:00
vm_memory crosvm: Enable vm_memory tests on windows 2022-06-07 16:31:38 +00:00
win_audio win_audio: Upstream Window's audio crate 2022-06-10 19:04:05 +00:00
win_util rustfmt, win_util: update to 2021 edition 2022-05-31 23:35:02 +00:00
x86_64 x86_64: refactor cpuid passthrough code. 2022-06-10 23:43:02 +00:00
.dockerignore
.gitignore infra: Initial setup of linux pre/post-submit builders 2022-05-24 23:13:13 +00:00
.gitmodules
.rustfmt.toml rustfmt, win_util: update to 2021 edition 2022-05-31 23:35:02 +00:00
ARCHITECTURE.md base: replace PollToken with EventToken tree-wide 2022-06-02 22:30:38 +00:00
Cargo.toml virtio: video: decoder: add ffmpeg-based software decoder backend 2022-06-07 11:44:21 +00:00
CONTRIBUTING.md Add documentation for ChromeOS workflows 2022-04-18 19:05:49 +00:00
LICENSE
navbar.md docs: Use mdformat to format markdown files 2022-01-27 21:29:11 +00:00
OWNERS Adding Vikram to crosvm OWNERS 2022-06-06 17:20:10 +00:00
PRESUBMIT.cfg Add check_cq_depend to PRESUBMIT 2022-05-18 18:54:34 +00:00
README.chromeos.md Add documentation for ChromeOS workflows 2022-04-18 19:05:49 +00:00
README.md README: Update link to contributor guide 2022-05-11 13:21:04 +00:00
run_tests
rust-toolchain Upgrade rust toolchain version to 1.58.1 2022-02-04 02:20:36 +00:00
setup_cros_cargo.sh
test_all
unblocked_terms.txt

crosvm - The Chrome OS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linuxs KVM hypervisor, with a focus on simplicity, security, and speed. crosvm is intended to run Linux guests, originally as a security boundary for running native applications on the Chrome OS platform. Compared to QEMU, crosvm doesnt emulate architectures or real hardware, instead concentrating on paravirtualized devices, such as the virtio standard.

crosvm is currently used to run Linux/Android guests on Chrome OS devices.

Logo