crosvm: gunyah: Support launching QTVMs

Qualcomm Trusted VM (QTVM) is a kind of protected VM which differentiates
itself from from the traditional protected VMs that have been supported by
crosvm in a few aspects like -
1. identified by reserved VM ID and PAS ID pair.
2. authenticated by the firmware/TZ and not pvmfw.
3. A QTVM Image is single loadable elf Image which contains kernel, dtb, initrd and the metadata
   needed for its authentication.
4. A QTVM can be backed by Contiguous Memory. Either the entire GuestMemory region could be
   contiguous or it could be a combination of both CMA and shm.

As the guest memory now can contain regions backed by CMA, make the necessary IOCTLs to map these
regions to the VM. Also, add a new IOCTL to set the authentication type to be
GUNYAH_QCOM_TRUSTED_VM_TYPE.

Bug: 399219478
Change-Id: I2e8a8f64db18602769421b667e69ca3a77c29426
6 files changed
tree: 9de8408a19a83c50fcbbd8ce7c8649aa42700bd2
  1. .cargo/
  2. .config/
  3. .devcontainer/
  4. .github/
  5. .vscode/
  6. aarch64/
  7. acpi_tables/
  8. android_audio/
  9. arch/
  10. argh_helpers/
  11. audio_streams_conformance_test/
  12. audio_util/
  13. base/
  14. base_tokio/
  15. bit_field/
  16. broker_ipc/
  17. common/
  18. cros_async/
  19. cros_fdt/
  20. cros_tracing/
  21. cros_tracing_types/
  22. crosvm_cli/
  23. crosvm_control/
  24. crosvm_plugin/
  25. cuttlefish/
  26. devices/
  27. disk/
  28. docs/
  29. e2e_tests/
  30. ext2/
  31. fuse/
  32. fuzz/
  33. gpu_display/
  34. hypervisor/
  35. infra/
  36. io_uring/
  37. jail/
  38. kernel_cmdline/
  39. kernel_loader/
  40. kvm/
  41. kvm_sys/
  42. libcras_stub/
  43. linux_input_sys/
  44. logo/
  45. media/
  46. metrics/
  47. metrics_events/
  48. net_sys/
  49. net_util/
  50. patches/
  51. perfetto/
  52. power_monitor/
  53. prebuilts/
  54. proto_build_tools/
  55. protos/
  56. resources/
  57. riscv64/
  58. rutabaga_gfx/
  59. sandbox/
  60. serde_keyvalue/
  61. snapshot/
  62. src/
  63. swap/
  64. system_api/
  65. tests/
  66. third_party/
  67. tools/
  68. tube_transporter/
  69. usb_sys/
  70. usb_util/
  71. vendor/
  72. vfio_sys/
  73. vhost/
  74. virtio_sys/
  75. vm_control/
  76. vm_memory/
  77. win_audio/
  78. win_util/
  79. x86_64/
  80. .dockerignore
  81. .envrc
  82. .gitattributes
  83. .gitignore
  84. .rustfmt.toml
  85. android-fork-stats.sh
  86. android-merge-1-setup.sh
  87. android-merge-2-cargo-embargo.sh
  88. Android.bp
  89. ARCHITECTURE.md
  90. Cargo.lock
  91. Cargo.toml
  92. cargo2android_defaults.bp
  93. cargo2android_module.bp.patch
  94. cargo_embargo.json
  95. CONTRIBUTING.md
  96. DIR_METADATA
  97. LICENSE
  98. METADATA
  99. mypy.ini
  100. OWNERS
  101. OWNERS.android
  102. OWNERS_COUNCIL
  103. PRESUBMIT.cfg
  104. PREUPLOAD.cfg
  105. pyproject.toml
  106. README.chromeos.md
  107. README.md
  108. rust-toolchain
  109. TEST_MAPPING
README.md

crosvm - The ChromeOS 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 ChromeOS 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 ChromeOS devices.

Logo