• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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::wl::QUEUE_SIZE;
8 use crate::virtio::device_constants::wl::QUEUE_SIZES;
9 use crate::virtio::device_constants::wl::VIRTIO_WL_F_SEND_FENCES;
10 use crate::virtio::device_constants::wl::VIRTIO_WL_F_TRANS_FLAGS;
11 use crate::virtio::device_constants::wl::VIRTIO_WL_F_USE_SHMEM;
12 use crate::virtio::vhost::user::vmm::Connection;
13 use crate::virtio::vhost::user::vmm::QueueSizes;
14 use crate::virtio::vhost::user::vmm::Result;
15 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice;
16 use crate::virtio::DeviceType;
17 
18 impl VhostUserVirtioDevice {
new_wl(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice>19     pub fn new_wl(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice> {
20         let queue_sizes = QueueSizes::AskDevice {
21             queue_size: QUEUE_SIZE,
22             default_queues: QUEUE_SIZES.len(),
23         };
24         let max_queues = QUEUE_SIZES.len();
25 
26         let allow_features = 1 << VIRTIO_WL_F_TRANS_FLAGS
27             | 1 << VIRTIO_WL_F_SEND_FENCES
28             | 1 << VIRTIO_WL_F_USE_SHMEM;
29 
30         let allow_protocol_features = VhostUserProtocolFeatures::MQ
31             | VhostUserProtocolFeatures::CONFIG
32             | VhostUserProtocolFeatures::SLAVE_REQ
33             | VhostUserProtocolFeatures::SHARED_MEMORY_REGIONS;
34 
35         VhostUserVirtioDevice::new(
36             connection,
37             DeviceType::Wl,
38             queue_sizes,
39             max_queues,
40             allow_features,
41             allow_protocol_features,
42             base_features,
43             None,
44             false,
45         )
46     }
47 }
48