cros_async: add a command-line option to switch Executor backend

Currently Executor internally decides which backend to use, such as
FdExecutor vs URingExecutor on Linux. This makes it hard to test both
FdExecutor and URingExecutor. In addition, we came across the uring
instability issue (b:238965061), thus we need a way to explicitly switch
the polling backend to mitigate the issue.

This commit adds a command-line option to explicitly configure the
Executor's polling backend.

BUG=b:239154263
TEST=confirmed crosvm --async-executor correcly switchs the Executor for
`crosvm --async-executor epoll (or uring) device gpu --socket
/tmp/gpu.sock` command. Used additional debug log to tell which executor
is running, which is not commited

Change-Id: Ib310d9edc8ab6005f1b7f210b03668b9a45fa73f
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3811014
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Takaya Saeki <takayas@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Noah Gold <nkgold@google.com>
11 files changed
tree: d39f909cd2bac318b366836b3dc5e4083f8dadbe
  1. .cargo/
  2. .devcontainer/
  3. .github/
  4. .vscode/
  5. aarch64/
  6. acpi_tables/
  7. anti_tamper/
  8. arch/
  9. argh_helpers/
  10. base/
  11. bit_field/
  12. broker_ipc/
  13. common/
  14. crash_report/
  15. cros_async/
  16. crosvm-fuzz/
  17. crosvm_control/
  18. crosvm_plugin/
  19. devices/
  20. disk/
  21. docs/
  22. fuse/
  23. gpu_display/
  24. hypervisor/
  25. infra/
  26. integration_tests/
  27. io_uring/
  28. kernel_cmdline/
  29. kernel_loader/
  30. kvm/
  31. kvm_sys/
  32. libcras_stub/
  33. linux_input_sys/
  34. logo/
  35. media/
  36. metrics/
  37. net_sys/
  38. net_util/
  39. power_monitor/
  40. protos/
  41. qcow_utils/
  42. resources/
  43. rutabaga_gfx/
  44. seccomp/
  45. serde_keyvalue/
  46. src/
  47. system_api/
  48. tests/
  49. third_party/
  50. tools/
  51. tpm2/
  52. tpm2-sys/
  53. tracing/
  54. tube_transporter/
  55. usb_sys/
  56. usb_util/
  57. vfio_sys/
  58. vhost/
  59. virtio_sys/
  60. vm_control/
  61. vm_memory/
  62. win_audio/
  63. win_util/
  64. x86_64/
  65. .dockerignore
  66. .gitignore
  67. .gitmodules
  68. .rustfmt.toml
  69. ARCHITECTURE.md
  70. build.rs
  71. Cargo.lock
  72. Cargo.toml
  73. CONTRIBUTING.md
  74. DIR_METADATA
  75. LICENSE
  76. mypy.ini
  77. OWNERS
  78. PRESUBMIT.cfg
  79. pyproject.toml
  80. README.chromeos.md
  81. README.md
  82. rust-toolchain
README.md

crosvm - The Chrome OS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linux’s 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 doesn’t 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