diff --git a/src/main.rs b/src/main.rs index d02c94f6d..69ea90c6d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -97,7 +97,8 @@ fn create_app<'a, 'b>( .long("cpus") .help( "boot=,max=,\ - topology=:::,kvm_hyperv=on|off", + topology=:::,\ + kvm_hyperv=on|off,max_phys_bits=", ) .default_value(&default_vcpus) .group("vm-config"), @@ -133,8 +134,10 @@ fn create_app<'a, 'b>( .arg( Arg::with_name("kernel") .long("kernel") - .help("Path to loaded kernel. This may be a kernel or firmware that supports a PVH \ - entry point, a vmlinux ELF file or a Linux bzImage or achitecture equivalent") + .help( + "Path to loaded kernel. This may be a kernel or firmware that supports a PVH \ + entry point, a vmlinux ELF file or a Linux bzImage or achitecture equivalent", + ) .takes_value(true) .group("vm-config"), ) @@ -545,6 +548,7 @@ mod unit_tests { max_vcpus: 1, topology: None, kvm_hyperv: false, + max_phys_bits: None, }, memory: MemoryConfig { size: 536_870_912, diff --git a/vmm/src/api/openapi/cloud-hypervisor.yaml b/vmm/src/api/openapi/cloud-hypervisor.yaml index f7cbc1165..e609adc0a 100644 --- a/vmm/src/api/openapi/cloud-hypervisor.yaml +++ b/vmm/src/api/openapi/cloud-hypervisor.yaml @@ -469,6 +469,8 @@ components: type: integer topology: $ref: '#/components/schemas/CpuTopology' + max_phys_bits: + type: integer MemoryZoneConfig: required: diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 646e62263..bc5a5d3ef 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -320,6 +320,8 @@ pub struct CpusConfig { pub topology: Option, #[serde(default)] pub kvm_hyperv: bool, + #[serde(default)] + pub max_phys_bits: Option, } impl CpusConfig { @@ -329,7 +331,8 @@ impl CpusConfig { .add("boot") .add("max") .add("topology") - .add("kvm_hyperv"); + .add("kvm_hyperv") + .add("max_phys_bits"); parser.parse(cpus).map_err(Error::ParseCpus)?; let boot_vcpus: u8 = parser @@ -346,12 +349,16 @@ impl CpusConfig { .map_err(Error::ParseCpus)? .unwrap_or(Toggle(false)) .0; + let max_phys_bits = parser + .convert::("max_phys_bits") + .map_err(Error::ParseCpus)?; Ok(CpusConfig { boot_vcpus, max_vcpus, topology, kvm_hyperv, + max_phys_bits, }) } } @@ -363,6 +370,7 @@ impl Default for CpusConfig { max_vcpus: DEFAULT_VCPUS, topology: None, kvm_hyperv: false, + max_phys_bits: None, } } }