1 // Copyright 2021 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 use vmm_vhost::message::VhostUserProtocolFeatures; 6 7 use crate::virtio::console::QUEUE_SIZE; 8 use crate::virtio::vhost::user::vmm::Connection; 9 use crate::virtio::vhost::user::vmm::QueueSizes; 10 use crate::virtio::vhost::user::vmm::Result; 11 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice; 12 use crate::virtio::DeviceType; 13 14 impl VhostUserVirtioDevice { new_console( base_features: u64, connection: Connection, ) -> Result<VhostUserVirtioDevice>15 pub fn new_console( 16 base_features: u64, 17 connection: Connection, 18 ) -> Result<VhostUserVirtioDevice> { 19 // VIRTIO_CONSOLE_F_MULTIPORT is not supported, so we just implement port 0 (receiveq, 20 // transmitq) 21 let queue_sizes = QueueSizes::AskDevice { 22 queue_size: QUEUE_SIZE, 23 default_queues: 2, 24 }; 25 let max_queues = 2; 26 27 let allow_features = 0; 28 29 let allow_protocol_features = VhostUserProtocolFeatures::CONFIG; 30 31 VhostUserVirtioDevice::new( 32 connection, 33 DeviceType::Console, 34 queue_sizes, 35 max_queues, 36 allow_features, 37 allow_protocol_features, 38 base_features, 39 None, 40 false, 41 ) 42 } 43 } 44