mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-04 04:25:45 +00:00
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 <robert.bradford@intel.com>
This commit is contained in:
parent
7ad58457b0
commit
d692dfb8e3
@ -18,11 +18,6 @@ use std::str::FromStr;
|
|||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use virtio_devices::{RateLimiterConfig, TokenBucketConfig};
|
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;
|
const MAX_NUM_PCI_SEGMENTS: u16 = 16;
|
||||||
|
|
||||||
/// Errors associated with VM configuration parameters.
|
/// 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)]
|
#[derive(Debug)]
|
||||||
pub enum ParseHotplugMethodError {
|
pub enum ParseHotplugMethodError {
|
||||||
InvalidValue(String),
|
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 {
|
impl PlatformConfig {
|
||||||
pub fn parse(platform: &str) -> Result<Self> {
|
pub fn parse(platform: &str) -> Result<Self> {
|
||||||
let mut parser = OptionParser::new();
|
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 {
|
impl MemoryConfig {
|
||||||
pub fn parse(memory: &str, memory_zones: Option<Vec<&str>>) -> Result<Self> {
|
pub fn parse(memory: &str, memory_zones: Option<Vec<&str>>) -> Result<Self> {
|
||||||
let mut parser = OptionParser::new();
|
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 {
|
impl CmdlineConfig {
|
||||||
pub fn parse(cmdline: Option<&str>) -> Result<Self> {
|
pub fn parse(cmdline: Option<&str>) -> Result<Self> {
|
||||||
let args = cmdline
|
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 {
|
impl DiskConfig {
|
||||||
pub const SYNTAX: &'static str = "Disk parameters \
|
pub const SYNTAX: &'static str = "Disk parameters \
|
||||||
\"path=<disk_image_path>,readonly=on|off,direct=on|off,iommu=on|off,\
|
\"path=<disk_image_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)]
|
#[derive(Debug)]
|
||||||
pub enum ParseVhostModeError {
|
pub enum ParseVhostModeError {
|
||||||
InvalidValue(String),
|
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 {
|
impl NetConfig {
|
||||||
pub const SYNTAX: &'static str = "Network parameters \
|
pub const SYNTAX: &'static str = "Network parameters \
|
||||||
\"tap=<if_name>,ip=<ip_addr>,mask=<net_mask>,mac=<mac_addr>,fd=<fd1,fd2...>,iommu=on|off,\
|
\"tap=<if_name>,ip=<ip_addr>,mask=<net_mask>,mac=<mac_addr>,fd=<fd1,fd2...>,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 {
|
impl BalloonConfig {
|
||||||
pub const SYNTAX: &'static str =
|
pub const SYNTAX: &'static str =
|
||||||
"Balloon parameters \"size=<balloon_size>,deflate_on_oom=on|off,\
|
"Balloon parameters \"size=<balloon_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 {
|
impl FsConfig {
|
||||||
pub const SYNTAX: &'static str = "virtio-fs parameters \
|
pub const SYNTAX: &'static str = "virtio-fs parameters \
|
||||||
\"tag=<tag_name>,socket=<socket_path>,num_queues=<number_of_queues>,\
|
\"tag=<tag_name>,socket=<socket_path>,num_queues=<number_of_queues>,\
|
||||||
|
@ -53,6 +53,22 @@ pub struct CpusConfig {
|
|||||||
pub features: CpuFeatures,
|
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 const DEFAULT_NUM_PCI_SEGMENTS: u16 = 1;
|
||||||
pub fn default_platformconfig_num_pci_segments() -> u16 {
|
pub fn default_platformconfig_num_pci_segments() -> u16 {
|
||||||
DEFAULT_NUM_PCI_SEGMENTS
|
DEFAULT_NUM_PCI_SEGMENTS
|
||||||
@ -75,6 +91,20 @@ pub struct PlatformConfig {
|
|||||||
pub tdx: bool,
|
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)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct MemoryZoneConfig {
|
pub struct MemoryZoneConfig {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
@ -103,6 +133,12 @@ pub enum HotplugMethod {
|
|||||||
VirtioMem,
|
VirtioMem,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for HotplugMethod {
|
||||||
|
fn default() -> Self {
|
||||||
|
HotplugMethod::Acpi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct MemoryConfig {
|
pub struct MemoryConfig {
|
||||||
pub size: u64,
|
pub size: u64,
|
||||||
@ -126,12 +162,37 @@ pub struct MemoryConfig {
|
|||||||
pub zones: Option<Vec<MemoryZoneConfig>>,
|
pub zones: Option<Vec<MemoryZoneConfig>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub enum VhostMode {
|
pub enum VhostMode {
|
||||||
Client,
|
Client,
|
||||||
Server,
|
Server,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for VhostMode {
|
||||||
|
fn default() -> Self {
|
||||||
|
VhostMode::Client
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct KernelConfig {
|
pub struct KernelConfig {
|
||||||
pub path: PathBuf,
|
pub path: PathBuf,
|
||||||
@ -185,6 +246,25 @@ pub fn default_diskconfig_queue_size() -> u16 {
|
|||||||
DEFAULT_QUEUE_SIZE_VUBLK
|
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)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct NetConfig {
|
pub struct NetConfig {
|
||||||
#[serde(default = "default_netconfig_tap")]
|
#[serde(default = "default_netconfig_tap")]
|
||||||
@ -246,6 +326,29 @@ pub fn default_netconfig_queue_size() -> u16 {
|
|||||||
DEFAULT_QUEUE_SIZE_VUNET
|
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)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct RngConfig {
|
pub struct RngConfig {
|
||||||
pub src: PathBuf,
|
pub src: PathBuf,
|
||||||
@ -253,6 +356,17 @@ pub struct RngConfig {
|
|||||||
pub iommu: bool,
|
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)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct BalloonConfig {
|
pub struct BalloonConfig {
|
||||||
pub size: u64,
|
pub size: u64,
|
||||||
@ -286,6 +400,19 @@ pub fn default_fsconfig_queue_size() -> u16 {
|
|||||||
1024
|
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)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize, Default)]
|
||||||
pub struct PmemConfig {
|
pub struct PmemConfig {
|
||||||
pub file: PathBuf,
|
pub file: PathBuf,
|
||||||
|
Loading…
Reference in New Issue
Block a user