mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-01 02:55:45 +00:00
vmm: Introduce new CPU option to set maximum physical bits
In order to let the user choose maximum address space size, this patch introduces a new option `max_phys_bits` to the `--cpus` parameter. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
parent
c97824ab76
commit
52ad78886c
10
src/main.rs
10
src/main.rs
@ -97,7 +97,8 @@ fn create_app<'a, 'b>(
|
|||||||
.long("cpus")
|
.long("cpus")
|
||||||
.help(
|
.help(
|
||||||
"boot=<boot_vcpus>,max=<max_vcpus>,\
|
"boot=<boot_vcpus>,max=<max_vcpus>,\
|
||||||
topology=<threads_per_core>:<cores_per_die>:<dies_per_package>:<packages>,kvm_hyperv=on|off",
|
topology=<threads_per_core>:<cores_per_die>:<dies_per_package>:<packages>,\
|
||||||
|
kvm_hyperv=on|off,max_phys_bits=<maximum_number_of_physical_bits>",
|
||||||
)
|
)
|
||||||
.default_value(&default_vcpus)
|
.default_value(&default_vcpus)
|
||||||
.group("vm-config"),
|
.group("vm-config"),
|
||||||
@ -133,8 +134,10 @@ fn create_app<'a, 'b>(
|
|||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("kernel")
|
Arg::with_name("kernel")
|
||||||
.long("kernel")
|
.long("kernel")
|
||||||
.help("Path to loaded kernel. This may be a kernel or firmware that supports a PVH \
|
.help(
|
||||||
entry point, a vmlinux ELF file or a Linux bzImage or achitecture equivalent")
|
"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)
|
.takes_value(true)
|
||||||
.group("vm-config"),
|
.group("vm-config"),
|
||||||
)
|
)
|
||||||
@ -545,6 +548,7 @@ mod unit_tests {
|
|||||||
max_vcpus: 1,
|
max_vcpus: 1,
|
||||||
topology: None,
|
topology: None,
|
||||||
kvm_hyperv: false,
|
kvm_hyperv: false,
|
||||||
|
max_phys_bits: None,
|
||||||
},
|
},
|
||||||
memory: MemoryConfig {
|
memory: MemoryConfig {
|
||||||
size: 536_870_912,
|
size: 536_870_912,
|
||||||
|
@ -469,6 +469,8 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
topology:
|
topology:
|
||||||
$ref: '#/components/schemas/CpuTopology'
|
$ref: '#/components/schemas/CpuTopology'
|
||||||
|
max_phys_bits:
|
||||||
|
type: integer
|
||||||
|
|
||||||
MemoryZoneConfig:
|
MemoryZoneConfig:
|
||||||
required:
|
required:
|
||||||
|
@ -320,6 +320,8 @@ pub struct CpusConfig {
|
|||||||
pub topology: Option<CpuTopology>,
|
pub topology: Option<CpuTopology>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub kvm_hyperv: bool,
|
pub kvm_hyperv: bool,
|
||||||
|
#[serde(default)]
|
||||||
|
pub max_phys_bits: Option<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CpusConfig {
|
impl CpusConfig {
|
||||||
@ -329,7 +331,8 @@ impl CpusConfig {
|
|||||||
.add("boot")
|
.add("boot")
|
||||||
.add("max")
|
.add("max")
|
||||||
.add("topology")
|
.add("topology")
|
||||||
.add("kvm_hyperv");
|
.add("kvm_hyperv")
|
||||||
|
.add("max_phys_bits");
|
||||||
parser.parse(cpus).map_err(Error::ParseCpus)?;
|
parser.parse(cpus).map_err(Error::ParseCpus)?;
|
||||||
|
|
||||||
let boot_vcpus: u8 = parser
|
let boot_vcpus: u8 = parser
|
||||||
@ -346,12 +349,16 @@ impl CpusConfig {
|
|||||||
.map_err(Error::ParseCpus)?
|
.map_err(Error::ParseCpus)?
|
||||||
.unwrap_or(Toggle(false))
|
.unwrap_or(Toggle(false))
|
||||||
.0;
|
.0;
|
||||||
|
let max_phys_bits = parser
|
||||||
|
.convert::<u8>("max_phys_bits")
|
||||||
|
.map_err(Error::ParseCpus)?;
|
||||||
|
|
||||||
Ok(CpusConfig {
|
Ok(CpusConfig {
|
||||||
boot_vcpus,
|
boot_vcpus,
|
||||||
max_vcpus,
|
max_vcpus,
|
||||||
topology,
|
topology,
|
||||||
kvm_hyperv,
|
kvm_hyperv,
|
||||||
|
max_phys_bits,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -363,6 +370,7 @@ impl Default for CpusConfig {
|
|||||||
max_vcpus: DEFAULT_VCPUS,
|
max_vcpus: DEFAULT_VCPUS,
|
||||||
topology: None,
|
topology: None,
|
||||||
kvm_hyperv: false,
|
kvm_hyperv: false,
|
||||||
|
max_phys_bits: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user