diff options
author | A. Cody Schuffelen <schuffelen@google.com> | 2024-05-17 12:52:52 -0700 |
---|---|---|
committer | A. Cody Schuffelen <schuffelen@google.com> | 2024-06-11 16:09:42 -0700 |
commit | ad10a9a914e7a8eb3b2a3c30878a4d6be0534133 (patch) | |
tree | f0c93bc788151c2fcc027b0da6b299e3f6120af2 /host | |
parent | ccec9ca686124718aa48570de37fb7b80fa89d88 (diff) | |
download | cuttlefish-ad10a9a914e7a8eb3b2a3c30878a4d6be0534133.tar.gz |
Use a multiport console in qemu_manager.cpp
Change-Id: I431bf89f455d99d4457d9a33f30663c7ac2c7be8
Test: Run with u-boot change for multiport aosp/3102524
Diffstat (limited to 'host')
-rw-r--r-- | host/libs/vm_manager/qemu_manager.cpp | 46 |
1 files changed, 14 insertions, 32 deletions
diff --git a/host/libs/vm_manager/qemu_manager.cpp b/host/libs/vm_manager/qemu_manager.cpp index 3f4abac14..1bbcc331b 100644 --- a/host/libs/vm_manager/qemu_manager.cpp +++ b/host/libs/vm_manager/qemu_manager.cpp @@ -211,7 +211,8 @@ QemuManager::ConfigureBootDevices( case Arch::X86_64: { // QEMU has additional PCI devices for an ISA bridge and PIIX4 // virtio_gpu precedes the first console or disk - int pci_offset = 2 + num_gpu - VmManager::kDefaultNumHvcs; + // TODO(schuffelen): Simplify this logic when crosvm uses multiport + int pci_offset = 3 + num_gpu - VmManager::kDefaultNumHvcs; return ConfigureMultipleBootDevices("pci0000:00/0000:00:", pci_offset, num_disks); } @@ -249,12 +250,8 @@ Result<std::vector<MonitorCommand>> QemuManager::StartCommands( qemu_cmd.AddParameter("-chardev"); qemu_cmd.AddParameter("null,id=hvc", hvc_num); qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter( - "virtio-serial-pci-non-transitional,max_ports=1,id=virtio-serial", - hvc_num, ",bus=hvc-bridge,addr=", fmt::format("{:0>2x}", hvc_num + 1)); - qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter("virtconsole,bus=virtio-serial", hvc_num, - ".0,chardev=hvc", hvc_num); + qemu_cmd.AddParameter("virtconsole,bus=virtio-serial.0,chardev=hvc", + hvc_num); hvc_num++; }; auto add_serial_sink = [&qemu_cmd, &serial_num]() { @@ -286,36 +283,24 @@ Result<std::vector<MonitorCommand>> QemuManager::StartCommands( qemu_cmd.AddParameter("file,id=hvc", hvc_num, ",path=", output, ",append=on"); qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter( - "virtio-serial-pci-non-transitional,max_ports=1,id=virtio-serial", - hvc_num, ",bus=hvc-bridge,addr=", fmt::format("{:0>2x}", hvc_num + 1)); - qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter("virtconsole,bus=virtio-serial", hvc_num, - ".0,chardev=hvc", hvc_num); + qemu_cmd.AddParameter("virtconsole,bus=virtio-serial.0,chardev=hvc", + hvc_num); hvc_num++; }; auto add_hvc = [&qemu_cmd, &hvc_num](const std::string& prefix) { qemu_cmd.AddParameter("-chardev"); qemu_cmd.AddParameter("pipe,id=hvc", hvc_num, ",path=", prefix); qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter( - "virtio-serial-pci-non-transitional,max_ports=1,id=virtio-serial", - hvc_num, ",bus=hvc-bridge,addr=", fmt::format("{:0>2x}", hvc_num + 1)); - qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter("virtconsole,bus=virtio-serial", hvc_num, - ".0,chardev=hvc", hvc_num); + qemu_cmd.AddParameter("virtconsole,bus=virtio-serial.0,chardev=hvc", + hvc_num); hvc_num++; }; auto add_hvc_serial = [&qemu_cmd, &hvc_num](const std::string& prefix) { qemu_cmd.AddParameter("-chardev"); qemu_cmd.AddParameter("serial,id=hvc", hvc_num, ",path=", prefix); qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter( - "virtio-serial-pci-non-transitional,max_ports=1,id=virtio-serial", - hvc_num, ",bus=hvc-bridge,addr=", fmt::format("{:0>2x}", hvc_num + 1)); - qemu_cmd.AddParameter("-device"); - qemu_cmd.AddParameter("virtconsole,bus=virtio-serial", hvc_num, - ".0,chardev=hvc", hvc_num); + qemu_cmd.AddParameter("virtconsole,bus=virtio-serial.0,chardev=hvc", + hvc_num); hvc_num++; }; @@ -440,13 +425,6 @@ Result<std::vector<MonitorCommand>> QemuManager::StartCommands( qemu_cmd.AddParameter("none"); } - qemu_cmd.AddParameter("-device"); - if (is_x86) { - qemu_cmd.AddParameter("pcie-pci-bridge,id=hvc-bridge,addr=01.2"); - } else { - qemu_cmd.AddParameter("pcie-pci-bridge,id=hvc-bridge"); - } - if (instance.hwcomposer() != kHwComposerNone) { auto display_configs = instance.display_configs(); CF_EXPECT(display_configs.size() >= 1); @@ -497,6 +475,10 @@ Result<std::vector<MonitorCommand>> QemuManager::StartCommands( } } + qemu_cmd.AddParameter("-device"); + qemu_cmd.AddParameter( + "virtio-serial-pci-non-transitional,max_ports=31,id=virtio-serial"); + // /dev/hvc0 = kernel console // If kernel log is enabled, the virtio-console port will be specified as // a true console for Linux, and kernel messages will be printed there. |