From d692dfb8e355a931c957d29bd79b656e6961ec8f Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Thu, 6 Oct 2022 13:19:47 +0100 Subject: [PATCH] vmm: Move `impl Default for ...` to vm_config.rs This is consistent when considering that some structs have a `#[derive(Default)`] so it makes sense for the default implementations to be in the same location. Signed-off-by: Rob Bradford --- vmm/src/config.rs | 126 ------------------------------------------ vmm/src/vm_config.rs | 127 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 126 deletions(-) diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 4381b599c..ce4c0e0b3 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -18,11 +18,6 @@ use std::str::FromStr; use thiserror::Error; use virtio_devices::{RateLimiterConfig, TokenBucketConfig}; -pub const DEFAULT_VCPUS: u8 = 1; -pub const DEFAULT_MEMORY_MB: u64 = 512; - -pub const DEFAULT_RNG_SOURCE: &str = "/dev/urandom"; - const MAX_NUM_PCI_SEGMENTS: u16 = 16; /// Errors associated with VM configuration parameters. @@ -453,12 +448,6 @@ impl<'a> VmParams<'a> { } } -impl Default for HotplugMethod { - fn default() -> Self { - HotplugMethod::Acpi - } -} - #[derive(Debug)] pub enum ParseHotplugMethodError { InvalidValue(String), @@ -585,20 +574,6 @@ impl CpusConfig { } } -impl Default for CpusConfig { - fn default() -> Self { - CpusConfig { - boot_vcpus: DEFAULT_VCPUS, - max_vcpus: DEFAULT_VCPUS, - topology: None, - kvm_hyperv: false, - max_phys_bits: DEFAULT_MAX_PHYS_BITS, - affinity: None, - features: CpuFeatures::default(), - } - } -} - impl PlatformConfig { pub fn parse(platform: &str) -> Result { let mut parser = OptionParser::new(); @@ -664,20 +639,6 @@ impl PlatformConfig { } } -impl Default for PlatformConfig { - fn default() -> Self { - PlatformConfig { - num_pci_segments: DEFAULT_NUM_PCI_SEGMENTS, - iommu_segments: None, - serial_number: None, - uuid: None, - oem_strings: None, - #[cfg(feature = "tdx")] - tdx: false, - } - } -} - impl MemoryConfig { pub fn parse(memory: &str, memory_zones: Option>) -> Result { let mut parser = OptionParser::new(); @@ -843,23 +804,6 @@ impl MemoryConfig { } } -impl Default for MemoryConfig { - fn default() -> Self { - MemoryConfig { - size: DEFAULT_MEMORY_MB << 20, - mergeable: false, - hotplug_method: HotplugMethod::Acpi, - hotplug_size: None, - hotplugged_size: None, - shared: false, - hugepages: false, - hugepage_size: None, - prefault: false, - zones: None, - } - } -} - impl CmdlineConfig { pub fn parse(cmdline: Option<&str>) -> Result { let args = cmdline @@ -870,25 +814,6 @@ impl CmdlineConfig { } } -impl Default for DiskConfig { - fn default() -> Self { - Self { - path: None, - readonly: false, - direct: false, - iommu: false, - num_queues: default_diskconfig_num_queues(), - queue_size: default_diskconfig_queue_size(), - vhost_user: false, - vhost_socket: None, - id: None, - disable_io_uring: false, - rate_limiter_config: None, - pci_segment: 0, - } - } -} - impl DiskConfig { pub const SYNTAX: &'static str = "Disk parameters \ \"path=,readonly=on|off,direct=on|off,iommu=on|off,\ @@ -1052,12 +977,6 @@ impl DiskConfig { } } -impl Default for VhostMode { - fn default() -> Self { - VhostMode::Client - } -} - #[derive(Debug)] pub enum ParseVhostModeError { InvalidValue(String), @@ -1075,29 +994,6 @@ impl FromStr for VhostMode { } } -impl Default for NetConfig { - fn default() -> Self { - Self { - tap: default_netconfig_tap(), - ip: default_netconfig_ip(), - mask: default_netconfig_mask(), - mac: default_netconfig_mac(), - host_mac: None, - mtu: None, - iommu: false, - num_queues: default_netconfig_num_queues(), - queue_size: default_netconfig_queue_size(), - vhost_user: false, - vhost_socket: None, - vhost_mode: VhostMode::Client, - id: None, - fds: None, - rate_limiter_config: None, - pci_segment: 0, - } - } -} - impl NetConfig { pub const SYNTAX: &'static str = "Network parameters \ \"tap=,ip=,mask=,mac=,fd=,iommu=on|off,\ @@ -1320,15 +1216,6 @@ impl RngConfig { } } -impl Default for RngConfig { - fn default() -> Self { - RngConfig { - src: PathBuf::from(DEFAULT_RNG_SOURCE), - iommu: false, - } - } -} - impl BalloonConfig { pub const SYNTAX: &'static str = "Balloon parameters \"size=,deflate_on_oom=on|off,\ @@ -1367,19 +1254,6 @@ impl BalloonConfig { } } -impl Default for FsConfig { - fn default() -> Self { - Self { - tag: "".to_owned(), - socket: PathBuf::new(), - num_queues: default_fsconfig_num_queues(), - queue_size: default_fsconfig_queue_size(), - id: None, - pci_segment: 0, - } - } -} - impl FsConfig { pub const SYNTAX: &'static str = "virtio-fs parameters \ \"tag=,socket=,num_queues=,\ diff --git a/vmm/src/vm_config.rs b/vmm/src/vm_config.rs index 9cb1c8e3d..4704cd06a 100644 --- a/vmm/src/vm_config.rs +++ b/vmm/src/vm_config.rs @@ -53,6 +53,22 @@ pub struct CpusConfig { pub features: CpuFeatures, } +pub const DEFAULT_VCPUS: u8 = 1; + +impl Default for CpusConfig { + fn default() -> Self { + CpusConfig { + boot_vcpus: DEFAULT_VCPUS, + max_vcpus: DEFAULT_VCPUS, + topology: None, + kvm_hyperv: false, + max_phys_bits: DEFAULT_MAX_PHYS_BITS, + affinity: None, + features: CpuFeatures::default(), + } + } +} + pub const DEFAULT_NUM_PCI_SEGMENTS: u16 = 1; pub fn default_platformconfig_num_pci_segments() -> u16 { DEFAULT_NUM_PCI_SEGMENTS @@ -75,6 +91,20 @@ pub struct PlatformConfig { pub tdx: bool, } +impl Default for PlatformConfig { + fn default() -> Self { + PlatformConfig { + num_pci_segments: DEFAULT_NUM_PCI_SEGMENTS, + iommu_segments: None, + serial_number: None, + uuid: None, + oem_strings: None, + #[cfg(feature = "tdx")] + tdx: false, + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct MemoryZoneConfig { pub id: String, @@ -103,6 +133,12 @@ pub enum HotplugMethod { VirtioMem, } +impl Default for HotplugMethod { + fn default() -> Self { + HotplugMethod::Acpi + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct MemoryConfig { pub size: u64, @@ -126,12 +162,37 @@ pub struct MemoryConfig { pub zones: Option>, } +pub const DEFAULT_MEMORY_MB: u64 = 512; + +impl Default for MemoryConfig { + fn default() -> Self { + MemoryConfig { + size: DEFAULT_MEMORY_MB << 20, + mergeable: false, + hotplug_method: HotplugMethod::Acpi, + hotplug_size: None, + hotplugged_size: None, + shared: false, + hugepages: false, + hugepage_size: None, + prefault: false, + zones: None, + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub enum VhostMode { Client, Server, } +impl Default for VhostMode { + fn default() -> Self { + VhostMode::Client + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct KernelConfig { pub path: PathBuf, @@ -185,6 +246,25 @@ pub fn default_diskconfig_queue_size() -> u16 { DEFAULT_QUEUE_SIZE_VUBLK } +impl Default for DiskConfig { + fn default() -> Self { + Self { + path: None, + readonly: false, + direct: false, + iommu: false, + num_queues: default_diskconfig_num_queues(), + queue_size: default_diskconfig_queue_size(), + vhost_user: false, + vhost_socket: None, + id: None, + disable_io_uring: false, + rate_limiter_config: None, + pci_segment: 0, + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct NetConfig { #[serde(default = "default_netconfig_tap")] @@ -246,6 +326,29 @@ pub fn default_netconfig_queue_size() -> u16 { DEFAULT_QUEUE_SIZE_VUNET } +impl Default for NetConfig { + fn default() -> Self { + Self { + tap: default_netconfig_tap(), + ip: default_netconfig_ip(), + mask: default_netconfig_mask(), + mac: default_netconfig_mac(), + host_mac: None, + mtu: None, + iommu: false, + num_queues: default_netconfig_num_queues(), + queue_size: default_netconfig_queue_size(), + vhost_user: false, + vhost_socket: None, + vhost_mode: VhostMode::Client, + id: None, + fds: None, + rate_limiter_config: None, + pci_segment: 0, + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct RngConfig { pub src: PathBuf, @@ -253,6 +356,17 @@ pub struct RngConfig { pub iommu: bool, } +pub const DEFAULT_RNG_SOURCE: &str = "/dev/urandom"; + +impl Default for RngConfig { + fn default() -> Self { + RngConfig { + src: PathBuf::from(DEFAULT_RNG_SOURCE), + iommu: false, + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct BalloonConfig { pub size: u64, @@ -286,6 +400,19 @@ pub fn default_fsconfig_queue_size() -> u16 { 1024 } +impl Default for FsConfig { + fn default() -> Self { + Self { + tag: "".to_owned(), + socket: PathBuf::new(), + num_queues: default_fsconfig_num_queues(), + queue_size: default_fsconfig_queue_size(), + id: None, + pci_segment: 0, + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize, Default)] pub struct PmemConfig { pub file: PathBuf,