Merge with upstream 2026-04-21 1/2

2e1df462c1b base: Add more safety nets for checking cpu online status
2fccff2c766 base: Consolidate vcpu properties into one unified data structure
513b08b62ac Roll recipe dependencies (trivial).
525839a1bf3 Roll recipe dependencies (trivial).
666ae802456 devices: usb: add isochronous IN transfer handler
16aebad45d6 Reland "devices: usb: add build_isochronous_transfer to trait"
f407b047bee Reland "devices: usb: add methods to get max payload length"
125adf13172 devices: usb: allow triggering ring controller early
9b1952608a5 devices: usb: ensure all transfers complete before detach
bf36139328b infra: Update README for luci
36a1614852d crosvm: add GuestPanic exit state for SystemEventCrash

https://chromium.googlesource.com/crosvm/crosvm/+log/eec58549a5379347e51f880982e1d42f89876f02..2e1df462c1b95edef475dc8d7e210c672aca08cd

BUG=b:417615888
BUG=b:499190661
BUG=498448415, 502869543

Change-Id: I0e20ac2a6dcafc91dfb9c29b13b83875ffb09b4c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/7780039
Bot-Commit: crosvm LUCI CI <crosvm-luci-ci-builder@crosvm-infra.iam.gserviceaccount.com>
Commit-Queue: Vineeth Pillai <vineethrp@google.com>
tree: 5ea14786472b394b596024df89262eed8df88b65
  1. .cargo/
  2. .config/
  3. .devcontainer/
  4. .github/
  5. .vscode/
  6. aarch64/
  7. aarch64_sys_reg/
  8. acpi_tables/
  9. android_audio/
  10. arch/
  11. argh_helpers/
  12. audio_streams_conformance_test/
  13. audio_util/
  14. base/
  15. base_tokio/
  16. bit_field/
  17. common/
  18. cros_async/
  19. cros_fdt/
  20. cros_tracing/
  21. cros_tracing_types/
  22. crosvm_cli/
  23. crosvm_control/
  24. devices/
  25. disk/
  26. docs/
  27. e2e_tests/
  28. ext2/
  29. fuse/
  30. fuzz/
  31. gpu_display/
  32. hypervisor/
  33. infra/
  34. io_uring/
  35. jail/
  36. kernel_cmdline/
  37. kernel_loader/
  38. kvm_sys/
  39. libcras_stub/
  40. linux_input_sys/
  41. logo/
  42. media/
  43. metrics/
  44. metrics_events/
  45. net_sys/
  46. net_util/
  47. perfetto/
  48. power_monitor/
  49. prebuilts/
  50. proc_init/
  51. profiles/
  52. proto_build_tools/
  53. protos/
  54. resources/
  55. riscv64/
  56. sandbox/
  57. serde_keyvalue/
  58. snapshot/
  59. src/
  60. swap/
  61. system_api/
  62. tests/
  63. third_party/
  64. tools/
  65. tube_transporter/
  66. usb_sys/
  67. usb_util/
  68. vendor/
  69. vfio_sys/
  70. vhost/
  71. virtio_sys/
  72. vm_control/
  73. vm_memory/
  74. win_audio/
  75. win_util/
  76. x86_64/
  77. .dockerignore
  78. .envrc
  79. .gitattributes
  80. .gitignore
  81. .gitmodules
  82. .rustfmt.toml
  83. ARCHITECTURE.md
  84. Cargo.lock
  85. Cargo.toml
  86. CONTRIBUTING.md
  87. DIR_METADATA
  88. LICENSE
  89. mypy.ini
  90. OWNERS
  91. OWNERS_COUNCIL
  92. PRESUBMIT.cfg
  93. pyproject.toml
  94. README.chromeos.md
  95. README.md
  96. rust-toolchain
README.md

crosvm

crosvm logo

The ChromeOS Virtual Machine Monitor

License Documentation Matrix


crosvm is a secure, lightweight, and performant Virtual Machine Monitor (VMM) written in Rust. Originally developed for ChromeOS to run Linux (Crostini) and Android guests (ARCVM). It is now used across multiple products and platforms such as TerminalApp on Android, Cuttlefish and Windows.

crosvm focuses on security through strong isolation and a modern, memory-safe implementation. It leverages hardware-assisted virtualization to provide a robust execution environment for untrusted code.

🌟 Core Philosophy

  • Security First: Built with Rust's memory safety guarantees. Each virtual device can be run in its own sandboxed process with restricted system access.
  • Isolation: Uses Linux namespaces, seccomp filters, and Minijail to create a multi-layered security boundary.
  • Performance: Optimized for modern workloads with features like io_uring, vhost, and an internal async runtime (cros_async).
  • Portability: Supports multiple CPU architectures and hypervisor backends.

🛠️ Technical Specifications

Supported Architectures

  • x86_64
  • aarch64
  • riscv64

Supported Hypervisors

  • Linux/Android: KVM, Gunyah (Qualcomm), GenieZone (MediaTek), Halla (Exynos).
  • Windows: WHPX (Windows Hypervisor Platform), HAXM (Intel).

Virtio Device Support

crosvm implements a wide range of paravirtualized devices via the virtio standard:

  • Network: virtio-net with optional vhost and slirp backends.
  • Storage: virtio-block supporting raw, qcow2, zstd, and Android sparse formats.
  • Graphics: virtio-gpu with 2D and 3D acceleration (via virglrenderer, gfxstream, or vulkano).
  • Display/Input: Integrated virtio gpu cross domain support for wayland passthrough
  • Audio: virtio-snd with backends for CRAS (ChromeOS), AAudio (Android), and more.
  • File System: virtio-fs and virtio-9p.
  • Other: Console, RNG, Balloon, Vsock, TPM, Pmem, Video Decoder/Encoder, etc.

🔒 Security Architecture

crosvm is designed with a “process-per-device” model:

  1. Main Process: Handles VM initialization and core orchestration.
  2. Device Processes: Each virtio device can be forked into its own process.
  3. Sandboxing: Each device process is jailed using Minijail:
    • Namespaces: VFS (pivot_root), PID, User, and Network isolation.
    • Seccomp: Strict BPF filters restrict syscalls to only those required by the specific device.
    • Capabilities: All unnecessary Linux capabilities are dropped.

📖 Documentation

🚀 Getting Started

The recommended way to build and develop crosvm is using the provided development container.

Prerequisites

  • Linux: A modern kernel (5.x+) with KVM access.
  • Podman or Docker: Installed and configured.

Building

Use the dev container to build a release version of crosvm:

./tools/dev_container ./tools/build_release

Basic Usage

Follow this example usage to run a simple Linux guest.

🤝 Community & Support


crosvm is an open-source project licensed under the BSD-3-Clause License.