crosvm/linux: stop using Config in device_helpers

The device and jail creation helpers should be reusable in other
contexts than `crosvm run` - e.g. they would be helpful to run a list of
sandboxed vhost-user devices without a VMM. However the `Config`
structure currently represents an entire VM config, which makes these
helpers unusable outside of `crosvm run`, and also expose individual
devices to much more configuration data than they need.

Fix this by only passing the needed configuration data from the `Config`
struct, which for most devices consists of the protection type and jail
configuration.

BUG=b:217480043
TEST=cargo build

Change-Id: If1f6dcb0d6d82a4e73d25a45b367da2364642e6f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3546582
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2 files changed
tree: dcbc50b9901a960b9137786f43785d9c086f5936
  1. .cargo/
  2. .devcontainer/
  3. .github/
  4. aarch64/
  5. acpi_tables/
  6. arch/
  7. argh_helpers/
  8. base/
  9. bin/
  10. bit_field/
  11. broker_ipc/
  12. ci/
  13. common/
  14. cros_async/
  15. crosvm-fuzz/
  16. crosvm_control/
  17. crosvm_plugin/
  18. devices/
  19. disk/
  20. docs/
  21. fuse/
  22. gpu_display/
  23. hypervisor/
  24. infra/
  25. integration_tests/
  26. io_uring/
  27. kernel_cmdline/
  28. kernel_loader/
  29. kvm/
  30. kvm_sys/
  31. libcras_stub/
  32. linux_input_sys/
  33. logo/
  34. media/
  35. metrics/
  36. net_sys/
  37. net_util/
  38. power_monitor/
  39. protos/
  40. qcow_utils/
  41. resources/
  42. rutabaga_gfx/
  43. seccomp/
  44. serde_keyvalue/
  45. src/
  46. system_api_stub/
  47. tests/
  48. third_party/
  49. tools/
  50. tpm2/
  51. tpm2-sys/
  52. tracing/
  53. tube_transporter/
  54. usb_sys/
  55. usb_util/
  56. vfio_sys/
  57. vhost/
  58. virtio_sys/
  59. vm_control/
  60. vm_memory/
  61. win_audio/
  62. win_util/
  63. x86_64/
  64. .dockerignore
  65. .gitignore
  66. .gitmodules
  67. .rustfmt.toml
  68. ARCHITECTURE.md
  69. Cargo.toml
  70. CONTRIBUTING.md
  71. LICENSE
  72. navbar.md
  73. OWNERS
  74. PRESUBMIT.cfg
  75. README.chromeos.md
  76. README.md
  77. run_tests
  78. rust-toolchain
  79. setup_cros_cargo.sh
  80. test_all
  81. unblocked_terms.txt
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