serial: allow multiple console=true devices

Currently crosvm does not allow users to give multiple serial devices
with `console=true`. However, actually Linux kernel can have multiple
`console=` options at the same time. Each serial hardware type can have
one console. Kernel logs will be copied to all consoles, and the inputs
will be taken from the last `console=` device. Even if multiple
`console=` options for the same device type are given, no error occurs
and the last one is effective. Therefore, crosvm doesn't have to
restrict console option.

Thus, this CL removes the restriction on multiple consoles of crosvm.

BUG=b:325362584
TEST=`crosvm run --serial type=file,path=serial,console=true --serial
type=stdout,hardware=virtio-console,console=true,stdin=true ...`. Both
file and stdout have console outputs

Change-Id: I911c9223704eb91f369b74e9cdcd901f115aa7eb
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5306814
Commit-Queue: Takaya Saeki <takayas@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2 files changed
tree: 7f21d32985f2a592673b2eeb360a30dbb3ee9f41
  1. .cargo/
  2. .config/
  3. .devcontainer/
  4. .github/
  5. .vscode/
  6. aarch64/
  7. acpi_tables/
  8. arch/
  9. argh_helpers/
  10. audio_streams_conformance_test/
  11. audio_util/
  12. base/
  13. bit_field/
  14. broker_ipc/
  15. common/
  16. cros_async/
  17. cros_fdt/
  18. cros_tracing/
  19. cros_tracing_types/
  20. crosvm_cli/
  21. crosvm_control/
  22. crosvm_plugin/
  23. devices/
  24. disk/
  25. docs/
  26. e2e_tests/
  27. fuse/
  28. fuzz/
  29. gpu_display/
  30. hypervisor/
  31. infra/
  32. io_uring/
  33. jail/
  34. kernel_cmdline/
  35. kernel_loader/
  36. kvm/
  37. kvm_sys/
  38. libcras_stub/
  39. linux_input_sys/
  40. logo/
  41. media/
  42. metrics/
  43. net_sys/
  44. net_util/
  45. perfetto/
  46. power_monitor/
  47. prebuilts/
  48. proto_build_tools/
  49. protos/
  50. resources/
  51. riscv64/
  52. rutabaga_gfx/
  53. sandbox/
  54. serde_keyvalue/
  55. src/
  56. swap/
  57. system_api/
  58. tests/
  59. third_party/
  60. tools/
  61. tube_transporter/
  62. usb_sys/
  63. usb_util/
  64. vendor/
  65. vfio_sys/
  66. vhost/
  67. virtio_sys/
  68. vm_control/
  69. vm_memory/
  70. win_audio/
  71. win_util/
  72. x86_64/
  73. .dockerignore
  74. .envrc
  75. .gitattributes
  76. .gitignore
  77. .gitmodules
  78. .rustfmt.toml
  79. ARCHITECTURE.md
  80. Cargo.lock
  81. Cargo.toml
  82. CONTRIBUTING.md
  83. DIR_METADATA
  84. LICENSE
  85. mypy.ini
  86. OWNERS
  87. OWNERS_COUNCIL
  88. PRESUBMIT.cfg
  89. pyproject.toml
  90. README.chromeos.md
  91. README.md
  92. rust-toolchain
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