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::device_constants::vsock::QUEUE_SIZE; 8 use crate::virtio::device_constants::vsock::QUEUE_SIZES; 9 use crate::virtio::vhost::user::vmm::Connection; 10 use crate::virtio::vhost::user::vmm::QueueSizes; 11 use crate::virtio::vhost::user::vmm::Result; 12 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice; 13 use crate::virtio::DeviceType; 14 15 impl VhostUserVirtioDevice { new_vsock(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice>16 pub fn new_vsock(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice> { 17 let queue_sizes = QueueSizes::AskDevice { 18 queue_size: QUEUE_SIZE, 19 default_queues: QUEUE_SIZES.len(), 20 }; 21 let max_queues = QUEUE_SIZES.len(); 22 23 let allow_features = 0; 24 25 let allow_protocol_features = 26 VhostUserProtocolFeatures::MQ | VhostUserProtocolFeatures::CONFIG; 27 28 VhostUserVirtioDevice::new( 29 connection, 30 DeviceType::Vsock, 31 queue_sizes, 32 max_queues, 33 allow_features, 34 allow_protocol_features, 35 base_features, 36 None, 37 false, 38 ) 39 } 40 } 41